Skip to content

Commit f4f987b

Browse files
committed
Expose prerender() for SSG
1 parent 1839e14 commit f4f987b

8 files changed

+48
-22
lines changed

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

+6-5
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ describe('ReactDOMFizzStatic', () => {
3232
React = require('react');
3333
ReactDOM = require('react-dom');
3434
ReactDOMClient = require('react-dom/client');
35-
if (__EXPERIMENTAL__) {
36-
ReactDOMFizzStatic = require('react-dom/static');
37-
}
35+
ReactDOMFizzStatic = require('react-dom/static');
3836
Stream = require('stream');
3937
Suspense = React.Suspense;
4038

@@ -212,7 +210,6 @@ describe('ReactDOMFizzStatic', () => {
212210
return readText(text);
213211
}
214212

215-
// @gate experimental
216213
it('should render a fully static document, send it and then hydrate it', async () => {
217214
function App() {
218215
return (
@@ -230,7 +227,11 @@ describe('ReactDOMFizzStatic', () => {
230227

231228
const result = await promise;
232229

233-
expect(result.postponed).toBe(null);
230+
expect(result.postponed).toBe(
231+
gate(flags => flags.enableHalt || flags.enablePostpone)
232+
? null
233+
: undefined,
234+
);
234235

235236
await act(async () => {
236237
result.prelude.pipe(writable);

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

+6-5
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
4242
React = require('react');
4343
ReactDOM = require('react-dom');
4444
ReactDOMFizzServer = require('react-dom/server.browser');
45-
if (__EXPERIMENTAL__) {
46-
ReactDOMFizzStatic = require('react-dom/static.browser');
47-
}
45+
ReactDOMFizzStatic = require('react-dom/static.browser');
4846
Suspense = React.Suspense;
4947
container = document.createElement('div');
5048
document.body.appendChild(container);
@@ -1610,7 +1608,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
16101608
);
16111609
});
16121610

1613-
// @gate experimental
16141611
it('logs an error if onHeaders throws but continues the prerender', async () => {
16151612
const errors = [];
16161613
function onError(error) {
@@ -1627,7 +1624,11 @@ describe('ReactDOMFizzStaticBrowser', () => {
16271624
onError,
16281625
}),
16291626
);
1630-
expect(prerendered.postponed).toBe(null);
1627+
expect(prerendered.postponed).toBe(
1628+
gate(flags => flags.enableHalt || flags.enablePostpone)
1629+
? null
1630+
: undefined,
1631+
);
16311632
expect(errors).toEqual(['bad onHeaders']);
16321633

16331634
await readIntoContainer(prerendered.prelude);

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

+11-4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ import {
3838
createRootFormatContext,
3939
} from 'react-dom-bindings/src/server/ReactFizzConfigDOM';
4040

41+
import {enablePostpone, enableHalt} from 'shared/ReactFeatureFlags';
42+
4143
import {ensureCorrectIsomorphicReactVersion} from '../shared/ensureCorrectIsomorphicReactVersion';
4244
ensureCorrectIsomorphicReactVersion();
4345

@@ -85,10 +87,15 @@ function prerender(
8587
{highWaterMark: 0},
8688
);
8789

88-
const result = {
89-
postponed: getPostponedState(request),
90-
prelude: stream,
91-
};
90+
const result: StaticResult =
91+
enablePostpone || enableHalt
92+
? {
93+
postponed: getPostponedState(request),
94+
prelude: stream,
95+
}
96+
: ({
97+
prelude: stream,
98+
}: any);
9299
resolve(result);
93100
}
94101

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

+11-4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ import {
3838
createRootFormatContext,
3939
} from 'react-dom-bindings/src/server/ReactFizzConfigDOM';
4040

41+
import {enablePostpone, enableHalt} from 'shared/ReactFeatureFlags';
42+
4143
import {ensureCorrectIsomorphicReactVersion} from '../shared/ensureCorrectIsomorphicReactVersion';
4244
ensureCorrectIsomorphicReactVersion();
4345

@@ -85,10 +87,15 @@ function prerender(
8587
{highWaterMark: 0},
8688
);
8789

88-
const result = {
89-
postponed: getPostponedState(request),
90-
prelude: stream,
91-
};
90+
const result: StaticResult =
91+
enablePostpone || enableHalt
92+
? {
93+
postponed: getPostponedState(request),
94+
prelude: stream,
95+
}
96+
: ({
97+
prelude: stream,
98+
}: any);
9299
resolve(result);
93100
}
94101

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

+11-4
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ import {
3939
createRootFormatContext,
4040
} from 'react-dom-bindings/src/server/ReactFizzConfigDOM';
4141

42+
import {enablePostpone, enableHalt} from 'shared/ReactFeatureFlags';
43+
4244
import {ensureCorrectIsomorphicReactVersion} from '../shared/ensureCorrectIsomorphicReactVersion';
4345
ensureCorrectIsomorphicReactVersion();
4446

@@ -94,10 +96,15 @@ function prerenderToNodeStream(
9496
});
9597
const writable = createFakeWritable(readable);
9698

97-
const result = {
98-
postponed: getPostponedState(request),
99-
prelude: readable,
100-
};
99+
const result: StaticResult =
100+
enablePostpone || enableHalt
101+
? {
102+
postponed: getPostponedState(request),
103+
prelude: readable,
104+
}
105+
: ({
106+
prelude: readable,
107+
}: any);
101108
resolve(result);
102109
}
103110
const resumableState = createResumableState(

packages/react-dom/src/server/react-dom-server.browser.stable.js

+1
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
*/
99

1010
export {renderToReadableStream, version} from './ReactDOMFizzServerBrowser.js';
11+
export {prerender} from './ReactDOMFizzStaticBrowser.js';

packages/react-dom/src/server/react-dom-server.edge.stable.js

+1
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
*/
99

1010
export {renderToReadableStream, version} from './ReactDOMFizzServerEdge.js';
11+
export {prerender} from './ReactDOMFizzStaticEdge.js';

packages/react-dom/src/server/react-dom-server.node.stable.js

+1
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
*/
99

1010
export {renderToPipeableStream, version} from './ReactDOMFizzServerNode.js';
11+
export {prerenderToNodeStream} from './ReactDOMFizzStaticNode.js';

0 commit comments

Comments
 (0)