Skip to content

Commit 8d083bd

Browse files
authored
feat: support Zod 4 (#777)
* Add Zod 4 support * Format * Add fallbacks * Fix inference * Bump lockfile dep
1 parent 3bc2ad5 commit 8d083bd

File tree

20 files changed

+809
-73
lines changed

20 files changed

+809
-73
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Example:
6868
```tsx
6969
import { useForm } from 'react-hook-form';
7070
import { zodResolver } from '@hookform/resolvers/zod';
71-
import { z } from 'zod';
71+
import { z } from 'zod'; // or 'zod/v4'
7272

7373
const schema = z.object({
7474
id: z.number(),
@@ -175,7 +175,7 @@ const App = () => {
175175
};
176176
```
177177

178-
### [Zod](https://github.com/vriad/zod)
178+
### [Zod](https://github.com/colinhacks/zod)
179179

180180
TypeScript-first schema validation with static type inference
181181

@@ -186,7 +186,7 @@ TypeScript-first schema validation with static type inference
186186
```tsx
187187
import { useForm } from 'react-hook-form';
188188
import { zodResolver } from '@hookform/resolvers/zod';
189-
import { z } from 'zod';
189+
import { z } from 'zod'; // or 'zod/v4'
190190

191191
const schema = z.object({
192192
name: z.string().min(1, { message: 'Required' }),

bun.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"vite-tsconfig-paths": "^5.1.4",
5555
"vitest": "^3.0.9",
5656
"yup": "^1.6.1",
57-
"zod": "^3.24.2",
57+
"zod": "^3.25.0",
5858
},
5959
"peerDependencies": {
6060
"react-hook-form": "^7.55.0",
@@ -1444,7 +1444,7 @@
14441444

14451445
"yup": ["yup@1.6.1", "", { "dependencies": { "property-expr": "^2.0.5", "tiny-case": "^1.0.3", "toposort": "^2.0.2", "type-fest": "^2.19.0" } }, "sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA=="],
14461446

1447-
"zod": ["zod@3.24.2", "", {}, "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ=="],
1447+
"zod": ["zod@3.25.51", "", {}, "sha512-TQSnBldh+XSGL+opiSIq0575wvDPqu09AqWe1F7JhUMKY+M91/aGlK4MhpVNO7MgYfHcVCB1ffwAUTJzllKJqg=="],
14481448

14491449
"@asamuzakjp/css-color/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
14501450

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@
314314
"vite-tsconfig-paths": "^5.1.4",
315315
"vitest": "^3.0.9",
316316
"yup": "^1.6.1",
317-
"zod": "^3.24.2"
317+
"zod": "^3.25.0"
318318
},
319319
"peerDependencies": {
320320
"react-hook-form": "^7.55.0"

standard-schema/src/__tests__/__fixtures__/data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { StandardSchemaV1 } from '@standard-schema/spec';
22
import { Field, InternalFieldName } from 'react-hook-form';
3-
import { z } from 'zod';
3+
import { z } from 'zod/v3';
44

55
export const schema = z
66
.object({

standard-schema/src/__tests__/standard-schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Resolver, SubmitHandler, useForm } from 'react-hook-form';
2-
import { z } from 'zod';
2+
import { z } from 'zod/v3';
33
import { standardSchemaResolver } from '..';
44
import {
55
customSchema,

typebox/src/__tests__/typebox.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import { Type } from '@sinclair/typebox';
2+
import { TypeCompiler } from '@sinclair/typebox/compiler';
13
import { Resolver, SubmitHandler, useForm } from 'react-hook-form';
24
import { typeboxResolver } from '..';
35
import { fields, invalidData, schema, validData } from './__fixtures__/data';
4-
import { Type } from '@sinclair/typebox';
5-
import { TypeCompiler } from '@sinclair/typebox/compiler';
66

77
const shouldUseNativeValidation = false;
88

typeschema/src/__tests__/Form-native-validation.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import user from '@testing-library/user-event';
33
import type { Infer } from '@typeschema/main';
44
import React from 'react';
55
import { useForm } from 'react-hook-form';
6-
import { z } from 'zod';
6+
import { z } from 'zod/v3';
77
import { typeschemaResolver } from '..';
88

99
const USERNAME_REQUIRED_MESSAGE = 'username field is required';

typeschema/src/__tests__/Form.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import user from '@testing-library/user-event';
33
import type { Infer } from '@typeschema/main';
44
import React from 'react';
55
import { useForm } from 'react-hook-form';
6-
import { z } from 'zod';
6+
import { z } from 'zod/v3';
77
import { typeschemaResolver } from '..';
88

99
const schema = z.object({

typeschema/src/__tests__/__fixtures__/data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Field, InternalFieldName } from 'react-hook-form';
2-
import { z } from 'zod';
2+
import { z } from 'zod/v3';
33

44
export const schema = z
55
.object({

typeschema/src/__tests__/typeschema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as typeschema from '@typeschema/main';
22
import { Resolver, SubmitHandler, useForm } from 'react-hook-form';
3-
import { z } from 'zod';
3+
import { z } from 'zod/v3';
44
import { typeschemaResolver } from '..';
55
import { fields, invalidData, schema, validData } from './__fixtures__/data';
66

0 commit comments

Comments
 (0)