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
Unexpected error hoisting #391
Comments
This is a tricky one 😅 As checkbox does not contribute to the FormData unless it is checked, there is no way Conform can construct the flags object. It is basically sending an empty object to zod and zod stop parsing the details of This would not be an issue if you have a text input inside the flags object, so Conform manages to construct an object even nothing is filled, |
I wonder if this is something safe to do with automatic type coercion const schema = z.object({
flags: z.preprocess(value => {
if (typeof value !== 'undefined') {
return value;
}
// Set it a default object if it's not available
return {};
}, z.object({
one: z.boolean(),
two: z.boolean(),
}),
}); |
Yeah, this actually came up by accident— Your suggested solution looks sound to me, I can't imagine any reason it would be dangerous to default every object in a schema to empty (though I'm hardly an expert in this kind of thing!). Edit: It turns out this issue can occur whether your boolean fields are optional or required. |
I think the value should default to an empty object only if the object schema is required. If the object is optional, we should keep it as is. |
I agree! I do have at least one use case where I might want to explicitly mark an object as |
I updated the StackBlitz to show two different workarounds for two different scenarios.
|
Note this existing feature request for |
Describe the bug and the expected behavior
If all of the fields in a fieldset are missing, the error is unexpectedly "hoisted" from each field to the fieldset.
Conform version
1.0.0-rc.0
Steps to Reproduce the Bug or Issue
https://stackblitz.com/edit/remix-run-remix-zhkgb3?file=app%2Froutes%2Fworkaround.2.tsx
Expected result:
Actual result:
Errors at the fieldset level are unexpected, and most forms won't know how to render these.
What browsers are you seeing the problem on?
No response
Screenshots or Videos
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: