alpha · v0.1

morphorm

Type-safe, schema-driven forms for React. Define once, render everywhere — zero boilerplate.

$bun add morphorm
why morphorm

Built different.

schema-first

Zero boilerplate

Define a Zod schema. Morphorm derives your fields, layout, and validation — automatically.

reactive

Watch system

Fields subscribe to other fields. Labels, placeholders, disabled — all update live without wiring.

composable

Bring your own

Override any field with your own component. Full access to field state via useFieldContext.

grid layout

12-col grid

Responsive 12-column grid built in. Each field has a size prop. Fill spacers break rows.

live demo

Try it right now

live-playground.tsx
interactive
schema fields
zod constraints
name.min
field sizes (12-col grid)
name
email
subscribe
generated code
import { Form } from "morphorm"
import * as z from "zod"

const schema = z.object({
  name: z.string().min(2),
  email: z.string().email(),
  subscribe: z.boolean(),
})

export function MyForm() {
  return (
    <Form
      schema={schema}
      showSubmit
      fields={[
        { name: "name", type: "text", size: 6 },
        { name: "email", type: "text", size: 6 },
        { name: "subscribe", type: "checkbox", size: 12 },
      ]}
    />
  )
}
live preview
get started

As simple as it looks

form.tsx
tsx
import { Form } from "morphorm"
import * as z from "zod"

const schema = z.object({
  name: z.string().min(1),
  email: z.string().email(),
  notify: z.boolean(),
})

export function MyForm() {
  return (
    <Form
      schema={schema}
      showSubmit
    />
  )
}
schema valid
morphorm