Skip to content

Commit 08d69e2

Browse files
committed
[Fizz] Support basic SuspenseList forwards/backwards revealOrder (#33306)
Basically we track a `SuspenseListRow` on the task. These keep track of "pending tasks" that block the row. A row is blocked by: - First itself completing rendering. - A previous row completing. - Any tasks inside the row and before the Suspense boundary inside the row. This is mainly because we don't yet know if we'll discover more SuspenseBoundaries. - Previous row's SuspenseBoundaries completing. If a boundary might get outlined, then we can't consider it completed until we have written it because it determined whether other future boundaries in the row can finish. This is just handling basic semantics. Features not supported yet that need follow ups later: - CSS dependencies of previous rows should be added as dependencies of future row's suspense boundary. Because otherwise if the client is blocked on CSS then a previous row could be blocked but the server doesn't know it. - I need a second pass on nested SuspenseList semantics. - `revealOrder="together"` - `tail="hidden"`/`tail="collapsed"`. This needs some new runtime semantics to the Fizz runtime and to allow the hydration to handle missing rows in the HTML. This should also be future compatible with AsyncIterable where we don't know how many rows upfront. - Need to double check resuming semantics. --------- Co-authored-by: Sebastian "Sebbie" Silbermann <[email protected]> DiffTrain build for [5dc1b21](5dc1b21)
1 parent 1ee6786 commit 08d69e2

36 files changed

+2706
-1103
lines changed

compiled/facebook-www/REVISION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
a3abf5f2f835ad0c61e2325f5cbac2d1d9045517
1+
5dc1b212c330b6f456789f8d58e0f87abefbb86c
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
a3abf5f2f835ad0c61e2325f5cbac2d1d9045517
1+
5dc1b212c330b6f456789f8d58e0f87abefbb86c

compiled/facebook-www/React-dev.classic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1537,7 +1537,7 @@ __DEV__ &&
15371537
exports.useTransition = function () {
15381538
return resolveDispatcher().useTransition();
15391539
};
1540-
exports.version = "19.2.0-www-classic-a3abf5f2-20250519";
1540+
exports.version = "19.2.0-www-classic-5dc1b212-20250519";
15411541
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
15421542
"function" ===
15431543
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/React-dev.modern.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1537,7 +1537,7 @@ __DEV__ &&
15371537
exports.useTransition = function () {
15381538
return resolveDispatcher().useTransition();
15391539
};
1540-
exports.version = "19.2.0-www-modern-a3abf5f2-20250519";
1540+
exports.version = "19.2.0-www-modern-5dc1b212-20250519";
15411541
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
15421542
"function" ===
15431543
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/React-prod.classic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,4 +635,4 @@ exports.useSyncExternalStore = function (
635635
exports.useTransition = function () {
636636
return ReactSharedInternals.H.useTransition();
637637
};
638-
exports.version = "19.2.0-www-classic-a3abf5f2-20250519";
638+
exports.version = "19.2.0-www-classic-5dc1b212-20250519";

compiled/facebook-www/React-prod.modern.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,4 +635,4 @@ exports.useSyncExternalStore = function (
635635
exports.useTransition = function () {
636636
return ReactSharedInternals.H.useTransition();
637637
};
638-
exports.version = "19.2.0-www-modern-a3abf5f2-20250519";
638+
exports.version = "19.2.0-www-modern-5dc1b212-20250519";

compiled/facebook-www/React-profiling.classic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,7 @@ exports.useSyncExternalStore = function (
639639
exports.useTransition = function () {
640640
return ReactSharedInternals.H.useTransition();
641641
};
642-
exports.version = "19.2.0-www-classic-a3abf5f2-20250519";
642+
exports.version = "19.2.0-www-classic-5dc1b212-20250519";
643643
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
644644
"function" ===
645645
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/React-profiling.modern.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,7 @@ exports.useSyncExternalStore = function (
639639
exports.useTransition = function () {
640640
return ReactSharedInternals.H.useTransition();
641641
};
642-
exports.version = "19.2.0-www-modern-a3abf5f2-20250519";
642+
exports.version = "19.2.0-www-modern-5dc1b212-20250519";
643643
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
644644
"function" ===
645645
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/ReactART-dev.classic.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19063,10 +19063,10 @@ __DEV__ &&
1906319063
(function () {
1906419064
var internals = {
1906519065
bundleType: 1,
19066-
version: "19.2.0-www-classic-a3abf5f2-20250519",
19066+
version: "19.2.0-www-classic-5dc1b212-20250519",
1906719067
rendererPackageName: "react-art",
1906819068
currentDispatcherRef: ReactSharedInternals,
19069-
reconcilerVersion: "19.2.0-www-classic-a3abf5f2-20250519"
19069+
reconcilerVersion: "19.2.0-www-classic-5dc1b212-20250519"
1907019070
};
1907119071
internals.overrideHookState = overrideHookState;
1907219072
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -19100,7 +19100,7 @@ __DEV__ &&
1910019100
exports.Shape = Shape;
1910119101
exports.Surface = Surface;
1910219102
exports.Text = Text;
19103-
exports.version = "19.2.0-www-classic-a3abf5f2-20250519";
19103+
exports.version = "19.2.0-www-classic-5dc1b212-20250519";
1910419104
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
1910519105
"function" ===
1910619106
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/ReactART-dev.modern.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18835,10 +18835,10 @@ __DEV__ &&
1883518835
(function () {
1883618836
var internals = {
1883718837
bundleType: 1,
18838-
version: "19.2.0-www-modern-a3abf5f2-20250519",
18838+
version: "19.2.0-www-modern-5dc1b212-20250519",
1883918839
rendererPackageName: "react-art",
1884018840
currentDispatcherRef: ReactSharedInternals,
18841-
reconcilerVersion: "19.2.0-www-modern-a3abf5f2-20250519"
18841+
reconcilerVersion: "19.2.0-www-modern-5dc1b212-20250519"
1884218842
};
1884318843
internals.overrideHookState = overrideHookState;
1884418844
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -18872,7 +18872,7 @@ __DEV__ &&
1887218872
exports.Shape = Shape;
1887318873
exports.Surface = Surface;
1887418874
exports.Text = Text;
18875-
exports.version = "19.2.0-www-modern-a3abf5f2-20250519";
18875+
exports.version = "19.2.0-www-modern-5dc1b212-20250519";
1887618876
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
1887718877
"function" ===
1887818878
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

0 commit comments

Comments
 (0)