Skip to content

Commit e04f425

Browse files
authored
Handle SuspenseListComponent getting retried (#16745)
This happens for example when a deleted boundary transfers its pending promises to the list so that the list can be retried. This wasn't caught by unit tests because this flag wasn't on in those tests.
1 parent 2c98af7 commit e04f425

File tree

2 files changed

+5
-0
lines changed

2 files changed

+5
-0
lines changed

packages/react-reconciler/src/ReactFiberWorkLoop.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ import {
7777
HostRoot,
7878
ClassComponent,
7979
SuspenseComponent,
80+
SuspenseListComponent,
8081
FunctionComponent,
8182
ForwardRef,
8283
MemoComponent,
@@ -2223,6 +2224,9 @@ export function resolveRetryThenable(boundaryFiber: Fiber, thenable: Thenable) {
22232224
retryTime = suspenseState.retryTime;
22242225
}
22252226
break;
2227+
case SuspenseListComponent:
2228+
retryCache = boundaryFiber.stateNode;
2229+
break;
22262230
default:
22272231
invariant(
22282232
false,

packages/react-reconciler/src/__tests__/ReactSuspenseList-test.internal.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ describe('ReactSuspenseList', () => {
1111
ReactFeatureFlags = require('shared/ReactFeatureFlags');
1212
ReactFeatureFlags.debugRenderPhaseSideEffectsForStrictMode = false;
1313
ReactFeatureFlags.replayFailedUnitOfWorkWithInvokeGuardedCallback = false;
14+
ReactFeatureFlags.enableSuspenseServerRenderer = true;
1415
React = require('react');
1516
ReactNoop = require('react-noop-renderer');
1617
Scheduler = require('scheduler');

0 commit comments

Comments
 (0)