Skip to content

Form Schema

Reactive forms from a declarative schema (JSON, Zod, Yup, or Valibot) for Vue 3 — a headless, SSR-compatible alternative to VeeValidate/FormKit.

Any schema source — from JSON to Zod

Build forms from FieldDefinition[], JSON, standard JSON Schema/OpenAPI, Zod, Yup, or Valibot. Adapters for each library are separate entry points, not bloating the main bundle. Type inference (InferValues) works automatically for all sources, giving full type safety.

Conditional fields and dynamic options

Control field visibility and disabled state via booleans, reactive functions, or string expressions. Select/radio options can be sync or async with automatic refetch when dependencies change (optionsDeps). Everything updates reactively without unnecessary re‑renders.

Validation and input masking

Built‑in sync and async validators (required, minLength, email, sameAs, fileType, and more) with validateOn modes (input/blur/submit/eager) and validateMode (first/all). Input masks with presets (phone, date, IBAN, INN) and custom patterns are applied automatically.

Dynamic arrays and multi-step forms

useFieldArray gives full control over dynamic lists: append, prepend, remove, move, swap, replace. useMultiStepForm manages wizards with per‑step validation and a shared submit handler. Ready‑to‑use renderers (ArrayField, MultiStepFormRenderer) speed up development.

Headless, UI themes, and SSR safety

The core is UI‑agnostic — use any design via custom components or a registry. Ready‑to‑use renderers for Tailwind, shadcn/ui, PrimeVue, and Naive UI. SSR safety, persistence (local/sessionStorage), a DevTools inspector, and a Nuxt module with auto‑imports.