Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zod preprocess does not generate error #635

Open
dhulme opened this issue Oct 12, 2023 · 5 comments
Open

Zod preprocess does not generate error #635

dhulme opened this issue Oct 12, 2023 · 5 comments

Comments

@dhulme
Copy link

dhulme commented Oct 12, 2023

Describe the bug
Using z.preprocess() instead of z.coerce() in a validation schema does not generate an error. When using zod directly, both of these approaches generate the same error.

To Reproduce
Steps to reproduce the behavior:

  1. On codesandbox link, click submit button
  2. 'Age coerce' input generates an error, but 'Age preprocess' does not
  3. Note how the errors produced from zod directly are identical in the console

Codesandbox link (Required)
https://codesandbox.io/s/react-hook-form-zod-preprocess-mn8sy4?file=/src/index.js

Expected behavior
An error should be generated

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser: Chrome
  • Version : 117

Additional context
Add any other context about the problem here.

@yukukotani
Copy link

I have the same issue here.

Interestingly, it works if agePreprocess condition is the first property of the schema object.

 const SignupSchema = z.object({
-  ageCoerce,
-  agePreprocess,
+  agePreprocess,
+  ageCoerce,
 });

@dhulme
Copy link
Author

dhulme commented Oct 23, 2023

That is interesting. I can confirm the same behaviour.

@stackline
Copy link

stackline commented Oct 25, 2023

@dhulme

I have the same issue.
I downgraded the zod version from 3.22.3 to 3.21.4 and the issue was resolved, so I would like to share it.

Codesandbox link (Changed zod version from 3.22.3 to 3.21.4)
https://codesandbox.io/s/react-hook-form-zod-preprocess-forked-cqm66q

Update:
I have also opened an issue on the zod repository.

@Austin-Love
Copy link

We have found the same behavior with the fields being order-depdendent. We replaced our preprocessors with transforms, and they work similarly to how the preprocessors worked in 3.21.4. Downgrading is not an option for us due to a CVE in 3.21.4 our cyber team flagged.

@stackline
Copy link

@dhulme

The issue commented on #635 (comment) has been resolved by the following pr fix for zod, so I would like to share it.

And this fix is included in v3.23.0 of zod.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants