Integration guides
Troubleshooting
Diagnose input, validation, nested configuration, and wizard issues.
| Symptom | What to check |
|---|---|
| Submission does not run | Wrap ErlForm in an HTML form, preventDefault, and call form.handleSubmit |
| No validation | Connect the schema to useForm validators, not only to ErlForm |
| Field is missing | Check showIf, wizard fields, and schema support |
| Email still renders as text | Use z.email() rather than checks on a plain z.string() |
| Select loses its value | The value is no longer in options; the renderer clears it |
| Empty number fails validation | Clearing produces undefined; allow it if appropriate |
| Empty optional string fails | Empty string differs from undefined; adjust the schema |
| Callback reads the wrong field | Nested children receive their immediate parent, not always the root |
| Child settings collide | Use scoped configuration and item instead of flat fallback keys |
| Fields do not share a row | Put root fields in the same section to share a grid |
| Empty record | Initialize keys; there is no built-in key editor |
| Server error remains | Clear each path explicitly with an empty array |
| Date shifts by one day | Format local Date values locally, not by slicing UTC ISO |
| File is not sent | Use FormData rather than JSON |
| onBlur does not run | Use a custom input that forwards handleBlur |
| Next skips validation | Provide wizard.validateStep |
| Hidden field prevents submit | Align the conditional schema with showIf and clearOnHide |
Start with the Quick Start, reduce the schema to one field, and add configuration gradually. Check the support matrix for 1.0.0 limits, then report a bug if needed. Interactive examples are available on each feature page and in the playground.