v0.14.0 — what's new

A type-safe, schema-driven form library for Vue 3 and Nuxt with first-class Zod support.

Point a Zod schema at useForm — get fully-typed values, errors, validation, persistence, and undo/redo back.

  • MIT licensed
  • Vue 3 · Nuxt 3 / 4
  • Zod 3 / 4
  • Tree-shakable ESM

Why Attaform

Forms shouldn't fight you.

One schema. Inferred types end-to-end. Validation that runs where you want it. Persistence built in. Undo/redo when you need it. Everything else, out of your way.

Schema-driven types

Every path, value, and error is inferred from your Zod schema. No `any`, no manual type plumbing.

Live validation

Per-field validation on change, blur, or submit. Synchronous by default; async refinements await before submit dispatches.

Field arrays + undo/redo

Typed `append` / `insert` / `remove` / `swap`, plus a bounded undo stack you can opt into per-form.

SSR + persistence

Nuxt round-trips payload automatically. Per-field opt-in drafts to localStorage / sessionStorage / IndexedDB.

Live editor

A schema is the form.

Edit the schema, edit the template, watch it run. No backend, no build step — every change re-renders live. Inputs stay native — v-register is a Vue directive, not a wrapper component, so there's no field-component overhead between your <input> and the form.

Open full playground

Get started in 30 seconds.

One install, one schema, one composable. Read the quick start or jump straight into the playground.