v0.43.0
Version 0.43.0 - 2/21/25, 11:14 AM
PRs
The Main Showcase
This PR allows you to return non-string values from validators:
<form.Field name="password" validators={{onChange: () => ({hasUppercase: false, hasLowercase: true}) }} />
In addition, it also enforces type safety on the returned value on both errorMap
and the errors
array:
const form = new FormApi({
defaultValues: {
name: 'test',
},
} as const)
const field = new FieldApi({
form,
name: 'name',
validators: {
onChange: () => {
return 123 as const
},
},
})
assertType<123 | undefined>(field.state.meta.errorMap.onChange)
assertType<Array<123 | undefined>>(field.state.meta.errors)
Breaking Changes
- Removes all
validatorAdapter
s (packages, code, and props alike)- Instead, you can use our Standard Schema support for Valibot, Zod, and ArkType
- As a result, however,
Yup
is no longer supported until this community PR is merged
- When using Standard Schema validators:
form.errors
is nowRecord<string, StandardSchemaV1Issue[]>
field.errors
is nowStandardSchemaV1Issue[]
(flattened, unless you passdisableErrorFlat
inform.Field
)
- Vue 3.4 is the new minimum version
- Vue JSX usage no longer works
Migration Guide
If you're using Yup today, you'll either need to wait for this community PR to be merged or replace Yup with another schema library.
- If using schema validation:
- Remove all
validatorAdapter
properties - Uninstall
@tanstack/yup-form-adapter
,@tanstack/valibot-form-adapter
, and@tanstack/zod-form-adapter
- Migrate all validation errors on a field away from
.map(str => <p>{str}</p>)
and towards.map(issue => <p>{issue.messaeg}</p>)
- Migrate all validation errors on form away from
.map(str => <p>{str}</p>)
and towards.map(issueObj => <p>{issueObj.issues[0].message}</p>)
- Remove all
- (If Vue): Migrate form components to use SFCs
Other Changes
- Vue SFC Works as-intended
- TanStack Start Adapter has been updated to new APIs
Packages
- @tanstack/[email protected]
- @tanstack/[email protected]
- @tanstack/[email protected]
- @tanstack/[email protected]
- @tanstack/[email protected]
- @tanstack/[email protected]