Introduction
NotForm handles validation state, dirty/touched tracking, per-field triggers, and array manipulation for Vue 3. It renders nothing itself — you own every element of your UI.
It works with any Standard Schema compliant validator: Zod, Valibot, ArkType, Yup. The form API is identical regardless of which library you choose.
What's included
Validation
Full-form and per-field validation with async support. Trigger on blur, input, change, focus, or mount.
Dirty & touched tracking
Fields are compared against initial values on every change. Touched state is set on blur or form submit.
Array fields
Append, prepend, insert, remove, swap, move — with stable item keys that survive reorders.
Server errors
Apply server-side errors after submission. They live alongside schema errors and are cleared on re-validation.
Multiple instances
Each useNotForm call is fully isolated. No global state, no ID conflicts between forms.
End-to-end types
Field paths and their value types are inferred from your schema. Wrong paths are caught at compile time.
Core pieces
<form> and provides the instance to all descendant field components.