21

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.

Copyright © 2026 NotForm
Published under MIT License