[flags] Remove enableHydrationLaneScheduling (#35549)
This is just a killswitch and has been on for over a year https://github.com/facebook/react/pull/31751
Ricky committed
Jan 22, 2026 at 13:51 UTC
2d8e7f1ce358e8cddc3aae862007269b6bac04ba
10 files changed
+3
-23
packages/react-dom/src/__tests__/ReactDOMFizzShellHydration-test.js
-1
@@ -255,7 +255,6 @@ describe('ReactDOMFizzShellHydration', () => {
255
},
256
);
257
258
- // @gate enableHydrationLaneScheduling
258
it(
259
'updating the root at same priority as initial hydration does not ' +
260
'force a client render',
packages/react-reconciler/src/ReactFiberBeginWork.js
+1
-5
@@ -117,7 +117,6 @@ import {
117
enableLegacyHidden,
118
enableCPUSuspense,
119
disableLegacyMode,
120
- enableHydrationLaneScheduling,
120
enableViewTransition,
121
enableFragmentRefs,
122
} from 'shared/ReactFeatureFlags';
@@ -155,7 +154,6 @@ import {
154
NoLanes,
155
OffscreenLane,
156
DefaultLane,
158
- DefaultHydrationLane,
157
SomeRetryLane,
158
includesSomeLane,
159
includesOnlyRetries,
@@ -2919,9 +2917,7 @@ function mountDehydratedSuspenseComponent(
2917
// wrong priority associated with it and will prevent hydration of parent path.
2918
// Instead, we'll leave work left on it to render it in a separate commit.
2919
// Schedule a normal pri update to render this content.
2922
- workInProgress.lanes = laneToLanes(
2923
- enableHydrationLaneScheduling ? DefaultLane : DefaultHydrationLane,
2924
- );
2920
+ workInProgress.lanes = laneToLanes(DefaultLane);
2921
} else {
2922
// We'll continue hydrating the rest at offscreen priority since we'll already
2923
// be showing the right content coming from the server, it is no rush.
packages/react-reconciler/src/ReactFiberReconciler.js
+2
-7
@@ -42,7 +42,6 @@ import getComponentNameFromFiber from 'react-reconciler/src/getComponentNameFrom
42
import isArray from 'shared/isArray';
43
import {
44
enableSchedulingProfiler,
45
- enableHydrationLaneScheduling,
45
disableLegacyMode,
46
} from 'shared/ReactFeatureFlags';
47
import ReactSharedInternals from 'shared/ReactSharedInternals';
@@ -340,9 +339,7 @@ export function createHydrationContainer(
339
// enqueue the callback if one is provided).
340
const current = root.current;
341
let lane = requestUpdateLane(current);
343
- if (enableHydrationLaneScheduling) {
344
- lane = getBumpedLaneForHydrationByLane(lane);
345
- }
342
+ lane = getBumpedLaneForHydrationByLane(lane);
343
const update = createUpdate(lane);
344
update.callback =
345
callback !== undefined && callback !== null ? callback : null;
@@ -557,9 +554,7 @@ export function attemptHydrationAtCurrentPriority(fiber: Fiber): void {
554
return;
555
}
556
let lane = requestUpdateLane(fiber);
560
- if (enableHydrationLaneScheduling) {
561
- lane = getBumpedLaneForHydrationByLane(lane);
562
- }
557
+ lane = getBumpedLaneForHydrationByLane(lane);
558
const root = enqueueConcurrentRenderForLane(fiber, lane);
559
if (root !== null) {
560
scheduleUpdateOnFiber(root, fiber, lane);
packages/shared/ReactFeatureFlags.js
-2
@@ -22,8 +22,6 @@
22
// when it rolls out to prod. We should remove these as soon as possible.
23
// -----------------------------------------------------------------------------
24
25
-export const enableHydrationLaneScheduling: boolean = true;
26
-
25
// -----------------------------------------------------------------------------
26
// Land or remove (moderate effort)
27
//
packages/shared/forks/ReactFeatureFlags.native-fb.js
-1
@@ -67,7 +67,6 @@ export const enableUpdaterTracking: boolean = __PROFILE__;
67
export const retryLaneExpirationMs = 5000;
68
export const syncLaneExpirationMs = 250;
69
export const transitionLaneExpirationMs = 5000;
70
-export const enableHydrationLaneScheduling: boolean = true;
70
export const enableYieldingBeforePassive: boolean = false;
71
export const enableThrottledScheduling: boolean = false;
72
export const enableViewTransition: boolean = false;
packages/shared/forks/ReactFeatureFlags.native-oss.js
-1
@@ -56,7 +56,6 @@ export const renameElementSymbol: boolean = true;
56
export const retryLaneExpirationMs = 5000;
57
export const syncLaneExpirationMs = 250;
58
export const transitionLaneExpirationMs = 5000;
59
-export const enableHydrationLaneScheduling: boolean = true;
59
60
export const enableYieldingBeforePassive: boolean = false;
61
packages/shared/forks/ReactFeatureFlags.test-renderer.js
-1
@@ -35,7 +35,6 @@ export const enableNoCloningMemoCache: boolean = false;
35
export const enableLegacyFBSupport: boolean = false;
36
export const enableMoveBefore: boolean = false;
37
export const enableHiddenSubtreeInsertionEffectCleanup: boolean = false;
38
-export const enableHydrationLaneScheduling: boolean = true;
38
39
export const enableRetryLaneExpiration: boolean = false;
40
export const retryLaneExpirationMs = 5000;
packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js
-1
@@ -54,7 +54,6 @@ export const renameElementSymbol = false;
54
export const retryLaneExpirationMs = 5000;
55
export const syncLaneExpirationMs = 250;
56
export const transitionLaneExpirationMs = 5000;
57
-export const enableHydrationLaneScheduling = true;
57
export const enableYieldingBeforePassive = false;
58
export const enableThrottledScheduling = false;
59
export const enableViewTransition = false;
packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
-2
@@ -65,8 +65,6 @@ export const renameElementSymbol: boolean = false;
65
export const enableObjectFiber: boolean = false;
66
export const enableEagerAlternateStateNodeCleanup: boolean = true;
67
68
-export const enableHydrationLaneScheduling: boolean = true;
69
-
68
export const enableYieldingBeforePassive: boolean = false;
69
70
export const enableThrottledScheduling: boolean = false;
packages/shared/forks/ReactFeatureFlags.www.js
-2
@@ -57,8 +57,6 @@ export const enableYieldingBeforePassive: boolean = false;
57
58
export const enableThrottledScheduling: boolean = false;
59
60
-export const enableHydrationLaneScheduling: boolean = true;
61
-
60
export const enablePerformanceIssueReporting: boolean = false;
61
62
// Logs additional User Timing API marks for use with an experimental profiling tool.