dillon1000/react

Commit

Suspensily committing a prerendered tree (#26434)

Prerendering a tree (i.e. with Offscreen) should not suspend the commit
phase, because the content is not yet visible. However, when revealing a
prerendered tree, we should suspend the commit phase if resources in the
prerendered tree haven't finished loading yet.

To do this properly, we need to visit all the visible nodes in the tree
that might possibly suspend. This includes nodes in the current tree,
because even though they were already "mounted", the resources might not
have loaded yet, because we didn't suspend when it was prerendered.

We will need to add this capability to the Offscreen component's
"manual" mode, too. Something like a `ready()` method that returns a
promise that resolves when the tree has fully loaded.

Also includes some fixes to #26450. See PR for details.
Browse files
Changed paths9 files
First-parent comparison
M packages/react-dom-bindings/src/client/ReactDOMHostConfig.js ModifiedM packages/react-dom/src/__tests__/ReactDOMFloat-test.js ModifiedM packages/react-reconciler/src/ReactFiberCommitWork.js ModifiedM packages/react-reconciler/src/ReactFiberCompleteWork.js ModifiedM packages/react-reconciler/src/ReactFiberFlags.js ModifiedM packages/react-reconciler/src/ReactFiberHostConfigWithNoResources.js ModifiedM packages/react-reconciler/src/ReactFiberWorkLoop.js ModifiedM packages/react-reconciler/src/__tests__/ReactSuspenseyCommitPhase-test.js ModifiedM packages/react-reconciler/src/forks/ReactFiberHostConfig.custom.js Modified
Patch

Files changed

Rendering syntax-highlighted changes…