Skip to content

Commit 1bd1f01

Browse files
authored
Ship partial-prerendering APIs to Canary (#34633)
1 parent 548235d commit 1bd1f01

File tree

56 files changed

+233
-253
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+233
-253
lines changed

fixtures/flight/server/region.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ async function renderApp(res, returnValue, formState, noCache, debugChannel) {
133133
}
134134

135135
async function prerenderApp(res, returnValue, formState, noCache) {
136-
const {unstable_prerenderToNodeStream: prerenderToNodeStream} = await import(
136+
const {prerenderToNodeStream} = await import(
137137
'react-server-dom-webpack/static'
138138
);
139139
// const m = require('../src/App.js');

packages/react-dom/npm/server.browser.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,4 @@ exports.version = l.version;
1313
exports.renderToString = l.renderToString;
1414
exports.renderToStaticMarkup = l.renderToStaticMarkup;
1515
exports.renderToReadableStream = s.renderToReadableStream;
16-
if (s.resume) {
17-
exports.resume = s.resume;
18-
}
16+
exports.resume = s.resume;

packages/react-dom/npm/server.bun.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ if (process.env.NODE_ENV === 'production') {
1212

1313
exports.version = b.version;
1414
exports.renderToReadableStream = b.renderToReadableStream;
15-
if (b.resume) {
16-
exports.resume = b.resume;
17-
}
15+
exports.resume = b.resume;
1816
exports.renderToString = l.renderToString;
1917
exports.renderToStaticMarkup = l.renderToStaticMarkup;

packages/react-dom/npm/server.edge.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,4 @@ exports.version = b.version;
1414
exports.renderToReadableStream = b.renderToReadableStream;
1515
exports.renderToString = l.renderToString;
1616
exports.renderToStaticMarkup = l.renderToStaticMarkup;
17-
if (b.resume) {
18-
exports.resume = b.resume;
19-
}
17+
exports.resume = b.resume;

packages/react-dom/npm/server.node.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,5 @@ exports.renderToString = l.renderToString;
1414
exports.renderToStaticMarkup = l.renderToStaticMarkup;
1515
exports.renderToPipeableStream = s.renderToPipeableStream;
1616
exports.renderToReadableStream = s.renderToReadableStream;
17-
if (s.resumeToPipeableStream) {
18-
exports.resumeToPipeableStream = s.resumeToPipeableStream;
19-
}
20-
if (s.resume) {
21-
exports.resume = s.resume;
22-
}
17+
exports.resumeToPipeableStream = s.resumeToPipeableStream;
18+
exports.resume = s.resume;

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,11 @@ describe('ReactDOMFizzStatic', () => {
416416
return <div>aborted</div>;
417417
}
418418

419+
const errors = [];
419420
const pendingResult = ReactDOMFizzStatic.prerenderToNodeStream(<App />, {
421+
onError: error => {
422+
errors.push(error);
423+
},
420424
signal: controller.signal,
421425
});
422426
pendingResult.catch(() => {});
@@ -430,6 +434,7 @@ describe('ReactDOMFizzStatic', () => {
430434
result.prelude.pipe(writable);
431435
});
432436
expect(getVisibleChildren(container)).toEqual(undefined);
437+
expect(errors).toEqual([]);
433438
});
434439

435440
// @gate enablePostpone
@@ -447,13 +452,18 @@ describe('ReactDOMFizzStatic', () => {
447452
return <div>aborted</div>;
448453
}
449454

455+
const errors = [];
450456
const result = await ReactDOMFizzStatic.prerenderToNodeStream(<App />, {
457+
onError: error => {
458+
errors.push(error);
459+
},
451460
signal: controller.signal,
452461
});
453462
await act(async () => {
454463
result.prelude.pipe(writable);
455464
});
456465
expect(getVisibleChildren(container)).toEqual(undefined);
466+
expect(errors).toEqual([]);
457467
});
458468

459469
// @gate enableHalt

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@ describe('ReactDOMFizzStaticFloat', () => {
4040
React = require('react');
4141
ReactDOM = require('react-dom');
4242
ReactDOMFizzServer = require('react-dom/server.browser');
43-
if (__EXPERIMENTAL__) {
44-
ReactDOMFizzStatic = require('react-dom/static.browser');
45-
}
43+
ReactDOMFizzStatic = require('react-dom/static.browser');
4644
Suspense = React.Suspense;
4745
container = document.createElement('div');
4846
document.body.appendChild(container);

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

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ describe('ReactDOMFizzStaticNode', () => {
1818
beforeEach(() => {
1919
jest.resetModules();
2020
React = require('react');
21-
if (__EXPERIMENTAL__) {
22-
ReactDOMFizzStatic = require('react-dom/static');
23-
}
21+
ReactDOMFizzStatic = require('react-dom/static');
2422
Suspense = React.Suspense;
2523
});
2624

@@ -58,7 +56,7 @@ describe('ReactDOMFizzStaticNode', () => {
5856
}
5957
}
6058

61-
// @gate experimental
59+
// @gate enableHalt || enablePostpone
6260
it('should call prerenderToNodeStream', async () => {
6361
const result = await ReactDOMFizzStatic.prerenderToNodeStream(
6462
<div>hello world</div>,
@@ -67,14 +65,14 @@ describe('ReactDOMFizzStaticNode', () => {
6765
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
6866
});
6967

70-
// @gate experimental
68+
// @gate enableHalt || enablePostpone
7169
it('should suppport web streams', async () => {
7270
const result = await ReactDOMFizzStatic.prerender(<div>hello world</div>);
7371
const prelude = await readContentWeb(result.prelude);
7472
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
7573
});
7674

77-
// @gate experimental
75+
// @gate enableHalt || enablePostpone
7876
it('should emit DOCTYPE at the root of the document', async () => {
7977
const result = await ReactDOMFizzStatic.prerenderToNodeStream(
8078
<html>
@@ -93,7 +91,7 @@ describe('ReactDOMFizzStaticNode', () => {
9391
}
9492
});
9593

96-
// @gate experimental
94+
// @gate enableHalt || enablePostpone
9795
it('should emit bootstrap script src at the end', async () => {
9896
const result = await ReactDOMFizzStatic.prerenderToNodeStream(
9997
<div>hello world</div>,
@@ -109,7 +107,7 @@ describe('ReactDOMFizzStaticNode', () => {
109107
);
110108
});
111109

112-
// @gate experimental
110+
// @gate enableHalt || enablePostpone
113111
it('emits all HTML as one unit', async () => {
114112
let hasLoaded = false;
115113
let resolve;
@@ -139,7 +137,7 @@ describe('ReactDOMFizzStaticNode', () => {
139137
expect(prelude).toMatchInlineSnapshot(`"<div><!--$-->Done<!--/$--></div>"`);
140138
});
141139

142-
// @gate experimental
140+
// @gate enableHalt || enablePostpone
143141
it('should reject the promise when an error is thrown at the root', async () => {
144142
const reportedErrors = [];
145143
let caughtError = null;
@@ -161,7 +159,7 @@ describe('ReactDOMFizzStaticNode', () => {
161159
expect(reportedErrors).toEqual([theError]);
162160
});
163161

164-
// @gate experimental
162+
// @gate enableHalt || enablePostpone
165163
it('should reject the promise when an error is thrown inside a fallback', async () => {
166164
const reportedErrors = [];
167165
let caughtError = null;
@@ -185,7 +183,7 @@ describe('ReactDOMFizzStaticNode', () => {
185183
expect(reportedErrors).toEqual([theError]);
186184
});
187185

188-
// @gate experimental
186+
// @gate enableHalt || enablePostpone
189187
it('should not error the stream when an error is thrown inside suspense boundary', async () => {
190188
const reportedErrors = [];
191189
const result = await ReactDOMFizzStatic.prerenderToNodeStream(
@@ -206,7 +204,7 @@ describe('ReactDOMFizzStaticNode', () => {
206204
expect(reportedErrors).toEqual([theError]);
207205
});
208206

209-
// @gate experimental
207+
// @gate enableHalt || enablePostpone
210208
it('should be able to complete by aborting even if the promise never resolves', async () => {
211209
const errors = [];
212210
const controller = new AbortController();
@@ -236,7 +234,7 @@ describe('ReactDOMFizzStaticNode', () => {
236234
expect(errors).toEqual(['This operation was aborted']);
237235
});
238236

239-
// @gate experimental
237+
// @gate enableHalt || enablePostpone
240238
// @gate !enableHalt
241239
it('should reject if aborting before the shell is complete and enableHalt is disabled', async () => {
242240
const errors = [];
@@ -302,7 +300,7 @@ describe('ReactDOMFizzStaticNode', () => {
302300
expect(content).toBe('');
303301
});
304302

305-
// @gate experimental
303+
// @gate enableHalt || enablePostpone
306304
it('should be able to abort before something suspends', async () => {
307305
const errors = [];
308306
const controller = new AbortController();
@@ -343,7 +341,7 @@ describe('ReactDOMFizzStaticNode', () => {
343341
}
344342
});
345343

346-
// @gate experimental
344+
// @gate enableHalt || enablePostpone
347345
// @gate !enableHalt
348346
it('should reject if passing an already aborted signal and enableHalt is disabled', async () => {
349347
const errors = [];
@@ -414,7 +412,7 @@ describe('ReactDOMFizzStaticNode', () => {
414412
expect(content).toBe('');
415413
});
416414

417-
// @gate experimental
415+
// @gate enableHalt || enablePostpone
418416
it('supports custom abort reasons with a string', async () => {
419417
const promise = new Promise(r => {});
420418
function Wait() {
@@ -456,7 +454,7 @@ describe('ReactDOMFizzStaticNode', () => {
456454
expect(errors).toEqual(['foobar', 'foobar']);
457455
});
458456

459-
// @gate experimental
457+
// @gate enableHalt || enablePostpone
460458
it('supports custom abort reasons with an Error', async () => {
461459
const promise = new Promise(r => {});
462460
function Wait() {

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,9 @@
77
* @flow
88
*/
99

10-
export {renderToReadableStream, version} from './ReactDOMFizzServerBrowser.js';
11-
export {prerender} from './ReactDOMFizzStaticBrowser.js';
10+
export {
11+
renderToReadableStream,
12+
resume,
13+
version,
14+
} from './ReactDOMFizzServerBrowser.js';
15+
export {prerender, resumeAndPrerender} from './ReactDOMFizzStaticBrowser.js';

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,9 @@
77
* @flow
88
*/
99

10-
export {renderToReadableStream, version} from './ReactDOMFizzServerEdge.js';
11-
export {prerender} from './ReactDOMFizzStaticEdge.js';
10+
export {
11+
renderToReadableStream,
12+
resume,
13+
version,
14+
} from './ReactDOMFizzServerEdge.js';
15+
export {prerender, resumeAndPrerender} from './ReactDOMFizzStaticEdge.js';

0 commit comments

Comments
 (0)