diff --git a/docs/config.json b/docs/config.json
index a543f3a53..714371ee5 100644
--- a/docs/config.json
+++ b/docs/config.json
@@ -442,6 +442,10 @@
"label": "TanStack Query Integration",
"to": "framework/react/examples/query-integration"
},
+ {
+ "label": "Standard Schema",
+ "to": "framework/react/examples/standard-schema"
+ },
{
"label": "Yup",
"to": "framework/react/examples/yup"
diff --git a/docs/framework/angular/guides/validation.md b/docs/framework/angular/guides/validation.md
index d5b2f44b2..d9d72352a 100644
--- a/docs/framework/angular/guides/validation.md
+++ b/docs/framework/angular/guides/validation.md
@@ -382,24 +382,22 @@ This will debounce every async call with a 500ms delay. You can even override th
> This will run `onChangeAsync` every 1500ms while `onBlurAsync` will run every 500ms.
-## Adapter-Based Validation (Zod, Yup, Valibot)
+## Validation through Schema Libraries
-While functions provide more flexibility and customization over your validation, they can be a bit verbose. To help solve this, there are libraries like [Valibot](https://valibot.dev/), [Yup](https://github.com/jquense/yup), and [Zod](https://zod.dev/) that provide schema-based validation to make shorthand and type-strict validation substantially easier.
+While functions provide more flexibility and customization over your validation, they can be a bit verbose. To help solve this, there are libraries that provide schema-based validation to make shorthand and type-strict validation substantially easier. You can also define a single schema for your entire form and pass it to the form level, errors will be automatically propagated to the fields.
-Luckily, we support all of these libraries through official adapters:
+### Standard Schema Libraries
-```bash
-$ npm install @tanstack/zod-form-adapter zod
-# or
-$ npm install @tanstack/yup-form-adapter yup
-# or
-$ npm install @tanstack/valibot-form-adapter valibot
-```
+TanStack Form natively supports all libraries following the [Standard Schema specification](https://github.com/standard-schema/standard-schema), most notably:
+- [Zod](https://zod.dev/)
+- [Valibot](https://valibot.dev/)
+- [ArkType](https://arktype.io/)
-Once done, we can add the adapter to the `validator` property on the form or field:
+*Note:* make sure to use the latest version of the schema libraries as older versions might not support Standard Schema yet.
+
+To use schemas from these libraries you can pass them to the `validators` props as you would do with a custom function:
```angular-ts
-import { zodValidator } from '@tanstack/zod-form-adapter'
import { z } from 'zod'
@Component({
@@ -420,11 +418,9 @@ import { z } from 'zod'
`,
})
export class AppComponent {
- form = injectForm({
- // Either add the validator here or on `Field`
- validatorAdapter: zodValidator(),
+ form = injectForm({
// ...
- })
+ })
z = z
@@ -432,7 +428,8 @@ export class AppComponent {
}
```
-These adapters also support async operations using the proper property names:
+Async validations on form and field level are supported as well:
+
```angular-ts
@Component({
@@ -469,37 +466,50 @@ export class AppComponent {
}
```
-### Form Level Adapter Validation
+### Other Schema Libraries
-You can also use the adapter at the form level:
+We also support [Yup](https://github.com/jquense/yup) through an official adapter:
-```typescript
-import { zodValidator } from '@tanstack/zod-form-adapter'
-import { z } from 'zod'
+```bash
+$ npm install @tanstack/yup-form-adapter yup
+```
-// ...
+Once done, we can add the adapter to the `validator` property on the form or field:
-const form = injectForm({
- validatorAdapter: zodValidator(),
- validators: {
- onChange: z.object({
- age: z.number().gte(13, 'You must be 13 to make an account'),
- }),
- },
-})
-```
+```angular-ts
+import { yupValidator } from '@tanstack/yup-form-adapter'
+import * as yup from 'yup'
-If you use the adapter at the form level, it will pass the validation to the fields of the same name.
+@Component({
+ selector: 'app-root',
+ standalone: true,
+ imports: [TanStackField],
+ template: `
+
+
+
+ `,
+})
+export class AppComponent {
+ form = injectForm({
+ // Either add the validator here or on `Field`
+ validatorAdapter: yupValidator(),
+ // ...
+ })
-This means that:
+ yup = yup
-```html
-
-
-
+ // ...
+}
```
-Will still display the error message from the form-level validation.
## Preventing invalid forms from being submitted
diff --git a/docs/framework/react/guides/ssr.md b/docs/framework/react/guides/ssr.md
index a6a63b6ad..f584a792c 100644
--- a/docs/framework/react/guides/ssr.md
+++ b/docs/framework/react/guides/ssr.md
@@ -20,7 +20,7 @@ This section focuses on integrating TanStack Form with TanStack Start.
- Start a new `TanStack Start` project, following the steps in the [TanStack Start Quickstart Guide](https://tanstack.com/router/latest/docs/framework/react/guide/tanstack-start)
- Install `@tanstack/react-form`
-- Install any [form validator](/form/latest/docs/framework/react/guides/validation#adapter-based-validation-zod-yup-valibot) of your choice. [Optional]
+- Install any [form validator](/form/latest/docs/framework/react/guides/validation#validation-through-schema-libraries) of your choice. [Optional]
### Start integration
@@ -169,7 +169,7 @@ This section focuses on integrating TanStack Form with `Next.js`, particularly u
- Start a new `Next.js` project, following the steps in the [Next.js Documentation](https://nextjs.org/docs/getting-started/installation). Ensure you select `yes` for `Would you like to use App Router?` during the setup to access all new features provided by Next.js.
- Install `@tanstack/react-form`
-- Install any [form validator](/form/latest/docs/framework/react/guides/validation#adapter-based-validation-zod-yup-valibot) of your choice. [Optional]
+- Install any [form validator](/form/latest/docs/framework/react/guides/validation#validation-through-schema-libraries) of your choice. [Optional]
## App Router integration
@@ -315,7 +315,7 @@ Here, we're using [React's `useActionState` hook](https://unicorn-utterances.com
- Start a new `Remix` project, following the steps in the [Remix Documentation](https://remix.run/docs/en/main/start/quickstart).
- Install `@tanstack/react-form`
-- Install any [form validator](/form/latest/docs/framework/react/guides/validation#adapter-based-validation-zod-yup-valibot) of your choice. [Optional]
+- Install any [form validator](/form/latest/docs/framework/react/guides/validation#validation-through-schema-libraries) of your choice. [Optional]
## Remix integration
diff --git a/docs/framework/react/guides/validation.md b/docs/framework/react/guides/validation.md
index 2f2a0a274..e8a9ff26f 100644
--- a/docs/framework/react/guides/validation.md
+++ b/docs/framework/react/guides/validation.md
@@ -413,47 +413,49 @@ This will debounce every async call with a 500ms delay. You can even override th
> This will run `onChangeAsync` every 1500ms while `onBlurAsync` will run every 500ms.
-## Adapter-Based Validation (Zod, Yup, Valibot)
+## Validation through Schema Libraries
-While functions provide more flexibility and customization over your validation, they can be a bit verbose. To help solve this, there are libraries like [Valibot](https://valibot.dev/), [Yup](https://github.com/jquense/yup), and [Zod](https://zod.dev/) that provide schema-based validation to make shorthand and type-strict validation substantially easier.
+While functions provide more flexibility and customization over your validation, they can be a bit verbose. To help solve this, there are libraries that provide schema-based validation to make shorthand and type-strict validation substantially easier. You can also define a single schema for your entire form and pass it to the form level, errors will be automatically propagated to the fields.
-Luckily, we support all of these libraries through official adapters:
+### Standard Schema Libraries
-```bash
-$ npm install @tanstack/zod-form-adapter zod
-# or
-$ npm install @tanstack/yup-form-adapter yup
-# or
-$ npm install @tanstack/valibot-form-adapter valibot
-```
+TanStack Form natively supports all libraries following the [Standard Schema specification](https://github.com/standard-schema/standard-schema), most notably:
+- [Zod](https://zod.dev/)
+- [Valibot](https://valibot.dev/)
+- [ArkType](https://arktype.io/)
-Once done, we can add the adapter to the `validator` property on the form or field:
+*Note:* make sure to use the latest version of the schema libraries as older versions might not support Standard Schema yet.
-```tsx
-import { zodValidator } from '@tanstack/zod-form-adapter'
-import { z } from 'zod'
-
-// ...
+To use schemas from these libraries you can pass them to the `validators` props as you would do with a custom function:
-const form = useForm({
- // Either add the validator here or on `Field`
- validatorAdapter: zodValidator(),
- // ...
+```tsx
+const userSchema = z.object({
+ age: z.number().gte(13, 'You must be 13 to make an account'),
})
-
+ )
+}
```
-These adapters also support async operations using the proper property names:
+Async validations on form and field level are supported as well:
```tsx
```
-### Form Level Adapter Validation
+### Other Schema Libraries
+
+We also support [Yup](https://github.com/jquense/yup) through an official adapter:
-You can also use the adapter at the form level:
+```bash
+$ npm install @tanstack/yup-form-adapter yup
+```
+
+Once done, we can add the adapter to the `validator` property on the form or field:
```tsx
-import { zodValidator } from '@tanstack/zod-form-adapter'
-import { z } from 'zod'
+import { yupValidator } from '@tanstack/yup-form-adapter'
+import * as yup from 'yup'
// ...
-const formSchema = z.object({
- age: z.number().gte(13, 'You must be 13 to make an account'),
-})
-
const form = useForm({
- validatorAdapter: zodValidator(),
- validators: {
- onChange: formSchema
- },
+ // Either add the validator here or on `Field`
+ validatorAdapter: yupValidator(),
+ // ...
})
-```
-
-If you use the adapter at the form level, it will pass the validation to the fields of the same name.
-
-This means that:
-
-```tsx
{
return <>{/* ... */}>
}}
/>
```
-Will still display the error message from the form-level validation.
-
## Preventing invalid forms from being submitted
The `onChange`, `onBlur` etc... callbacks are also run when the form is submitted and the submission is blocked if the form is invalid.
diff --git a/docs/framework/solid/guides/validation.md b/docs/framework/solid/guides/validation.md
index 50ef40a7a..08c60857b 100644
--- a/docs/framework/solid/guides/validation.md
+++ b/docs/framework/solid/guides/validation.md
@@ -312,37 +312,32 @@ This will debounce every async call with a 500ms delay. You can even override th
> This will run `onChangeAsync` every 1500ms while `onBlurAsync` will run every 500ms.
-## Adapter-Based Validation (Zod, Yup, Valibot)
+## Validation through Schema Libraries
-While functions provide more flexibility and customization over your validation, they can be a bit verbose. To help solve this, there are libraries like [Valibot](https://valibot.dev/), [Yup](https://github.com/jquense/yup), and [Zod](https://zod.dev/) that provide schema-based validation to make shorthand and type-strict validation substantially easier.
+While functions provide more flexibility and customization over your validation, they can be a bit verbose. To help solve this, there are libraries that provide schema-based validation to make shorthand and type-strict validation substantially easier. You can also define a single schema for your entire form and pass it to the form level, errors will be automatically propagated to the fields.
-Luckily, we support all of these libraries through official adapters:
+### Standard Schema Libraries
-```bash
-$ npm install @tanstack/zod-form-adapter zod
-# or
-$ npm install @tanstack/yup-form-adapter yup
-# or
-$ npm install @tanstack/valibot-form-adapter valibot
-```
+TanStack Form natively supports all libraries following the [Standard Schema specification](https://github.com/standard-schema/standard-schema), most notably:
+- [Zod](https://zod.dev/)
+- [Valibot](https://valibot.dev/)
+- [ArkType](https://arktype.io/)
-Once done, we can add the adapter to the `validator` property on the form or field:
+*Note:* make sure to use the latest version of the schema libraries as older versions might not support Standard Schema yet.
+
+To use schemas from these libraries you can pass them to the `validators` props as you would do with a custom function:
```tsx
-import { zodValidator } from '@tanstack/zod-form-adapter'
import { z } from 'zod'
// ...
const form = createForm(() => ({
- // Either add the validator here or on `Field`
- validatorAdapter: zodValidator(),
// ...
}));
({
/>
```
-These adapters also support async operations using the proper property names:
+Async validations on form and field level are supported as well:
```tsx
```
-### Form Level Adapter Validation
+### Other Schema Libraries
+We also support [Yup](https://github.com/jquense/yup) through an official adapter:
+
+```bash
+$ npm install @tanstack/yup-form-adapter yup
+```
+
+Once done, we can add the adapter to the `validator` property on the form or field:
-You can also use the adapter at the form level:
```tsx
-import { zodValidator } from '@tanstack/zod-form-adapter'
-import { z } from 'zod'
+import { yupValidator } from '@tanstack/yup-form-adapter'
+import * as yup from 'yup'
// ...
const form = createForm(() => ({
- validatorAdapter: zodValidator(),
- validators: {
- onChange: z.object({
- age: z.number().gte(13, 'You must be 13 to make an account'),
- }),
- },
-}))
-```
-
-If you use the adapter at the form level, it will pass the validation to the fields of the same name.
-
-This means that:
-
-```tsx
+ // Either add the validator here or on `Field`
+ validatorAdapter: yupValidator(),
+ // ...
+}));
{
return <>{/* ... */}>
}}
/>
```
-Will still display the error message from the form-level validation.
-
-
## Preventing invalid forms from being submitted
The `onChange`, `onBlur` etc... callbacks are also run when the form is submitted and the submission is blocked if the form is invalid.
diff --git a/docs/framework/vue/guides/validation.md b/docs/framework/vue/guides/validation.md
index a9aea2c5f..beb3f7504 100644
--- a/docs/framework/vue/guides/validation.md
+++ b/docs/framework/vue/guides/validation.md
@@ -322,31 +322,27 @@ This will debounce every async call with a 500ms delay. You can even override th
This will run `onChangeAsync` every 1500ms while `onBlurAsync` will run every 500ms.
-## Adapter-Based Validation (Zod, Yup, Valibot)
+## Validation through Schema Libraries
-While functions provide more flexibility and customization over your validation, they can be a bit verbose. To help solve this, there are libraries like [Valibot](https://valibot.dev/), [Yup](https://github.com/jquense/yup), and [Zod](https://zod.dev/) that provide schema-based validation to make shorthand and type-strict validation substantially easier.
+While functions provide more flexibility and customization over your validation, they can be a bit verbose. To help solve this, there are libraries that provide schema-based validation to make shorthand and type-strict validation substantially easier. You can also define a single schema for your entire form and pass it to the form level, errors will be automatically propagated to the fields.
-Luckily, we support all of these libraries through official adapters:
+### Standard Schema Libraries
-```bash
-$ npm install @tanstack/zod-form-adapter zod
-# or
-$ npm install @tanstack/yup-form-adapter yup
-# or
-$ npm install @tanstack/valibot-form-adapter valibot
-```
+TanStack Form natively supports all libraries following the [Standard Schema specification](https://github.com/standard-schema/standard-schema), most notably:
+- [Zod](https://zod.dev/)
+- [Valibot](https://valibot.dev/)
+- [ArkType](https://arktype.io/)
-Once done, we can add the adapter to the `validator` property on the form or field:
+*Note:* make sure to use the latest version of the schema libraries as older versions might not support Standard Schema yet.
+
+To use schemas from these libraries you can pass them to the `validators` props as you would do with a custom function:
```vue
@@ -355,7 +351,6 @@ const form = useForm({
```
-These adapters also support async operations using the proper property names:
+Async validations on form and field level are supported as well:
```vue
@@ -397,45 +392,47 @@ These adapters also support async operations using the proper property names:
```
-### Form Level Adapter Validation
+### Other Schema Libraries
-You can also use the adapter at the form level:
+We also support [Yup](https://github.com/jquense/yup) through an official adapter:
-```typescript
-import { zodValidator } from '@tanstack/zod-form-adapter'
-import { z } from 'zod'
+```bash
+$ npm install @tanstack/yup-form-adapter yup
+```
+
+Once done, we can add the adapter to the `validator` property on the form or field:
+
+```vue
+
-```vue
-
+
+
```
-Will still display the error message from the form-level validation.
-
## Preventing invalid forms from being submitted
The `onChange`, `onBlur` etc... callbacks are also run when the form is submitted and the submission is blocked if the form is invalid.
diff --git a/docs/reference/classes/fieldapi.md b/docs/reference/classes/fieldapi.md
index 49beb73f1..a5cd88a21 100644
--- a/docs/reference/classes/fieldapi.md
+++ b/docs/reference/classes/fieldapi.md
@@ -47,7 +47,7 @@ Initializes a new `FieldApi` instance.
#### Defined in
-[packages/form-core/src/FieldApi.ts:509](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L509)
+[packages/form-core/src/FieldApi.ts:513](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L513)
## Properties
@@ -61,7 +61,7 @@ A reference to the form API instance.
#### Defined in
-[packages/form-core/src/FieldApi.ts:471](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L471)
+[packages/form-core/src/FieldApi.ts:475](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L475)
***
@@ -75,7 +75,7 @@ The field name.
#### Defined in
-[packages/form-core/src/FieldApi.ts:481](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L481)
+[packages/form-core/src/FieldApi.ts:485](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L485)
***
@@ -89,7 +89,7 @@ The field options.
#### Defined in
-[packages/form-core/src/FieldApi.ts:485](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L485)
+[packages/form-core/src/FieldApi.ts:489](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L489)
***
@@ -103,7 +103,7 @@ The current field state.
#### Defined in
-[packages/form-core/src/FieldApi.ts:499](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L499)
+[packages/form-core/src/FieldApi.ts:503](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L503)
***
@@ -117,7 +117,7 @@ The field state store.
#### Defined in
-[packages/form-core/src/FieldApi.ts:495](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L495)
+[packages/form-core/src/FieldApi.ts:499](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L499)
***
@@ -129,7 +129,7 @@ timeoutIds: Record;
#### Defined in
-[packages/form-core/src/FieldApi.ts:504](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L504)
+[packages/form-core/src/FieldApi.ts:508](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L508)
## Methods
@@ -147,7 +147,7 @@ Gets the field information object.
#### Defined in
-[packages/form-core/src/FieldApi.ts:738](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L738)
+[packages/form-core/src/FieldApi.ts:752](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L752)
***
@@ -165,7 +165,7 @@ Gets the current field metadata.
#### Defined in
-[packages/form-core/src/FieldApi.ts:716](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L716)
+[packages/form-core/src/FieldApi.ts:730](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L730)
***
@@ -187,7 +187,7 @@ Use `field.state.value` instead.
#### Defined in
-[packages/form-core/src/FieldApi.ts:690](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L690)
+[packages/form-core/src/FieldApi.ts:704](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L704)
***
@@ -205,7 +205,7 @@ Handles the blur event.
#### Defined in
-[packages/form-core/src/FieldApi.ts:1090](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L1090)
+[packages/form-core/src/FieldApi.ts:1104](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L1104)
***
@@ -229,7 +229,7 @@ Handles the change event.
#### Defined in
-[packages/form-core/src/FieldApi.ts:1083](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L1083)
+[packages/form-core/src/FieldApi.ts:1097](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L1097)
***
@@ -264,7 +264,7 @@ Inserts a value at the specified index, shifting the subsequent values to the ri
#### Defined in
-[packages/form-core/src/FieldApi.ts:751](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L751)
+[packages/form-core/src/FieldApi.ts:765](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L765)
***
@@ -286,7 +286,7 @@ Mounts the field instance to the form.
#### Defined in
-[packages/form-core/src/FieldApi.ts:600](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L600)
+[packages/form-core/src/FieldApi.ts:614](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L614)
***
@@ -321,7 +321,7 @@ Moves the value at the first specified index to the second specified index.
#### Defined in
-[packages/form-core/src/FieldApi.ts:781](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L781)
+[packages/form-core/src/FieldApi.ts:795](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L795)
***
@@ -349,7 +349,7 @@ Pushes a new value to the field.
#### Defined in
-[packages/form-core/src/FieldApi.ts:743](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L743)
+[packages/form-core/src/FieldApi.ts:757](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L757)
***
@@ -377,7 +377,7 @@ Removes a value at the specified index.
#### Defined in
-[packages/form-core/src/FieldApi.ts:769](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L769)
+[packages/form-core/src/FieldApi.ts:783](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L783)
***
@@ -412,7 +412,7 @@ Replaces a value at the specified index.
#### Defined in
-[packages/form-core/src/FieldApi.ts:760](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L760)
+[packages/form-core/src/FieldApi.ts:774](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L774)
***
@@ -436,7 +436,7 @@ Updates the field's errorMap
#### Defined in
-[packages/form-core/src/FieldApi.ts:1110](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L1110)
+[packages/form-core/src/FieldApi.ts:1124](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L1124)
***
@@ -460,7 +460,7 @@ Sets the field metadata.
#### Defined in
-[packages/form-core/src/FieldApi.ts:732](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L732)
+[packages/form-core/src/FieldApi.ts:746](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L746)
***
@@ -488,7 +488,7 @@ Sets the field value and run the `change` validator.
#### Defined in
-[packages/form-core/src/FieldApi.ts:697](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L697)
+[packages/form-core/src/FieldApi.ts:711](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L711)
***
@@ -523,7 +523,7 @@ Swaps the values at the specified indices.
#### Defined in
-[packages/form-core/src/FieldApi.ts:775](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L775)
+[packages/form-core/src/FieldApi.ts:789](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L789)
***
@@ -547,7 +547,7 @@ Updates the field instance with new options.
#### Defined in
-[packages/form-core/src/FieldApi.ts:653](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L653)
+[packages/form-core/src/FieldApi.ts:667](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L667)
***
@@ -571,4 +571,4 @@ Validates the field value.
#### Defined in
-[packages/form-core/src/FieldApi.ts:1055](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L1055)
+[packages/form-core/src/FieldApi.ts:1069](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L1069)
diff --git a/docs/reference/classes/formapi.md b/docs/reference/classes/formapi.md
index 4f268848c..2d825ae73 100644
--- a/docs/reference/classes/formapi.md
+++ b/docs/reference/classes/formapi.md
@@ -39,7 +39,7 @@ Constructs a new `FormApi` instance with the given form options.
#### Defined in
-[packages/form-core/src/FormApi.ts:386](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L386)
+[packages/form-core/src/FormApi.ts:395](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L395)
## Properties
@@ -53,7 +53,7 @@ A record of field information for each field in the form.
#### Defined in
-[packages/form-core/src/FormApi.ts:375](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L375)
+[packages/form-core/src/FormApi.ts:384](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L384)
***
@@ -67,7 +67,7 @@ The options for the form.
#### Defined in
-[packages/form-core/src/FormApi.ts:359](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L359)
+[packages/form-core/src/FormApi.ts:368](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L368)
***
@@ -85,7 +85,7 @@ Please use useStore(form.store) utility to subscribe to state
#### Defined in
-[packages/form-core/src/FormApi.ts:371](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L371)
+[packages/form-core/src/FormApi.ts:380](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L380)
***
@@ -99,7 +99,7 @@ A [TanStack Store instance](https://tanstack.com/store/latest/docs/reference/Sto
#### Defined in
-[packages/form-core/src/FormApi.ts:363](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L363)
+[packages/form-core/src/FormApi.ts:372](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L372)
## Methods
@@ -125,7 +125,7 @@ deleteField(field): void
#### Defined in
-[packages/form-core/src/FormApi.ts:1116](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1116)
+[packages/form-core/src/FormApi.ts:1135](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1135)
***
@@ -153,7 +153,7 @@ Gets the field info of the specified field.
#### Defined in
-[packages/form-core/src/FormApi.ts:1027](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1027)
+[packages/form-core/src/FormApi.ts:1046](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1046)
***
@@ -181,7 +181,7 @@ Gets the metadata of the specified field.
#### Defined in
-[packages/form-core/src/FormApi.ts:1018](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1018)
+[packages/form-core/src/FormApi.ts:1037](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1037)
***
@@ -209,7 +209,7 @@ Gets the value of the specified field.
#### Defined in
-[packages/form-core/src/FormApi.ts:1011](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1011)
+[packages/form-core/src/FormApi.ts:1030](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1030)
***
@@ -227,7 +227,7 @@ Handles the form submission, performs validation, and calls the appropriate onSu
#### Defined in
-[packages/form-core/src/FormApi.ts:952](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L952)
+[packages/form-core/src/FormApi.ts:971](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L971)
***
@@ -271,7 +271,7 @@ Inserts a value into an array field at the specified index, shifting the subsequ
#### Defined in
-[packages/form-core/src/FormApi.ts:1148](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1148)
+[packages/form-core/src/FormApi.ts:1167](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1167)
***
@@ -287,7 +287,7 @@ mount(): void
#### Defined in
-[packages/form-core/src/FormApi.ts:513](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L513)
+[packages/form-core/src/FormApi.ts:532](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L532)
***
@@ -331,7 +331,7 @@ Moves the value at the first specified index to the second specified index withi
#### Defined in
-[packages/form-core/src/FormApi.ts:1266](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1266)
+[packages/form-core/src/FormApi.ts:1285](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1285)
***
@@ -370,7 +370,7 @@ Pushes a value into an array field.
#### Defined in
-[packages/form-core/src/FormApi.ts:1130](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1130)
+[packages/form-core/src/FormApi.ts:1149](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1149)
***
@@ -409,7 +409,7 @@ Removes a value from an array field at the specified index.
#### Defined in
-[packages/form-core/src/FormApi.ts:1201](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1201)
+[packages/form-core/src/FormApi.ts:1220](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1220)
***
@@ -453,7 +453,7 @@ Replaces a value into an array field at the specified index.
#### Defined in
-[packages/form-core/src/FormApi.ts:1175](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1175)
+[packages/form-core/src/FormApi.ts:1194](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1194)
***
@@ -488,7 +488,7 @@ Optional options to control the reset behavior.
#### Defined in
-[packages/form-core/src/FormApi.ts:580](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L580)
+[packages/form-core/src/FormApi.ts:599](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L599)
***
@@ -514,7 +514,7 @@ resetFieldMeta(fieldMeta): Record
#### Defined in
-[packages/form-core/src/FormApi.ts:1061](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1061)
+[packages/form-core/src/FormApi.ts:1080](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1080)
***
@@ -538,7 +538,7 @@ Updates the form's errorMap
#### Defined in
-[packages/form-core/src/FormApi.ts:1290](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1290)
+[packages/form-core/src/FormApi.ts:1309](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1309)
***
@@ -570,7 +570,7 @@ Updates the metadata of the specified field.
#### Defined in
-[packages/form-core/src/FormApi.ts:1046](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1046)
+[packages/form-core/src/FormApi.ts:1065](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1065)
***
@@ -609,7 +609,7 @@ Sets the value of the specified field and optionally updates the touched state.
#### Defined in
-[packages/form-core/src/FormApi.ts:1085](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1085)
+[packages/form-core/src/FormApi.ts:1104](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1104)
***
@@ -653,7 +653,7 @@ Swaps the values at the specified indices within an array field.
#### Defined in
-[packages/form-core/src/FormApi.ts:1240](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1240)
+[packages/form-core/src/FormApi.ts:1259](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L1259)
***
@@ -677,7 +677,7 @@ Updates the form options and form state.
#### Defined in
-[packages/form-core/src/FormApi.ts:536](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L536)
+[packages/form-core/src/FormApi.ts:555](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L555)
***
@@ -701,7 +701,7 @@ Validates form and all fields in using the correct handlers for a given validati
#### Defined in
-[packages/form-core/src/FormApi.ts:606](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L606)
+[packages/form-core/src/FormApi.ts:625](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L625)
***
@@ -740,7 +740,7 @@ Validates the children of a specified array in the form starting from a given in
#### Defined in
-[packages/form-core/src/FormApi.ts:640](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L640)
+[packages/form-core/src/FormApi.ts:659](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L659)
***
@@ -772,4 +772,4 @@ Validates a specified field in the form using the correct handlers for a given v
#### Defined in
-[packages/form-core/src/FormApi.ts:679](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L679)
+[packages/form-core/src/FormApi.ts:698](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L698)
diff --git a/docs/reference/functions/isstandardschemavalidator.md b/docs/reference/functions/isstandardschemavalidator.md
new file mode 100644
index 000000000..46f762104
--- /dev/null
+++ b/docs/reference/functions/isstandardschemavalidator.md
@@ -0,0 +1,24 @@
+---
+id: isStandardSchemaValidator
+title: isStandardSchemaValidator
+---
+
+# Function: isStandardSchemaValidator()
+
+```ts
+function isStandardSchemaValidator(validator): validator is StandardSchema
+```
+
+## Parameters
+
+### validator
+
+`unknown`
+
+## Returns
+
+`validator is StandardSchema`
+
+## Defined in
+
+[packages/form-core/src/standardSchemaValidator.ts:87](https://github.com/TanStack/form/blob/main/packages/form-core/src/standardSchemaValidator.ts#L87)
diff --git a/docs/reference/functions/standardschemavalidator.md b/docs/reference/functions/standardschemavalidator.md
new file mode 100644
index 000000000..6e6c0f910
--- /dev/null
+++ b/docs/reference/functions/standardschemavalidator.md
@@ -0,0 +1,24 @@
+---
+id: standardSchemaValidator
+title: standardSchemaValidator
+---
+
+# Function: standardSchemaValidator()
+
+```ts
+function standardSchemaValidator(params): Validator>
+```
+
+## Parameters
+
+### params
+
+`Params` = `{}`
+
+## Returns
+
+`Validator`\<`unknown`, `StandardSchema`\<`any`, `any`\>\>
+
+## Defined in
+
+[packages/form-core/src/standardSchemaValidator.ts:49](https://github.com/TanStack/form/blob/main/packages/form-core/src/standardSchemaValidator.ts#L49)
diff --git a/docs/reference/index.md b/docs/reference/index.md
index 48e927f20..975ec41e5 100644
--- a/docs/reference/index.md
+++ b/docs/reference/index.md
@@ -39,4 +39,6 @@ title: "@tanstack/form-core"
## Functions
- [formOptions](functions/formoptions.md)
+- [isStandardSchemaValidator](functions/isstandardschemavalidator.md)
- [mergeForm](functions/mergeform.md)
+- [standardSchemaValidator](functions/standardschemavalidator.md)
diff --git a/docs/reference/interfaces/fieldapioptions.md b/docs/reference/interfaces/fieldapioptions.md
index 32032c9e7..04bfa6eeb 100644
--- a/docs/reference/interfaces/fieldapioptions.md
+++ b/docs/reference/interfaces/fieldapioptions.md
@@ -39,7 +39,7 @@ If `true`, always run async validation, even if there are errors emitted during
#### Defined in
-[packages/form-core/src/FieldApi.ts:346](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L346)
+[packages/form-core/src/FieldApi.ts:350](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L350)
***
@@ -57,7 +57,7 @@ The default time to debounce async validation if there is not a more specific de
#### Defined in
-[packages/form-core/src/FieldApi.ts:342](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L342)
+[packages/form-core/src/FieldApi.ts:346](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L346)
***
@@ -75,7 +75,7 @@ An optional object with default metadata for the field.
#### Defined in
-[packages/form-core/src/FieldApi.ts:364](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L364)
+[packages/form-core/src/FieldApi.ts:368](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L368)
***
@@ -93,7 +93,7 @@ An optional default value for the field.
#### Defined in
-[packages/form-core/src/FieldApi.ts:338](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L338)
+[packages/form-core/src/FieldApi.ts:342](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L342)
***
@@ -105,7 +105,7 @@ form: FormApi;
#### Defined in
-[packages/form-core/src/FieldApi.ts:397](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L397)
+[packages/form-core/src/FieldApi.ts:401](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L401)
***
@@ -123,7 +123,7 @@ A list of listeners which attach to the corresponding events
#### Defined in
-[packages/form-core/src/FieldApi.ts:368](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L368)
+[packages/form-core/src/FieldApi.ts:372](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L372)
***
@@ -141,7 +141,7 @@ The field name. The type will be `DeepKeys` to ensure your name is
#### Defined in
-[packages/form-core/src/FieldApi.ts:334](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L334)
+[packages/form-core/src/FieldApi.ts:338](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L338)
***
@@ -159,7 +159,7 @@ A validator provided by an extension, like `yupValidator` from `@tanstack/yup-fo
#### Defined in
-[packages/form-core/src/FieldApi.ts:350](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L350)
+[packages/form-core/src/FieldApi.ts:354](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L354)
***
@@ -177,4 +177,4 @@ A list of validators to pass to the field
#### Defined in
-[packages/form-core/src/FieldApi.ts:354](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L354)
+[packages/form-core/src/FieldApi.ts:358](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L358)
diff --git a/docs/reference/interfaces/fieldlisteners.md b/docs/reference/interfaces/fieldlisteners.md
index 859cabd59..713096b1d 100644
--- a/docs/reference/interfaces/fieldlisteners.md
+++ b/docs/reference/interfaces/fieldlisteners.md
@@ -27,7 +27,7 @@ optional onBlur: FieldListenerFn` to ensure your name is
#### Defined in
-[packages/form-core/src/FieldApi.ts:334](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L334)
+[packages/form-core/src/FieldApi.ts:338](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L338)
***
@@ -119,7 +119,7 @@ A validator provided by an extension, like `yupValidator` from `@tanstack/yup-fo
#### Defined in
-[packages/form-core/src/FieldApi.ts:350](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L350)
+[packages/form-core/src/FieldApi.ts:354](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L354)
***
@@ -133,4 +133,4 @@ A list of validators to pass to the field
#### Defined in
-[packages/form-core/src/FieldApi.ts:354](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L354)
+[packages/form-core/src/FieldApi.ts:358](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L358)
diff --git a/docs/reference/interfaces/fieldvalidators.md b/docs/reference/interfaces/fieldvalidators.md
index 5b1d8ff3f..7448e6d01 100644
--- a/docs/reference/interfaces/fieldvalidators.md
+++ b/docs/reference/interfaces/fieldvalidators.md
@@ -36,7 +36,7 @@ z.string().min(1) // if `zodAdapter` is passed
#### Defined in
-[packages/form-core/src/FieldApi.ts:217](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L217)
+[packages/form-core/src/FieldApi.ts:221](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L221)
***
@@ -57,7 +57,7 @@ z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' }) //
#### Defined in
-[packages/form-core/src/FieldApi.ts:230](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L230)
+[packages/form-core/src/FieldApi.ts:234](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L234)
***
@@ -73,7 +73,7 @@ If set to a number larger than 0, will debounce the async validation event by th
#### Defined in
-[packages/form-core/src/FieldApi.ts:243](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L243)
+[packages/form-core/src/FieldApi.ts:247](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L247)
***
@@ -87,7 +87,7 @@ An optional list of field names that should trigger this field's `onBlur` and `o
#### Defined in
-[packages/form-core/src/FieldApi.ts:247](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L247)
+[packages/form-core/src/FieldApi.ts:251](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L251)
***
@@ -108,7 +108,7 @@ z.string().min(1) // if `zodAdapter` is passed
#### Defined in
-[packages/form-core/src/FieldApi.ts:181](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L181)
+[packages/form-core/src/FieldApi.ts:185](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L185)
***
@@ -129,7 +129,7 @@ z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' }) //
#### Defined in
-[packages/form-core/src/FieldApi.ts:194](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L194)
+[packages/form-core/src/FieldApi.ts:198](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L198)
***
@@ -145,7 +145,7 @@ If set to a number larger than 0, will debounce the async validation event by th
#### Defined in
-[packages/form-core/src/FieldApi.ts:206](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L206)
+[packages/form-core/src/FieldApi.ts:210](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L210)
***
@@ -159,7 +159,7 @@ An optional list of field names that should trigger this field's `onChange` and
#### Defined in
-[packages/form-core/src/FieldApi.ts:210](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L210)
+[packages/form-core/src/FieldApi.ts:214](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L214)
***
@@ -173,7 +173,7 @@ An optional function that takes a param of `formApi` which is a generic type of
#### Defined in
-[packages/form-core/src/FieldApi.ts:168](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L168)
+[packages/form-core/src/FieldApi.ts:172](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L172)
***
@@ -194,7 +194,7 @@ z.string().min(1) // if `zodAdapter` is passed
#### Defined in
-[packages/form-core/src/FieldApi.ts:254](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L254)
+[packages/form-core/src/FieldApi.ts:258](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L258)
***
@@ -215,4 +215,4 @@ z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' }) //
#### Defined in
-[packages/form-core/src/FieldApi.ts:267](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L267)
+[packages/form-core/src/FieldApi.ts:271](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L271)
diff --git a/docs/reference/interfaces/formoptions.md b/docs/reference/interfaces/formoptions.md
index 3e5252feb..af7cc1a83 100644
--- a/docs/reference/interfaces/formoptions.md
+++ b/docs/reference/interfaces/formoptions.md
@@ -25,7 +25,7 @@ If true, always run async validation, even when sync validation has produced an
#### Defined in
-[packages/form-core/src/FormApi.ts:154](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L154)
+[packages/form-core/src/FormApi.ts:163](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L163)
***
@@ -39,7 +39,7 @@ Optional time in milliseconds if you want to introduce a delay before firing off
#### Defined in
-[packages/form-core/src/FormApi.ts:158](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L158)
+[packages/form-core/src/FormApi.ts:167](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L167)
***
@@ -53,7 +53,7 @@ The default state for the form.
#### Defined in
-[packages/form-core/src/FormApi.ts:150](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L150)
+[packages/form-core/src/FormApi.ts:159](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L159)
***
@@ -67,7 +67,7 @@ Set initial values for your form.
#### Defined in
-[packages/form-core/src/FormApi.ts:146](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L146)
+[packages/form-core/src/FormApi.ts:155](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L155)
***
@@ -97,7 +97,7 @@ A function to be called when the form is submitted, what should happen once the
#### Defined in
-[packages/form-core/src/FormApi.ts:170](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L170)
+[packages/form-core/src/FormApi.ts:179](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L179)
***
@@ -127,7 +127,7 @@ Specify an action for scenarios where the user tries to submit an invalid form.
#### Defined in
-[packages/form-core/src/FormApi.ts:177](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L177)
+[packages/form-core/src/FormApi.ts:186](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L186)
***
@@ -139,7 +139,7 @@ optional transform: FormTransform;
#### Defined in
-[packages/form-core/src/FormApi.ts:181](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L181)
+[packages/form-core/src/FormApi.ts:190](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L190)
***
@@ -153,7 +153,7 @@ A validator adapter to support usage of extra validation types (IE: Zod, Yup, or
#### Defined in
-[packages/form-core/src/FormApi.ts:162](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L162)
+[packages/form-core/src/FormApi.ts:171](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L171)
***
@@ -167,4 +167,4 @@ A list of validators to pass to the form
#### Defined in
-[packages/form-core/src/FormApi.ts:166](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L166)
+[packages/form-core/src/FormApi.ts:175](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L175)
diff --git a/docs/reference/interfaces/formvalidators.md b/docs/reference/interfaces/formvalidators.md
index 9f750dc52..bd0ad8870 100644
--- a/docs/reference/interfaces/formvalidators.md
+++ b/docs/reference/interfaces/formvalidators.md
@@ -23,7 +23,7 @@ Optional function that validates the form data when a field loses focus, returns
#### Defined in
-[packages/form-core/src/FormApi.ts:110](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L110)
+[packages/form-core/src/FormApi.ts:119](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L119)
***
@@ -37,7 +37,7 @@ Optional onBlur asynchronous validation method for when a field loses focus retu
#### Defined in
-[packages/form-core/src/FormApi.ts:114](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L114)
+[packages/form-core/src/FormApi.ts:123](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L123)
***
@@ -51,7 +51,7 @@ The default time in milliseconds that if set to a number larger than 0, will deb
#### Defined in
-[packages/form-core/src/FormApi.ts:118](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L118)
+[packages/form-core/src/FormApi.ts:127](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L127)
***
@@ -65,7 +65,7 @@ Optional function that checks the validity of your data whenever a value changes
#### Defined in
-[packages/form-core/src/FormApi.ts:98](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L98)
+[packages/form-core/src/FormApi.ts:107](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L107)
***
@@ -79,7 +79,7 @@ Optional onChange asynchronous counterpart to onChange. Useful for more complex
#### Defined in
-[packages/form-core/src/FormApi.ts:102](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L102)
+[packages/form-core/src/FormApi.ts:111](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L111)
***
@@ -93,7 +93,7 @@ The default time in milliseconds that if set to a number larger than 0, will deb
#### Defined in
-[packages/form-core/src/FormApi.ts:106](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L106)
+[packages/form-core/src/FormApi.ts:115](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L115)
***
@@ -107,7 +107,7 @@ Optional function that fires as soon as the component mounts.
#### Defined in
-[packages/form-core/src/FormApi.ts:94](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L94)
+[packages/form-core/src/FormApi.ts:103](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L103)
***
@@ -119,7 +119,7 @@ optional onSubmit: FormValidateOrFn;
#### Defined in
-[packages/form-core/src/FormApi.ts:119](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L119)
+[packages/form-core/src/FormApi.ts:128](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L128)
***
@@ -131,4 +131,4 @@ optional onSubmitAsync: FormAsyncValidateOrFn;
#### Defined in
-[packages/form-core/src/FormApi.ts:120](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L120)
+[packages/form-core/src/FormApi.ts:129](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L129)
diff --git a/docs/reference/type-aliases/fieldinfo.md b/docs/reference/type-aliases/fieldinfo.md
index 1f11721c6..55b60f198 100644
--- a/docs/reference/type-aliases/fieldinfo.md
+++ b/docs/reference/type-aliases/fieldinfo.md
@@ -37,4 +37,4 @@ A record of field validation internal handling.
## Defined in
-[packages/form-core/src/FormApi.ts:197](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L197)
+[packages/form-core/src/FormApi.ts:206](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L206)
diff --git a/docs/reference/type-aliases/fieldmeta.md b/docs/reference/type-aliases/fieldmeta.md
index 8d1879752..45abbf8b9 100644
--- a/docs/reference/type-aliases/fieldmeta.md
+++ b/docs/reference/type-aliases/fieldmeta.md
@@ -71,4 +71,4 @@ A flag indicating whether the field is currently being validated.
## Defined in
-[packages/form-core/src/FieldApi.ts:403](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L403)
+[packages/form-core/src/FieldApi.ts:407](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L407)
diff --git a/docs/reference/type-aliases/fieldserrormapfromvalidator.md b/docs/reference/type-aliases/fieldserrormapfromvalidator.md
index a9416909d..874056b36 100644
--- a/docs/reference/type-aliases/fieldserrormapfromvalidator.md
+++ b/docs/reference/type-aliases/fieldserrormapfromvalidator.md
@@ -15,4 +15,4 @@ type FieldsErrorMapFromValidator: Partial,
## Defined in
-[packages/form-core/src/FormApi.ts:26](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L26)
+[packages/form-core/src/FormApi.ts:31](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L31)
diff --git a/docs/reference/type-aliases/fieldstate.md b/docs/reference/type-aliases/fieldstate.md
index eb141b621..f5d5143b7 100644
--- a/docs/reference/type-aliases/fieldstate.md
+++ b/docs/reference/type-aliases/fieldstate.md
@@ -35,4 +35,4 @@ The current value of the field.
## Defined in
-[packages/form-core/src/FieldApi.ts:437](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L437)
+[packages/form-core/src/FieldApi.ts:441](https://github.com/TanStack/form/blob/main/packages/form-core/src/FieldApi.ts#L441)
diff --git a/docs/reference/type-aliases/formstate.md b/docs/reference/type-aliases/formstate.md
index c5c3f1ebb..d4c96f95f 100644
--- a/docs/reference/type-aliases/formstate.md
+++ b/docs/reference/type-aliases/formstate.md
@@ -179,4 +179,4 @@ The current values of the form fields.
## Defined in
-[packages/form-core/src/FormApi.ts:219](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L219)
+[packages/form-core/src/FormApi.ts:228](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L228)
diff --git a/docs/reference/type-aliases/formvalidatefn.md b/docs/reference/type-aliases/formvalidatefn.md
index 5930b139a..097d4837a 100644
--- a/docs/reference/type-aliases/formvalidatefn.md
+++ b/docs/reference/type-aliases/formvalidatefn.md
@@ -33,4 +33,4 @@ type FormValidateFn: (props) => FormValidationError: object;
## Defined in
-[packages/form-core/src/FormApi.ts:61](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L61)
+[packages/form-core/src/FormApi.ts:68](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L68)
diff --git a/docs/reference/type-aliases/validationmeta.md b/docs/reference/type-aliases/validationmeta.md
index d1195bde7..31eb09f9f 100644
--- a/docs/reference/type-aliases/validationmeta.md
+++ b/docs/reference/type-aliases/validationmeta.md
@@ -23,4 +23,4 @@ An abort controller stored in memory to cancel previous async validation attempt
## Defined in
-[packages/form-core/src/FormApi.ts:187](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L187)
+[packages/form-core/src/FormApi.ts:196](https://github.com/TanStack/form/blob/main/packages/form-core/src/FormApi.ts#L196)
diff --git a/examples/angular/valibot/package.json b/examples/angular/valibot/package.json
index 7dda5d64c..0ed16b8b4 100644
--- a/examples/angular/valibot/package.json
+++ b/examples/angular/valibot/package.json
@@ -22,7 +22,7 @@
"@tanstack/valibot-form-adapter": "^0.39.1",
"rxjs": "^7.8.1",
"tslib": "^2.8.1",
- "valibot": "^1.0.0-beta.5",
+ "valibot": "^1.0.0-beta.9",
"zone.js": "^0.15.0"
},
"devDependencies": {
diff --git a/examples/angular/zod/package.json b/examples/angular/zod/package.json
index 0f0117779..62af37c98 100644
--- a/examples/angular/zod/package.json
+++ b/examples/angular/zod/package.json
@@ -22,7 +22,7 @@
"@tanstack/zod-form-adapter": "^0.39.1",
"rxjs": "^7.8.1",
"tslib": "^2.8.1",
- "zod": "^3.23.8",
+ "zod": "^3.24.0",
"zone.js": "^0.15.0"
},
"devDependencies": {
diff --git a/examples/react/standard-schema/.eslintrc.cjs b/examples/react/standard-schema/.eslintrc.cjs
new file mode 100644
index 000000000..35853b617
--- /dev/null
+++ b/examples/react/standard-schema/.eslintrc.cjs
@@ -0,0 +1,11 @@
+// @ts-check
+
+/** @type {import('eslint').Linter.Config} */
+const config = {
+ extends: ['plugin:react/recommended', 'plugin:react-hooks/recommended'],
+ rules: {
+ 'react/no-children-prop': 'off',
+ },
+}
+
+module.exports = config
diff --git a/examples/react/standard-schema/.gitignore b/examples/react/standard-schema/.gitignore
new file mode 100644
index 000000000..4673b022e
--- /dev/null
+++ b/examples/react/standard-schema/.gitignore
@@ -0,0 +1,27 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+
+pnpm-lock.yaml
+yarn.lock
+package-lock.json
+
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/examples/react/standard-schema/README.md b/examples/react/standard-schema/README.md
new file mode 100644
index 000000000..1cf889265
--- /dev/null
+++ b/examples/react/standard-schema/README.md
@@ -0,0 +1,6 @@
+# Example
+
+To run this example:
+
+- `npm install`
+- `npm run dev`
diff --git a/examples/react/standard-schema/index.html b/examples/react/standard-schema/index.html
new file mode 100644
index 000000000..ae98ae4a2
--- /dev/null
+++ b/examples/react/standard-schema/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+ TanStack Form React Standard Schema Example App
+
+
+
+
+
+
+
diff --git a/examples/react/standard-schema/package.json b/examples/react/standard-schema/package.json
new file mode 100644
index 000000000..614285d4e
--- /dev/null
+++ b/examples/react/standard-schema/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@tanstack/form-example-react-standard-schema",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite --port=3001",
+ "build": "vite build",
+ "preview": "vite preview",
+ "test:types": "tsc"
+ },
+ "dependencies": {
+ "@tanstack/react-form": "^0.39.2",
+ "arktype": "2.0.0-rc.23",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "valibot": "^1.0.0-beta.9",
+ "zod": "^3.24.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.3.3",
+ "@types/react-dom": "^18.3.0",
+ "@vitejs/plugin-react": "^4.3.3",
+ "vite": "^5.4.11"
+ },
+ "browserslist": {
+ "production": [
+ ">0.2%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 safari version"
+ ]
+ }
+}
diff --git a/examples/react/standard-schema/public/emblem-light.svg b/examples/react/standard-schema/public/emblem-light.svg
new file mode 100644
index 000000000..a58e69ad5
--- /dev/null
+++ b/examples/react/standard-schema/public/emblem-light.svg
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/examples/react/standard-schema/src/index.tsx b/examples/react/standard-schema/src/index.tsx
new file mode 100644
index 000000000..a9595cdc9
--- /dev/null
+++ b/examples/react/standard-schema/src/index.tsx
@@ -0,0 +1,138 @@
+import { useForm } from '@tanstack/react-form'
+import { type } from 'arktype'
+import * as React from 'react'
+import { createRoot } from 'react-dom/client'
+import * as v from 'valibot'
+import { z } from 'zod'
+import type { FieldApi } from '@tanstack/react-form'
+
+function FieldInfo({ field }: { field: FieldApi }) {
+ return (
+ <>
+ {field.state.meta.isTouched && field.state.meta.errors.length ? (
+ {field.state.meta.errors.join(',')}
+ ) : null}
+ {field.state.meta.isValidating ? 'Validating...' : null}
+ >
+ )
+}
+
+// @ts-ignore - Might be unused for demo purposes
+const ZodSchema = z.object({
+ firstName: z
+ .string()
+ .min(3, '[Zod] You must have a length of at least 3')
+ .startsWith('A', "[Zod] First name must start with 'A'"),
+ lastName: z.string().min(3, '[Zod] You must have a length of at least 3'),
+})
+
+// @ts-ignore - Might be unused for demo purposes
+const ValibotSchema = v.object({
+ firstName: v.pipe(
+ v.string(),
+ v.minLength(3, '[Valibot] You must have a length of at least 3'),
+ v.startsWith('A', "[Valibot] First name must start with 'A'"),
+ ),
+ lastName: v.pipe(
+ v.string(),
+ v.minLength(3, '[Valibot] You must have a length of at least 3'),
+ ),
+})
+
+// @ts-ignore - Might be unused for demo purposes
+const ArkTypeSchema = type({
+ firstName: 'string >= 3',
+ lastName: 'string >= 3',
+})
+
+export default function App() {
+ const form = useForm({
+ defaultValues: {
+ firstName: '',
+ lastName: '',
+ },
+ validators: {
+ // DEMO: You can switch between schemas seamlessly
+ onChange: ZodSchema,
+ // onChange: ValibotSchema,
+ // onChange: ArkTypeSchema,
+ },
+ onSubmit: async ({ value }) => {
+ // Do something with form data
+ console.log(value)
+ },
+ // DEMO: There's no need to pass an adapter! You may use it only if you need to pass custom options.
+ // validatorAdapter: standardSchemaValidator(),
+ // validatorAdapter: standardSchemaValidator({ transformErrors: (issues) => issues.map((issue) => issue.message)[0] }),
+ })
+
+ return (
+