diff --git a/packages/react-dom/src/__tests__/ReactDOMServerPartialHydration-test.internal.js b/packages/react-dom/src/__tests__/ReactDOMServerPartialHydration-test.internal.js
index b8f7ac48a5..9f954f4581 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerPartialHydration-test.internal.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerPartialHydration-test.internal.js
@@ -2671,32 +2671,4 @@ describe('ReactDOMServerPartialHydration', () => {
expect(ref.current).toBe(span);
expect(ref.current.innerHTML).toBe('Hidden child');
});
-
- it('should retry on client if something throws', async () => {
- let isServer = true;
- function ThrowsOnServerOnly() {
- if (isServer) {
- throw new Error('Oops!');
- }
- return 'Yay!';
- }
-
- function App() {
- return (
-
-
-
- );
- }
-
- const element = document.createElement('div');
- element.innerHTML = ReactDOMServer.renderToString();
- expect(element.textContent).toBe('Loading...');
-
- isServer = false;
- await act(async () => {
- ReactDOM.hydrateRoot(element, );
- });
- expect(element.textContent).toBe('Yay!');
- });
});
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerSuspense-test.internal.js b/packages/react-dom/src/__tests__/ReactDOMServerSuspense-test.internal.js
index 54ebc459a9..60ab2edbdc 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerSuspense-test.internal.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerSuspense-test.internal.js
@@ -115,20 +115,6 @@ describe('ReactDOMServerSuspense', () => {
expect(getVisibleChildren(c)).toEqual(
Fallback
);
});
- it('should render the fallback when an error is thrown', async () => {
- function Throws() {
- throw new Error('Oops!');
- }
- const c = await serverRender(
-
- }>
-
-
-
,
- );
- expect(getVisibleChildren(c)).toEqual(Fallback
);
- });
-
it('should work with nested suspense components', async () => {
const c = await serverRender(
diff --git a/packages/react-dom/src/server/ReactPartialRenderer.js b/packages/react-dom/src/server/ReactPartialRenderer.js
index 387db4ca0b..caf1ee2f6f 100644
--- a/packages/react-dom/src/server/ReactPartialRenderer.js
+++ b/packages/react-dom/src/server/ReactPartialRenderer.js
@@ -969,33 +969,22 @@ class ReactDOMServerRenderer {
try {
outBuffer += this.render(child, frame.context, frame.domNamespace);
} catch (err) {
- if (enableSuspenseServerRenderer) {
- if (this.suspenseDepth > 0) {
- // Regardless of whether this is an error or a suspense thenable,
- // trigger the nearest Suspense boundary. We'll try to render this
- // tree again on the client.
+ if (err != null && typeof err.then === 'function') {
+ if (enableSuspenseServerRenderer) {
+ invariant(
+ this.suspenseDepth > 0,
+ // TODO: include component name. This is a bit tricky with current factoring.
+ 'A React component suspended while rendering, but no fallback UI was specified.\n' +
+ '\n' +
+ 'Add a component higher in the tree to ' +
+ 'provide a loading indicator or placeholder to display.',
+ );
suspended = true;
} else {
- // Missing a Suspense boundary. This is a fatal error.
- if (err != null && typeof err.then === 'function') {
- invariant(
- false,
- // TODO: include component name. This is a bit tricky with current factoring.
- 'A React component suspended while rendering, but no fallback UI was specified.\n' +
- '\n' +
- 'Add a component higher in the tree to ' +
- 'provide a loading indicator or placeholder to display.',
- );
- } else {
- throw err;
- }
+ invariant(false, 'ReactDOMServer does not yet support Suspense.');
}
} else {
- if (err != null && typeof err.then === 'function') {
- invariant(false, 'ReactDOMServer does not yet support Suspense.');
- } else {
- throw err;
- }
+ throw err;
}
} finally {
if (__DEV__) {