react-jsonschema-form
react-jsonschema-form copied to clipboard
Recursive json-schema definition causes the browser to hang and eventually stack overflow
Prerequisites
- [X] I have searched the existing issues
- [X] I understand that providing a SSCCE example is tremendously useful to the maintainers.
- [X] I have read the documentation
- [X] Ideally, I'm providing a sample JSFiddle, Codesandbox.io or preferably a shared playground link demonstrating the issue.
What theme are you using?
core
Version
5.x
Current Behavior
Schema:
{
"title": "A registration form",
"description": "A simple form example.",
"type": "object",
"properties": {
"child": {
"$ref": "#"
}
}
}
Expected Behavior
Not to hang aka eventually stack overflow
Steps To Reproduce
Paste that schema into the playground, that schema is a simplification of what happens when I attempt to use the draft-07 json-schema meta-schema.
Environment
N/A
Anything else?
@heath-freenome , as requested in #3560. I dont really know anything about react anymore, but just poking around for a bit, the Form seems to be trying to render a recursive reference. It seems like the correct behavior should either be an error something like: "Hey, we don't allow recursive references", or just build the feature which marks definitions as seen, which may require a bit of a change in strat from DFS to BFS of the schema tree.
Also, im not sure if its a goal of this project, but it seems to me some good test cases are actually the json-schema meta-schemas. But I recon that is a separate issue altogether.
@estk Thanks for creating a separate issue. At this time, we think this is an uncommon edge case. There are likely workarounds by referencing defined objects. That said, I do agree that we should prevent the infinite recursion/stack overflow issue and probably test against the JSONSchema meta-schemas. For now, since we don't have a real use case, we're going to mark this as help-wanted and re-evaluate if something else comes up.