Not another form library

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.

Read Docs

// 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.

Read docs