diff --git a/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
index 14678d160e..c95e050cfe 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
@@ -1314,6 +1314,37 @@ describe('ReactSuspense', () => {
expect(ReactNoop.getChildren()).toEqual([span('Loading...')]);
});
+
+ it('does not infinite loop if fallback contains lifecycle method', async () => {
+ class Fallback extends React.Component {
+ state = {
+ name: 'foo',
+ };
+ componentDidMount() {
+ this.setState({
+ name: 'bar',
+ });
+ }
+ render() {
+ return ;
+ }
+ }
+
+ class Demo extends React.Component {
+ render() {
+ return (
+ }>
+
+
+ );
+ }
+ }
+
+ ReactNoop.renderLegacySyncRoot();
+ expect(ReactNoop.getChildren()).toEqual([span('Loading...')]);
+ await advanceTimers(100);
+ expect(ReactNoop.getChildren()).toEqual([span('Hi')]);
+ });
});
it('does not call lifecycles of a suspended component', async () => {