diff --git a/packages/react-reconciler/src/ReactFiberBeginWork.js b/packages/react-reconciler/src/ReactFiberBeginWork.js
index 080f3a1fa8361..1c82d044c442d 100644
--- a/packages/react-reconciler/src/ReactFiberBeginWork.js
+++ b/packages/react-reconciler/src/ReactFiberBeginWork.js
@@ -1244,7 +1244,7 @@ function updateSuspenseComponent(
} else {
// The current tree has not already timed out. That means the primary
// children are not wrapped in a fragment fiber.
- const currentPrimaryChild: Fiber = (current.child: any);
+ const currentPrimaryChild: Fiber | null = (current.child: any);
if (nextDidTimeout) {
// Timed out. Wrap the children in a fragment fiber to keep them
// separate from the fallback children.
@@ -1260,7 +1260,6 @@ function updateSuspenseComponent(
primaryChildFragment.effectTag |= Placement;
primaryChildFragment.child = currentPrimaryChild;
- currentPrimaryChild.return = primaryChildFragment;
if ((workInProgress.mode & ConcurrentMode) === NoContext) {
// Outside of concurrent mode, we commit the effects from the
diff --git a/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
index 1d987f70fd020..76968cb557b9b 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
@@ -838,5 +838,43 @@ describe('ReactSuspense', () => {
]);
expect(root).toMatchRenderedOutput('Tab: 2 + sibling');
});
+
+ it('#14162', () => {
+ const {lazy} = React;
+
+ function Hello() {
+ return hello;
+ }
+
+ async function fetchComponent() {
+ return new Promise(r => {
+ // simulating a delayed import() call
+ setTimeout(r, 1000, {default: Hello});
+ });
+ }
+
+ const LazyHello = lazy(fetchComponent);
+
+ class App extends React.Component {
+ state = {render: false};
+
+ componentDidMount() {
+ setTimeout(() => this.setState({render: true}));
+ }
+
+ render() {
+ return (
+ loading...}>
+ {this.state.render && }
+
+ );
+ }
+ }
+
+ const root = ReactTestRenderer.create(null);
+
+ root.update();
+ jest.advanceTimersByTime(1000);
+ });
});
});