diff --git a/packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.internal.js b/packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.internal.js
index 1543d9b97c3e8..d9195099d52d2 100644
--- a/packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.internal.js
+++ b/packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.internal.js
@@ -40,3 +40,17 @@ it('should warn in sync mode', () => {
ReactDOM.render(, document.createElement('div'));
}).toWarnDev([]);
});
+
+it('does not warn if Scheduler is mocked', () => {
+ jest.resetModules();
+ jest.mock('scheduler', () => require('scheduler/unstable_mock'));
+ React = require('react');
+ ReactDOM = require('react-dom');
+ ReactFeatureFlags = require('shared/ReactFeatureFlags');
+ ReactFeatureFlags.warnAboutUnmockedScheduler = true;
+
+ // This should not warn
+ expect(() => {
+ ReactDOM.render(, document.createElement('div'));
+ }).toWarnDev([]);
+});
diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.js b/packages/react-reconciler/src/ReactFiberWorkLoop.js
index 35679634cd3de..375f7a5e94071 100644
--- a/packages/react-reconciler/src/ReactFiberWorkLoop.js
+++ b/packages/react-reconciler/src/ReactFiberWorkLoop.js
@@ -2576,11 +2576,14 @@ let didWarnAboutUnmockedScheduler = false;
export function warnIfUnmockedScheduler(fiber: Fiber) {
if (__DEV__) {
- if (didWarnAboutUnmockedScheduler === false) {
+ if (
+ didWarnAboutUnmockedScheduler === false &&
+ Scheduler.unstable_flushAllWithoutAsserting === undefined
+ ) {
if (fiber.mode & BatchedMode || fiber.mode & ConcurrentMode) {
didWarnAboutUnmockedScheduler = true;
warningWithoutStack(
- Scheduler.unstable_flushAllWithoutAsserting !== undefined,
+ false,
'In Concurrent or Sync modes, the "scheduler" module needs to be mocked ' +
'to guarantee consistent behaviour across tests and browsers. ' +
'For example, with jest: \n' +
@@ -2590,7 +2593,7 @@ export function warnIfUnmockedScheduler(fiber: Fiber) {
} else if (warnAboutUnmockedScheduler === true) {
didWarnAboutUnmockedScheduler = true;
warningWithoutStack(
- null,
+ false,
'Starting from React v17, the "scheduler" module will need to be mocked ' +
'to guarantee consistent behaviour across tests and browsers. ' +
'For example, with jest: \n' +