diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js
index a16ae4fe09..6009ca50c2 100644
--- a/packages/react-reconciler/src/ReactFiberCommitWork.js
+++ b/packages/react-reconciler/src/ReactFiberCommitWork.js
@@ -1330,7 +1330,9 @@ function commitSuspenseComponent(finishedWork: Fiber) {
suspenseCallback(new Set(thenables));
}
} else if (__DEV__) {
- warning(false, 'Unexpected type for suspenseCallback.');
+ if (suspenseCallback !== undefined) {
+ warning(false, 'Unexpected type for suspenseCallback.');
+ }
}
}
}
diff --git a/packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js
index 909eb878d8..8a6997107b 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js
@@ -50,6 +50,30 @@ describe('ReactSuspense', () => {
return {promise, resolveRef, PromiseComp};
}
+ it('check type', () => {
+ const {PromiseComp} = createThenable();
+
+ const elementBadType = (
+
+
+
+ );
+
+ ReactNoop.render(elementBadType);
+ expect(() => Scheduler.unstable_flushAll()).toWarnDev([
+ 'Warning: Unexpected type for suspenseCallback.',
+ ]);
+
+ const elementMissingCallback = (
+
+
+
+ );
+
+ ReactNoop.render(elementMissingCallback);
+ expect(() => Scheduler.unstable_flushAll()).toWarnDev([]);
+ });
+
it('1 then 0 suspense callback', () => {
const {promise, resolveRef, PromiseComp} = createThenable();