dillon1000/react

Commit

Make prerendering always non-blocking with fix (#31452)

We've previously failed to land this change due to some internal apps
seeing infinite render loops due to external store state updates during
render. It turns out that since the `renderWasConcurrent` var was moved
into the do block, the sync render triggered from the external store
check was stuck with a `RootSuspended` `exitStatus`. So this is not
unique to sibling prerendering but more generally related to how we
handle update to a sync external store during render.

We've tested this build against local repros which now render without
crashes. We will try to add a unit test to cover the scenario as well.

---------

Co-authored-by: Andrew Clark <[email protected]>
Co-authored-by: Rick Hanlon <[email protected]>
Browse files
Changed paths7 files
First-parent comparison
M packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.js ModifiedM packages/react-reconciler/src/ReactFiberLane.js ModifiedM packages/react-reconciler/src/ReactFiberRootScheduler.js ModifiedM packages/react-reconciler/src/ReactFiberWorkLoop.js ModifiedM packages/react-reconciler/src/__tests__/ReactDeferredValue-test.js ModifiedM packages/react-reconciler/src/__tests__/ReactSiblingPrerendering-test.js ModifiedM packages/react-reconciler/src/__tests__/useSyncExternalStore-test.js Modified
Patch

Files changed

Rendering syntax-highlighted changes…