diff --git a/packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js b/packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js index 5d85217921..a63e45cec6 100644 --- a/packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js +++ b/packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js @@ -10,7 +10,6 @@ 'use strict'; const React = require('react'); -const Fragment = React.Fragment; let ReactFeatureFlags = require('shared/ReactFeatureFlags'); let ReactDOM; @@ -602,84 +601,4 @@ describe('ReactDOMFiberAsync', () => { expect(root.createBatch).toBe(undefined); }); }); - - describe('Disable yielding', () => { - beforeEach(() => { - jest.resetModules(); - ReactFeatureFlags = require('shared/ReactFeatureFlags'); - ReactFeatureFlags.disableYielding = true; - ReactFeatureFlags.debugRenderPhaseSideEffectsForStrictMode = false; - ReactDOM = require('react-dom'); - Scheduler = require('scheduler'); - }); - - it('wont yield during a render if yielding is disabled', () => { - class A extends React.Component { - render() { - Scheduler.yieldValue('A'); - return
{this.props.children}
; - } - } - - class B extends React.Component { - render() { - Scheduler.yieldValue('B'); - return
{this.props.children}
; - } - } - - class C extends React.Component { - render() { - Scheduler.yieldValue('C'); - return
{this.props.children}
; - } - } - - let root = ReactDOM.unstable_createRoot(container); - - root.render( - - - - - , - ); - - expect(Scheduler).toHaveYielded([]); - - Scheduler.unstable_flushNumberOfYields(2); - // Even though we just flushed two yields, we should have rendered - // everything without yielding when the flag is on. - expect(Scheduler).toHaveYielded(['A', 'B', 'C']); - }); - - it('wont suspend during a render if yielding is disabled', () => { - let p = new Promise(resolve => {}); - - function Suspend() { - throw p; - } - - let root = ReactDOM.unstable_createRoot(container); - root.render( - Initial, - ); - - Scheduler.flushAll(); - expect(container.textContent).toBe('Initial'); - - root.render( - - - , - ); - - expect(Scheduler).toHaveYielded([]); - - Scheduler.flushAll(); - - // This should have flushed to the DOM even though we haven't ran the timers. - expect(container.textContent).toBe('Loading'); - }); - }); }); diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.js b/packages/react-reconciler/src/ReactFiberWorkLoop.js index 28ffb780b7..84b27db051 100644 --- a/packages/react-reconciler/src/ReactFiberWorkLoop.js +++ b/packages/react-reconciler/src/ReactFiberWorkLoop.js @@ -23,7 +23,6 @@ import { enableSuspenseServerRenderer, replayFailedUnitOfWorkWithInvokeGuardedCallback, enableProfilerTimer, - disableYielding, enableSchedulerTracing, revertPassiveEffectsChange, } from 'shared/ReactFeatureFlags'; @@ -1004,7 +1003,7 @@ function renderRoot( // possible. const hasNotProcessedNewUpdates = workInProgressRootLatestProcessedExpirationTime === Sync; - if (hasNotProcessedNewUpdates && !disableYielding && !isSync) { + if (hasNotProcessedNewUpdates && !isSync) { // If we have not processed any new updates during this pass, then this is // either a retry of an existing fallback state or a hidden tree. // Hidden trees shouldn't be batched with other work and after that's @@ -1041,7 +1040,7 @@ function renderRoot( return commitRoot.bind(null, root); } case RootSuspendedWithDelay: { - if (!disableYielding && !isSync) { + if (!isSync) { // We're suspended in a state that should be avoided. We'll try to avoid committing // it for as long as the timeouts let us. if (workInProgressRootHasPendingPing) { @@ -2147,11 +2146,6 @@ function computeMsUntilSuspenseLoadingDelay( committedExpirationTime: ExpirationTime, suspenseConfig: SuspenseConfig, ) { - if (disableYielding) { - // Timeout immediately when yielding is disabled. - return 0; - } - const busyMinDurationMs = (suspenseConfig.busyMinDurationMs: any) | 0; if (busyMinDurationMs <= 0) { return 0; diff --git a/packages/react-reconciler/src/SchedulerWithReactIntegration.js b/packages/react-reconciler/src/SchedulerWithReactIntegration.js index 7482b7fa9a..d01cda3e7a 100644 --- a/packages/react-reconciler/src/SchedulerWithReactIntegration.js +++ b/packages/react-reconciler/src/SchedulerWithReactIntegration.js @@ -11,10 +11,7 @@ // CommonJS interop named imports. import * as Scheduler from 'scheduler'; import {__interactionsRef} from 'scheduler/tracing'; -import { - disableYielding, - enableSchedulerTracing, -} from 'shared/ReactFeatureFlags'; +import {enableSchedulerTracing} from 'shared/ReactFeatureFlags'; import invariant from 'shared/invariant'; const { @@ -65,9 +62,7 @@ export const IdlePriority: ReactPriorityLevel = 95; // NoPriority is the absence of priority. Also React-only. export const NoPriority: ReactPriorityLevel = 90; -export const shouldYield = disableYielding - ? () => false // Never yield when `disableYielding` is on - : Scheduler_shouldYield; +export const shouldYield = Scheduler_shouldYield; let syncQueue: Array | null = null; let immediateQueueCallbackNode: mixed | null = null; diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js index d8c372bded..f33ef13e8a 100644 --- a/packages/shared/ReactFeatureFlags.js +++ b/packages/shared/ReactFeatureFlags.js @@ -45,9 +45,6 @@ export function addUserTimingListener() { // Disable javascript: URL strings in href for XSS protection. export const disableJavaScriptURLs = false; -// Disables yielding during render in Concurrent Mode. Used for debugging only. -export const disableYielding = false; - // React Fire: prevent the value and checked attributes from syncing // with their related DOM properties export const disableInputAttributeSyncing = false; diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb.js b/packages/shared/forks/ReactFeatureFlags.native-fb.js index 455d16b771..1395754de0 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js @@ -27,7 +27,6 @@ export const warnAboutShorthandPropertyCollision = false; export const enableSchedulerDebugging = false; export const debugRenderPhaseSideEffectsForStrictMode = true; export const disableJavaScriptURLs = false; -export const disableYielding = false; export const disableInputAttributeSyncing = false; export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__; export const warnAboutDeprecatedLifecycles = true; diff --git a/packages/shared/forks/ReactFeatureFlags.native-oss.js b/packages/shared/forks/ReactFeatureFlags.native-oss.js index 719e718f1d..cbd417aa08 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-oss.js +++ b/packages/shared/forks/ReactFeatureFlags.native-oss.js @@ -21,7 +21,6 @@ export const enableProfilerTimer = __PROFILE__; export const enableSchedulerTracing = __PROFILE__; export const enableSuspenseServerRenderer = false; export const disableJavaScriptURLs = false; -export const disableYielding = false; export const disableInputAttributeSyncing = false; export const enableStableConcurrentModeAPIs = false; export const warnAboutShorthandPropertyCollision = false; diff --git a/packages/shared/forks/ReactFeatureFlags.persistent.js b/packages/shared/forks/ReactFeatureFlags.persistent.js index 4eddfd12b1..fd7086c247 100644 --- a/packages/shared/forks/ReactFeatureFlags.persistent.js +++ b/packages/shared/forks/ReactFeatureFlags.persistent.js @@ -21,7 +21,6 @@ export const enableProfilerTimer = __PROFILE__; export const enableSchedulerTracing = __PROFILE__; export const enableSuspenseServerRenderer = false; export const disableJavaScriptURLs = false; -export const disableYielding = false; export const disableInputAttributeSyncing = false; export const enableStableConcurrentModeAPIs = false; export const warnAboutShorthandPropertyCollision = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.js index 7bbde305c2..fc30a865ec 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.js @@ -21,7 +21,6 @@ export const enableProfilerTimer = false; export const enableSchedulerTracing = false; export const enableSuspenseServerRenderer = false; export const disableJavaScriptURLs = false; -export const disableYielding = false; export const disableInputAttributeSyncing = false; export const enableStableConcurrentModeAPIs = false; export const warnAboutShorthandPropertyCollision = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js index 2e83e0d982..be456ba142 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js @@ -27,7 +27,6 @@ export const enableStableConcurrentModeAPIs = false; export const enableSchedulerDebugging = false; export const warnAboutDeprecatedSetNativeProps = false; export const disableJavaScriptURLs = false; -export const disableYielding = false; export const enableEventAPI = true; export const enableJSXTransformAPI = true; export const warnAboutMissingMockScheduler = true; diff --git a/packages/shared/forks/ReactFeatureFlags.www.js b/packages/shared/forks/ReactFeatureFlags.www.js index bb80d8173a..b8328ac7c5 100644 --- a/packages/shared/forks/ReactFeatureFlags.www.js +++ b/packages/shared/forks/ReactFeatureFlags.www.js @@ -16,7 +16,6 @@ export const { debugRenderPhaseSideEffectsForStrictMode, replayFailedUnitOfWorkWithInvokeGuardedCallback, warnAboutDeprecatedLifecycles, - disableYielding, disableInputAttributeSyncing, warnAboutShorthandPropertyCollision, warnAboutDeprecatedSetNativeProps,