@samitouri / QOS-React / commits / 2d8e7f1ce3

[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.