R
fn

useForm

v0.0.16testeddemo

Headless, performant form state management. Holds reactive `values`, flat path-keyed `errors`/touched maps, derived `meta`, and a full set of mutation/validation/submit/reset helpers. Validation accepts a [Standard Schema](https://github.com/standard-schema/standard-schema) (zod/valibot/arktype), a custom resolver, or per-field function validators.

Examples

ts
const { values, errors, handleSubmit } = useForm({
  initialValues: { email: '', age: 0 },
  schema: z.object({ email: z.string().email(), age: z.number().min(18) }),
});
const onSubmit = handleSubmit((output) => save(output));
ts
// Inline binding with defineField
const form = useForm({ initialValues: { name: '' } });
const [name, nameProps] = form.defineField('name');
// <input v-model="name" v-bind="nameProps">

Demo

Loading demo…

Signature

ts
export function useForm<TInput extends object, TOutput = TInput>(
  options: UseFormOptions<TInput, TOutput> ={ ... }

Type Parameters

TInputextends object
TOutput= TInput

Parameters

ParameterTypeDescription
options?UseFormOptions<TInput, TOutput>Initial values, schema/resolver, and validation triggers

Returns

UseFormReturn<TInput, TOutput>The reactive form instance (also provided to descendant fields)