[DevTools] Stop mounting empty roots #34467
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Stacked on #34464
DevTools previously always mounted the Root Fiber when it first encountered it. However, it also considered it newly mounted when we went from no children to some children. Duplicate mounts are not supported by the Store.
This was especially noticeable if you error in the shell e.g.
render(<BrokenRender>)
and then recover later (or just go fromrender(null)
torender(<Something />)
). This case is already covered by our runtime tests:react/packages/react-dom/src/__tests__/ReactErrorBoundaries-test.internal.js
Lines 698 to 700 in 436bee1
The alternate to this would be to always consider commits as mounts or updates and bring back
handleCommitFiberUnmount
. Since we never fully removedhandleCommitFiberUnmount
, that may be save? Though I wouldn't know if that's compatible with all renderers. So not mounting new, empty roots seems simpler considering we already treated updates to empty roots as unmounts.