Skip to content

Commit 95e22ff

Browse files
authored
Delete Partial Renderer SSR implementation (#24868)
This removes the old server rendering implementation (the "Partial Renderer"). It was replaced in React 18 with a new streaming implementation (Fizz). We hadn't removed it from the codebase yet because Facebook hadn't finished rolling out Fizz in production; it's been behind a feature flag while we run performance tests and migrate our internal infrastructure. The diff to land Fizz will land imminently, and once it does, we can merge this commit.
1 parent c3b1857 commit 95e22ff

11 files changed

+11
-2518
lines changed

packages/react-dom/src/__tests__/ReactDOMHydrationDiff-test.js

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ let React;
1111
let ReactDOMClient;
1212
let ReactDOMServer;
1313
let act;
14-
let usingPartialRenderer;
1514

1615
const util = require('util');
1716
const realConsoleError = console.error;
@@ -26,8 +25,6 @@ describe('ReactDOMServerHydration', () => {
2625
ReactDOMServer = require('react-dom/server');
2726
act = require('react-dom/test-utils').act;
2827

29-
usingPartialRenderer = global.__WWW__ && !__EXPERIMENTAL__;
30-
3128
console.error = jest.fn();
3229
container = document.createElement('div');
3330
document.body.appendChild(container);
@@ -731,15 +728,13 @@ describe('ReactDOMServerHydration', () => {
731728
);
732729
}
733730

734-
// @TODO FB bundles use a different renderer that does not serialize errors to the client
735-
const mismatchEl = usingPartialRenderer ? '<p>' : '<template>';
736731
// @TODO changes made to sending Fizz errors to client led to the insertion of templates in client rendered
737732
// suspense boundaries. This leaks in this test becuase the client rendered suspense boundary appears like
738733
// unhydrated tail nodes and this template is the first match. When we add special case handling for client
739734
// rendered suspense boundaries this test will likely change again
740735
expect(testMismatch(Mismatch)).toMatchInlineSnapshot(`
741736
Array [
742-
"Warning: Did not expect server HTML to contain a ${mismatchEl} in <div>.
737+
"Warning: Did not expect server HTML to contain a <template> in <div>.
743738
in div (at **)
744739
in Mismatch (at **)",
745740
"Warning: An error occurred during hydration. The server HTML was replaced with client content in <div>.",
@@ -819,21 +814,12 @@ describe('ReactDOMServerHydration', () => {
819814
</div>
820815
);
821816
}
822-
// We gate this assertion becuase fb-classic uses PartialRenderer for renderToString and it does not
823-
// serialize server errors and send to client
824-
if (usingPartialRenderer) {
825-
expect(testMismatch(Mismatch)).toMatchInlineSnapshot(`
826-
Array [
827-
"Caught [The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering.]",
828-
]
829-
`);
830-
} else {
831-
expect(testMismatch(Mismatch)).toMatchInlineSnapshot(`
817+
818+
expect(testMismatch(Mismatch)).toMatchInlineSnapshot(`
832819
Array [
833820
"Caught [The server did not finish this Suspense boundary: The server used \\"renderToString\\" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to \\"renderToPipeableStream\\" which supports Suspense on the server]",
834821
]
835822
`);
836-
}
837823
});
838824

839825
// @gate __DEV__
@@ -854,21 +840,12 @@ describe('ReactDOMServerHydration', () => {
854840
</div>
855841
);
856842
}
857-
// We gate this assertion becuase fb-classic uses PartialRenderer for renderToString and it does not
858-
// serialize server errors and send to client
859-
if (usingPartialRenderer) {
860-
expect(testMismatch(Mismatch)).toMatchInlineSnapshot(`
861-
Array [
862-
"Caught [The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering.]",
863-
]
864-
`);
865-
} else {
866-
expect(testMismatch(Mismatch)).toMatchInlineSnapshot(`
843+
844+
expect(testMismatch(Mismatch)).toMatchInlineSnapshot(`
867845
Array [
868846
"Caught [The server did not finish this Suspense boundary: The server used \\"renderToString\\" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to \\"renderToPipeableStream\\" which supports Suspense on the server]",
869847
]
870848
`);
871-
}
872849
});
873850
});
874851

packages/react-dom/src/__tests__/ReactDOMServerPartialHydration-test.internal.js

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ let Suspense;
1919
let SuspenseList;
2020
let act;
2121
let IdleEventPriority;
22-
let usingPartialRenderer;
2322

2423
function normalizeCodeLocInfo(strOrErr) {
2524
if (strOrErr && strOrErr.replace) {
@@ -111,8 +110,6 @@ describe('ReactDOMServerPartialHydration', () => {
111110
SuspenseList = React.SuspenseList;
112111
}
113112

114-
usingPartialRenderer = global.__WWW__ && !__EXPERIMENTAL__;
115-
116113
IdleEventPriority = require('react-reconciler/constants').IdleEventPriority;
117114
});
118115

@@ -1671,8 +1668,7 @@ describe('ReactDOMServerPartialHydration', () => {
16711668
Scheduler.unstable_yieldValue(error.message);
16721669
},
16731670
});
1674-
// we exclude fb bundles with partial renderer
1675-
if (__DEV__ && !usingPartialRenderer) {
1671+
if (__DEV__) {
16761672
expect(Scheduler).toFlushAndYield([
16771673
'The server did not finish this Suspense boundary: The server used' +
16781674
' "renderToString" which does not support Suspense. If you intended' +
@@ -1745,8 +1741,7 @@ describe('ReactDOMServerPartialHydration', () => {
17451741
Scheduler.unstable_yieldValue(error.message);
17461742
},
17471743
});
1748-
// we exclude fb bundles with partial renderer
1749-
if (__DEV__ && !usingPartialRenderer) {
1744+
if (__DEV__) {
17501745
expect(Scheduler).toFlushAndYield([
17511746
'The server did not finish this Suspense boundary: The server used' +
17521747
' "renderToString" which does not support Suspense. If you intended' +
@@ -1824,8 +1819,7 @@ describe('ReactDOMServerPartialHydration', () => {
18241819
Scheduler.unstable_yieldValue(error.message);
18251820
},
18261821
});
1827-
// we exclude fb bundles with partial renderer
1828-
if (__DEV__ && !usingPartialRenderer) {
1822+
if (__DEV__) {
18291823
expect(Scheduler).toFlushAndYield([
18301824
'The server did not finish this Suspense boundary: The server used' +
18311825
' "renderToString" which does not support Suspense. If you intended' +
@@ -2154,8 +2148,7 @@ describe('ReactDOMServerPartialHydration', () => {
21542148
});
21552149

21562150
suspend = true;
2157-
// we exclude fb bundles with partial renderer
2158-
if (__DEV__ && !usingPartialRenderer) {
2151+
if (__DEV__) {
21592152
expect(Scheduler).toFlushAndYield([
21602153
'The server did not finish this Suspense boundary: The server used' +
21612154
' "renderToString" which does not support Suspense. If you intended' +
@@ -2229,8 +2222,7 @@ describe('ReactDOMServerPartialHydration', () => {
22292222
Scheduler.unstable_yieldValue(error.message);
22302223
},
22312224
});
2232-
// we exclude fb bundles with partial renderer
2233-
if (__DEV__ && !usingPartialRenderer) {
2225+
if (__DEV__) {
22342226
expect(Scheduler).toFlushAndYield([
22352227
'The server did not finish this Suspense boundary: The server used' +
22362228
' "renderToString" which does not support Suspense. If you intended' +

packages/react-dom/src/__tests__/ReactServerRendering-test.js

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ let React;
1414
let ReactDOMServer;
1515
let PropTypes;
1616
let ReactCurrentDispatcher;
17-
let useingPartialRenderer;
1817

1918
describe('ReactDOMServer', () => {
2019
beforeEach(() => {
@@ -25,8 +24,6 @@ describe('ReactDOMServer', () => {
2524
ReactCurrentDispatcher =
2625
React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
2726
.ReactCurrentDispatcher;
28-
29-
useingPartialRenderer = global.__WWW__ && !__EXPERIMENTAL__;
3027
});
3128

3229
describe('renderToString', () => {
@@ -576,11 +573,7 @@ describe('ReactDOMServer', () => {
576573
<Suspender />
577574
</React.Suspense>,
578575
);
579-
if (useingPartialRenderer) {
580-
expect(response).toEqual('<!--$!-->fallback<!--/$-->');
581-
} else {
582-
expect(response).toEqual('fallback');
583-
}
576+
expect(response).toEqual('fallback');
584577
});
585578
});
586579

packages/react-dom/src/__tests__/ReactServerRenderingHydration-test.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,6 @@ describe('ReactDOMServerHydration', () => {
603603
expect(customElement.obj).toBe(undefined);
604604
});
605605

606-
// @gate experimental || !www || !__DEV__
607606
it('refers users to apis that support Suspense when something suspends', () => {
608607
const theInfinitePromise = new Promise(() => {});
609608
function InfiniteSuspend() {
@@ -649,7 +648,6 @@ describe('ReactDOMServerHydration', () => {
649648
}
650649
});
651650

652-
// @gate experimental || !www || !__DEV__
653651
it('refers users to apis that support Suspense when something suspends (browser)', () => {
654652
const theInfinitePromise = new Promise(() => {});
655653
function InfiniteSuspend() {

packages/react-dom/src/server/ReactDOMLegacyServerBrowser.classic.fb.js

Lines changed: 0 additions & 16 deletions
This file was deleted.

packages/react-dom/src/server/ReactDOMLegacyServerNode.classic.fb.js

Lines changed: 0 additions & 19 deletions
This file was deleted.

packages/react-dom/src/server/ReactDOMServerLegacyPartialRendererBrowser.js

Lines changed: 0 additions & 32 deletions
This file was deleted.

packages/react-dom/src/server/ReactDOMStringRenderer.js

Lines changed: 0 additions & 39 deletions
This file was deleted.

0 commit comments

Comments
 (0)