Install
$ agentstack add skill-skilld-dev-vue-ecosystem-skills-tanstack-vue-form-skilld ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
TanStack/form @tanstack/vue-form@1.29.1
Tags: latest: 1.29.1
References: [Docs](./references/docs/_INDEX.md)
API Changes
This section documents version-specific API changes for @tanstack/vue-form.
- BREAKING:
field.errors— v1.28.0 flattens errors by default ([error]not[[error]]), usedisableErrorFlat: trueto restore old nested behavior [source](./references/releases/@tanstack/vue-form@1.28.0.md)
- DEPRECATED:
field.getValue()— usefield.state.valueinstead as direct accessor methods on FieldApi are deprecated in favor of state access [source](./references/docs/reference/classes/FieldApi.md)
- NEW:
field.parseValueWithSchema()— validates field value against Standard Schema V1 without affecting internal field error state [source](./references/docs/reference/classes/FieldApi.md)
- NEW:
form.parseValuesWithSchema()— form-level Standard Schema V1 validation helper for third-party schemas like Zod or Valibot [source](./references/docs/reference/classes/FormApi.md)
- NEW:
formOptions()— helper to define reusable, type-safe form options with inference outside of theuseFormhook [source](./references/docs/reference/functions/formOptions.md)
- NEW:
Fieldcomponent — declarative Vue component alternative touseFieldfor defining form fields directly in templates [source](./references/docs/framework/vue/reference/variables/Field.md)
- NEW:
Subscribecomponent — Vue component for fine-grained subscriptions to form or field state changes to optimize re-renders [source](./references/docs/framework/vue/reference/interfaces/VueFormApi.md)
- NEW:
useStore()— Vue hook providing direct, reactive access to the underlying TanStack Store state for the form or field [source](./references/docs/framework/vue/reference/functions/useStore.md)
- NEW:
resetField()—FormApimethod to reset a specific field's value and metadata back to its default state [source](./references/docs/reference/classes/FormApi.md)
- NEW:
clearFieldValues()—FormApiutility to efficiently remove all items from an array field's data [source](./references/docs/reference/classes/FormApi.md)
- NEW:
setErrorMap()— allows manual overriding of the internal validation error map for custom validation logic [source](./references/docs/reference/classes/FieldApi.md)
- NEW:
StandardSchemaV1— native support for the Standard Schema validation protocol across all validator fields [source](./references/docs/reference/type-aliases/StandardSchemaV1.md)
- NEW:
modeoption —UseFieldOptionsnow supports explicit'value'or'array'modes for better type safety in complex forms
- NEW:
disableErrorFlat— new option inFieldApiOptionsto opt-out of automatic error flattening introduced in v1.28.0 [source](./references/releases/@tanstack/vue-form@1.28.0.md)
Also changed: resetFieldMeta() new helper · insertFieldValue() array utility · moveFieldValues() array utility · swapFieldValues() array utility · FieldApi.getInfo() metadata helper · VueFieldApi interface stabilization · VueFormApi interface stabilization
Best Practices
- Use
formOptions()to define type-safe, reusable form configurations that can be shared across components or used for better type inference [source](./references/docs/reference/functions/formOptions.md)
const options = formOptions({
defaultValues: { email: '' },
validators: {
onChange: z.object({ email: z.string().email() })
}
})
const form = useForm(options)
- Link field validations with
onChangeListenToto trigger re-validation when dependent field values change, such as password confirmations [source](./references/docs/framework/vue/guides/linked-fields.md)
value !== fieldApi.form.getFieldValue('password') ? 'Passwords do not match' : undefined
}"
>
- Implement
async-debounce-msat the field or validator level to throttle expensive asynchronous validation calls like API checks [source](./references/docs/framework/vue/guides/validation.md)
checkUsername(value)
}"
>
- Parse Standard Schemas manually within
onSubmitto retrieve transformed values, as the form state preserves the raw input data [source](./references/docs/framework/vue/guides/submission-handling.md)
const form = useForm({
onSubmit: ({ value }) => {
// schema.parse converts string to number if transform is defined
const validatedData = loginSchema.parse(value)
api.submit(validatedData)
}
})
- Pass custom metadata via
onSubmitMetato differentiate between multiple submission actions within a singleonSubmithandler [source](./references/docs/framework/vue/guides/submission-handling.md)
Save Draft
Publish
- Combine
canSubmitwithisPristineto ensure the submit button remains disabled until the user has actually interacted with the form [source](./references/docs/framework/vue/guides/validation.md)
Submit
- Use
form.useStorewith a selector in `` for granular, reactive access to form state without re-rendering on unrelated changes [source](./references/docs/framework/vue/guides/validation.md)
const canSubmit = form.useStore((state) => state.canSubmit)
- Enable
asyncAlways: truewhen you need asynchronous validators to execute regardless of whether synchronous validation has already failed [source](./references/docs/framework/vue/guides/validation.md)
// Runs async validation even if local regex check fails
const validators = {
onChange: ({ value }) => !value.includes('@') ? 'Invalid' : undefined,
onChangeAsync: async ({ value }) => api.check(value),
asyncAlways: true
}
- Return a
fieldsmapping from form-level validators to update errors across multiple fields simultaneously from a single validation logic [source](./references/docs/framework/vue/guides/validation.md)
validators: {
onChange: ({ value }) => ({
fields: {
startDate: value.startDate > value.endDate ? 'Must be before end' : undefined,
endDate: value.startDate > value.endDate ? 'Must be after start' : undefined
}
})
}
- Use reactive objects for
defaultValueswhen binding the form to dynamic or asynchronous data sources like TanStack Query [source](./references/docs/framework/vue/guides/async-initial-values.md)
const { data } = useQuery(...)
const defaultValues = reactive({
name: computed(() => data.value?.name ?? '')
})
const form = useForm({ defaultValues })
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: skilld-dev
- Source: skilld-dev/vue-ecosystem-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.