Vue Forms
without the friction.
Headless, composable Vue 3 forms. Bring your own schema — Zod, Valibot, ArkType, or anything Standard Schema compliant. You own every pixel of your UI.
// why notform
Built for how you actually write Vue.
No wrappers. No adapter boilerplate. Composables and renderless components that disappear into your codebase.
Schema-agnostic
Drop in any Standard Schema compliant validator. No adapter layer, no rewiring — swap libraries without touching your form logic.
Headless by design
Zero UI opinions. Slot-based primitives hand you full render control — works with any component library or none at all.
Multiple instances
Run as many independent forms as you need on the same page. Each instance is fully isolated — no global state, no ID conflicts.
Granular validation
Validate the whole form or a single field. Override when each field validates — eager, lazy, or any event-driven trigger.
Array fields built-in
Full array manipulation with stable item keys. Items reorder, insert, and remove without causing unnecessary re-mounts.
End-to-end type safety
Field paths and their value types are inferred straight from your schema. Wrong paths and mismatched values are caught at compile time.
// get started
Your schema. Your UI.
Your form.
Read the docs to get up and running in minutes, or install the package and start building right now.