Skip to content

Commit 6edd55a

Browse files
authored
Gate unstable_expectedLoadTime on enableCPUSuspense (#24038)
1 parent 57799b9 commit 6edd55a

13 files changed

+32
-6
lines changed

packages/react-reconciler/src/ReactFiberBeginWork.new.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ import type {
2929
SpawnedCachePool,
3030
} from './ReactFiberCacheComponent.new';
3131
import type {UpdateQueue} from './ReactUpdateQueue.new';
32-
import {enableSuspenseAvoidThisFallback} from 'shared/ReactFeatureFlags';
32+
import {
33+
enableSuspenseAvoidThisFallback,
34+
enableCPUSuspense,
35+
} from 'shared/ReactFeatureFlags';
3336

3437
import checkPropTypes from 'shared/checkPropTypes';
3538
import {
@@ -2091,7 +2094,10 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) {
20912094
);
20922095
workInProgress.memoizedState = SUSPENDED_MARKER;
20932096
return fallbackFragment;
2094-
} else if (typeof nextProps.unstable_expectedLoadTime === 'number') {
2097+
} else if (
2098+
enableCPUSuspense &&
2099+
typeof nextProps.unstable_expectedLoadTime === 'number'
2100+
) {
20952101
// This is a CPU-bound tree. Skip this tree and show a placeholder to
20962102
// unblock the surrounding content. Then immediately retry after the
20972103
// initial commit.

packages/react-reconciler/src/ReactFiberBeginWork.old.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ import type {
2929
SpawnedCachePool,
3030
} from './ReactFiberCacheComponent.old';
3131
import type {UpdateQueue} from './ReactUpdateQueue.old';
32-
import {enableSuspenseAvoidThisFallback} from 'shared/ReactFeatureFlags';
32+
import {
33+
enableSuspenseAvoidThisFallback,
34+
enableCPUSuspense,
35+
} from 'shared/ReactFeatureFlags';
3336

3437
import checkPropTypes from 'shared/checkPropTypes';
3538
import {
@@ -2091,7 +2094,10 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) {
20912094
);
20922095
workInProgress.memoizedState = SUSPENDED_MARKER;
20932096
return fallbackFragment;
2094-
} else if (typeof nextProps.unstable_expectedLoadTime === 'number') {
2097+
} else if (
2098+
enableCPUSuspense &&
2099+
typeof nextProps.unstable_expectedLoadTime === 'number'
2100+
) {
20952101
// This is a CPU-bound tree. Skip this tree and show a placeholder to
20962102
// unblock the surrounding content. Then immediately retry after the
20972103
// initial commit.

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ describe('DebugTracing', () => {
9898
expect(logs).toEqual(['log: ⚛️ Example resolved']);
9999
});
100100

101-
// @gate experimental && build === 'development' && enableDebugTracing
101+
// @gate experimental && build === 'development' && enableDebugTracing && enableCPUSuspense
102102
it('should log sync render with CPU suspense', () => {
103103
function Example() {
104104
console.log('<Example/>');
@@ -178,7 +178,7 @@ describe('DebugTracing', () => {
178178
expect(logs).toEqual(['log: ⚛️ Example resolved']);
179179
});
180180

181-
// @gate experimental && build === 'development' && enableDebugTracing
181+
// @gate experimental && build === 'development' && enableDebugTracing && enableCPUSuspense
182182
it('should log concurrent render with CPU suspense', () => {
183183
function Example() {
184184
console.log('<Example/>');

packages/react-reconciler/src/__tests__/ReactCPUSuspense-test.js

+4
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
108108
}
109109
}
110110

111+
// @gate enableCPUSuspense
111112
it('skips CPU-bound trees on initial mount', async () => {
112113
function App() {
113114
return (
@@ -145,6 +146,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
145146
);
146147
});
147148

149+
// @gate enableCPUSuspense
148150
it('does not skip CPU-bound trees during updates', async () => {
149151
let setCount;
150152

@@ -193,6 +195,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
193195
);
194196
});
195197

198+
// @gate enableCPUSuspense
196199
it('suspend inside CPU-bound tree', async () => {
197200
function App() {
198201
return (
@@ -242,6 +245,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
242245
);
243246
});
244247

248+
// @gate enableCPUSuspense
245249
it('nested CPU-bound trees', async () => {
246250
function App() {
247251
return (

packages/shared/ReactFeatureFlags.js

+2
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ export const enableSuspenseAvoidThisFallback = false;
106106
// Enables unstable_avoidThisFallback feature in Fizz
107107
export const enableSuspenseAvoidThisFallbackFizz = false;
108108

109+
export const enableCPUSuspense = __EXPERIMENTAL__;
110+
109111
// When a node is unmounted, recurse into the Fiber subtree and clean out
110112
// references. Each level cleans up more fiber fields than the previous level.
111113
// As far as we know, React itself doesn't leak, but because the Fiber contains

packages/shared/forks/ReactFeatureFlags.native-fb.js

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export const disableModulePatternComponents = false;
5050
export const warnAboutSpreadingKeyToJSX = false;
5151
export const enableSuspenseAvoidThisFallback = false;
5252
export const enableSuspenseAvoidThisFallbackFizz = false;
53+
export const enableCPUSuspense = true;
5354
export const enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay = true;
5455
export const enableClientRenderFallbackOnHydrationMismatch = true;
5556
export const enableComponentStackLocations = false;

packages/shared/forks/ReactFeatureFlags.native-oss.js

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export const disableModulePatternComponents = false;
4141
export const warnAboutSpreadingKeyToJSX = false;
4242
export const enableSuspenseAvoidThisFallback = false;
4343
export const enableSuspenseAvoidThisFallbackFizz = false;
44+
export const enableCPUSuspense = false;
4445
export const enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay = true;
4546
export const enableClientRenderFallbackOnHydrationMismatch = true;
4647
export const enableComponentStackLocations = false;

packages/shared/forks/ReactFeatureFlags.test-renderer.js

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export const disableModulePatternComponents = false;
4141
export const warnAboutSpreadingKeyToJSX = false;
4242
export const enableSuspenseAvoidThisFallback = false;
4343
export const enableSuspenseAvoidThisFallbackFizz = false;
44+
export const enableCPUSuspense = false;
4445
export const enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay = true;
4546
export const enableClientRenderFallbackOnHydrationMismatch = true;
4647
export const enableComponentStackLocations = true;

packages/shared/forks/ReactFeatureFlags.test-renderer.native.js

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export const enableNewReconciler = false;
5151
export const deferRenderPhaseUpdateToNextBatch = false;
5252
export const enableSuspenseAvoidThisFallback = false;
5353
export const enableSuspenseAvoidThisFallbackFizz = false;
54+
export const enableCPUSuspense = false;
5455
export const enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay = true;
5556
export const enableClientRenderFallbackOnHydrationMismatch = true;
5657
export const enableStrictEffects = false;

packages/shared/forks/ReactFeatureFlags.test-renderer.www.js

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export const disableModulePatternComponents = true;
4141
export const warnAboutSpreadingKeyToJSX = false;
4242
export const enableSuspenseAvoidThisFallback = true;
4343
export const enableSuspenseAvoidThisFallbackFizz = false;
44+
export const enableCPUSuspense = false;
4445
export const enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay = true;
4546
export const enableClientRenderFallbackOnHydrationMismatch = true;
4647
export const enableComponentStackLocations = true;

packages/shared/forks/ReactFeatureFlags.testing.js

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export const disableModulePatternComponents = false;
4141
export const warnAboutSpreadingKeyToJSX = false;
4242
export const enableSuspenseAvoidThisFallback = false;
4343
export const enableSuspenseAvoidThisFallbackFizz = false;
44+
export const enableCPUSuspense = false;
4445
export const enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay = true;
4546
export const enableClientRenderFallbackOnHydrationMismatch = true;
4647
export const enableComponentStackLocations = true;

packages/shared/forks/ReactFeatureFlags.testing.www.js

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export const disableModulePatternComponents = true;
4141
export const warnAboutSpreadingKeyToJSX = false;
4242
export const enableSuspenseAvoidThisFallback = true;
4343
export const enableSuspenseAvoidThisFallbackFizz = false;
44+
export const enableCPUSuspense = true;
4445
export const enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay = true;
4546
export const enableClientRenderFallbackOnHydrationMismatch = true;
4647
export const enableComponentStackLocations = true;

packages/shared/forks/ReactFeatureFlags.www.js

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export const enableUpdaterTracking = __PROFILE__;
5151
export const enableSuspenseLayoutEffectSemantics = true;
5252
export const enableSuspenseAvoidThisFallback = true;
5353
export const enableSuspenseAvoidThisFallbackFizz = false;
54+
export const enableCPUSuspense = true;
5455

5556
// Logs additional User Timing API marks for use with an experimental profiling tool.
5657
export const enableSchedulingProfiler =

0 commit comments

Comments
 (0)