🧩
Schema-driven
Define your form once with Zod V4. UniForm introspects the schema and renders fully typed inputs, labels, validation, and coercions automatically.
🎨
Headless
Zero CSS, zero opinions. Bring your own design system, Tailwind classes, or any component library — UniForm only provides structure.
⚙️
Fully customizable
Swap any component, slot, wrapper, or field at every level. Per-instance, per-factory, or per-field — total control with a clean API.
Install in seconds
npm install @uniform-ts/core react react-hook-form zod
Example
Define a Zod schema, call createForm, render <AutoForm>. That's it.
const schema = z.object({
name: z.string().min(1, 'Name is required'),
email: z.string().email('Invalid email'),
role: z.enum(['user', 'admin', 'editor']),
subscribe: z.boolean(),
})
const myForm = createForm(schema)
function App() {
return (
<div style={{ fontFamily: 'system-ui', maxWidth: 480 }}>
<AutoForm
form={myForm}
defaultValues={{ role: 'user', subscribe: false }}
onSubmit={(values) => { /* your submit logic */ }}
/>
</div>
)
}
render(<App />)