--- 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 ``` 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 `