---
name: tanstack-vue-form-skilld
description: Use when writing, reviewing, or debugging code that imports @tanstack/vue-form (TanStack Form for Vue). Covers the 1.33.x API, including useForm, form.Field, form.FormGroup, form.Subscribe, form.useSelector, validators with Standard Schema, onDynamic with revalidateLogic, and array fields with mode="array". Result, forms built on current, non-deprecated Vue APIs with correct reactivity.
---
# @tanstack/vue-form 1.33.5
Headless, type-safe form state for Vue 3. The package re-exports all of `@tanstack/form-core` and adds Vue components and hooks (src/index.ts:1-5).
## Environment
- Version studied: `@tanstack/vue-form@1.33.5`, bundling `@tanstack/form-core@1.33.5` and `@tanstack/vue-store@^0.11.0` (package.json:39-42).
- Peer dependency: `vue ^3.4.0` (package.json:48-50). TypeScript 5.4 through 5.9 are in the test matrix (package.json:54-60).
- Import from the package root only. The sole subpath export is `./package.json` (package.json:21-33). Dual ESM/CJS, `sideEffects: false`.
- Official docs: https://tanstack.com/form/latest/docs/framework/vue/overview
## Minimal form
```vue
field.handleChange((e.target as HTMLInputElement).value)"
/>
```
Source: official quick start, https://tanstack.com/form/latest/docs/framework/vue/quick-start
## Field binding rules
- Fields are created with the `form.Field` component. The `name` prop must be a deep key of `defaultValues`, for example `'details.email'` or `` `people[${i}].name` ``.
- The scoped slot receives `{ field, state }` (src/useField.tsx:543-547). `field` is a `FieldApi`, `state` mirrors `field.state`.
- Inputs are controlled: bind `:value="field.state.value"`, push updates through `field.handleChange`, and wire `@blur="field.handleBlur"`.
- For number inputs, use `(e.target as HTMLInputElement).valueAsNumber`.
- Do not write `v-model` on the slot input; state flows through `handleChange`.
- `form.Field` merges its props with fallthrough attrs before creating the field (src/useField.tsx:541), so validators and listeners can be passed as props or attrs.
## Reactivity
- In `