Vue Forms
without the friction.
Headless form state and validation library for Vue 3. Bring your own schema, keep your own components, and stay in control of every interaction.
Bring your own schema
Use Zod, Valibot, ArkType, or any Standard Schema validator. Your validation library stays completely separate from your form state.
Headless by design
Headless components and composables give you state, events, and validation without forcing a design system, markup structure, or styling approach.
Isolated form instances
Keep multiple independent forms on the same page. Every form owns its own values, errors, lifecycle, and submission state.
Granular validation
Validate everything or target a specific field, object, or array scope. Choose when validation runs with blur, change, input, or manually.
First-class arrays
Append, prepend, insert, update, remove, swap, and move array items while keeping their associated state in sync.
Stable dynamic fields
Stable array item keys keep reordered fields tied to the right item, avoiding the remount and state-shuffling problems of index-based keys.
Type-safe by default
Field paths, values, and schema input types are inferred from your schema, so invalid paths and incompatible values are caught before runtime.
Async-safe validation
Async validation stays predictable even when values change while validation is in flight. Stale results cannot overwrite newer form state.
Server error handling
Set server-side issues directly onto fields, render them through the same error system, and keep server errors alongside schema validation.