# NotForm > Vue forms without the friction. Canonical Origin: https://notformdocs.vercel.app/ ## LLM Resources - [Full Content](https://notformdocs.vercel.app/llms-full.txt): Complete page content in markdown format. --- - **Page:** NotForm - Vue Forms without the friction - **Source:** https://notformdocs.vercel.app/ - **Description:** Vue forms without the friction. ```yaml meta: og:image: https://notformdocs.vercel.app/_og/s/o_65377eab73c456c4.png og:image:height: "600" og:image:type: image/png og:image:width: "1200" twitter:image: https://notformdocs.vercel.app/_og/s/o_65377eab73c456c4.png ``` # 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. [**Read the Docs **](https://notformdocs.vercel.app/docs/getting-started/introduction) [** Try the Playground **](https://notformdocs.vercel.app/playground) - **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. ```json {"@context":"https://schema.org","@graph":[{"@id":"https://notformdocs.vercel.app/#website","@type":"WebSite","description":"Vue forms without the friction.","name":"NotForm","url":"https://notformdocs.vercel.app/","publisher":{"@id":"https://notformdocs.vercel.app/#identity"}},{"@id":"https://notformdocs.vercel.app/#webpage","@type":"WebPage","description":"Vue forms without the friction.","url":"https://notformdocs.vercel.app/","about":{"@id":"https://notformdocs.vercel.app/#identity"},"isPartOf":{"@id":"https://notformdocs.vercel.app/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://notformdocs.vercel.app/"]}]},{"@id":"https://notformdocs.vercel.app/#identity","applicationCategory":"DeveloperApplication","description":"Vue forms without the friction.","name":"NotForm","operatingSystem":"Web","url":"https://notformdocs.vercel.app","@type":["Organization","SoftwareApplication"],"aggregateRating":{"@type":"AggregateRating","bestRating":"5","ratingValue":"4.9","reviewCount":"13","worstRating":"1"},"author":{"@type":"Person","name":"Favour Emeka","url":"https://favorodera.vercel.app"},"keywords":["Vue forms","Nuxt form validation","Vue 3 form library","TypeScript form validation","headless form components"],"offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"sameAs":["https://www.npmjs.com/package/notform","https://www.npmjs.com/package/@notform/nuxt","https://github.com/favorodera/notform"]}]} ``` --- - **Page:** Playground | NotForm - **Source:** https://notformdocs.vercel.app/playground - **Description:** Interactive Vue 3 playground for NotForm. ```yaml meta: og:image: https://notformdocs.vercel.app/_og/s/o_e48b6827c1d53a45.png og:image:height: "600" og:image:type: image/png og:image:width: "1200" twitter:image: https://notformdocs.vercel.app/_og/s/o_e48b6827c1d53a45.png ``` # NotForm Playground Loading playground ```json {"@context":"https://schema.org","@graph":[{"@id":"https://notformdocs.vercel.app/#website","@type":"WebSite","description":"Vue forms without the friction.","name":"NotForm","url":"https://notformdocs.vercel.app/","publisher":{"@id":"https://notformdocs.vercel.app/#identity"}},{"@id":"https://notformdocs.vercel.app/playground#webpage","@type":"WebPage","description":"Interactive Vue 3 playground for NotForm.","name":"Playground","url":"https://notformdocs.vercel.app/playground","isPartOf":{"@id":"https://notformdocs.vercel.app/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://notformdocs.vercel.app/playground"]}]},{"@id":"https://notformdocs.vercel.app/#identity","applicationCategory":"DeveloperApplication","description":"Vue forms without the friction.","name":"NotForm","operatingSystem":"Web","url":"https://notformdocs.vercel.app","@type":["Organization","SoftwareApplication"],"aggregateRating":{"@type":"AggregateRating","bestRating":"5","ratingValue":"4.9","reviewCount":"13","worstRating":"1"},"author":{"@type":"Person","name":"Favour Emeka","url":"https://favorodera.vercel.app"},"keywords":["Vue forms","Nuxt form validation","Vue 3 form library","TypeScript form validation","headless form components"],"offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"sameAs":["https://www.npmjs.com/package/notform","https://www.npmjs.com/package/@notform/nuxt","https://github.com/favorodera/notform"]}]} ``` --- - **Page:** Introduction - **Source:** https://notformdocs.vercel.app/docs/getting-started/introduction - **Description:** NotForm is a headless, schema-driven form library for Vue 3 and Nuxt. See what it does, what it leaves to you, and where to start. NotForm manages form state for Vue 3 and Nuxt. You describe your data with a schema, NotForm turns it into a typed reactive form, and you keep full control of the markup and styling. ```vue