Skip to content

Commit f5b04e7

Browse files
committed
[Flight] rename prerender to unstable_prerender and include in stable channel
We added an experimental `prerender` API to flight. This change exposes this API in stable channels prefixed as `unstable_prerender`. We have high confidence this API should exist but because we have not yet settled on how to handle resuming/replaying of RSC streams we may need to change the API contract to suit future needs. This release will allow us to get more usage out of the existing implemented functionality without requiring you to use experimental builds which will open up greater adoption and opportunity for feedback. the `prerender` implementation is documented in the `react-server` package. As with all RSC APIs implemented in bundler specific binding packages these aren't inteded to be called by end users but instead be used by frameworks implementing React Server Components. Previously `prerender` was exposed unprefixed and only in the experimental channel. This PR renames the export across all channels to `unstable_prerender` so users of this previously unprefixed api will need to update to the unstable form. This isn't a breaking change because it was only exposed in the experimental channel which does not follow semver. The reason we don't expose it under both names is that users may feature detect the unprefixed form and then when we finally do ship it as unprefixed we may change the function signature and break this code. Changing the name now is much safer.
1 parent 4a8fc0f commit f5b04e7

36 files changed

+96
-82
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ if (process.env.NODE_ENV === 'production') {
77
s = require('./cjs/react-server-dom-esm-server.node.development.js');
88
}
99

10-
if (s.prerenderToNodeStream) {
11-
exports.prerenderToNodeStream = s.prerenderToNodeStream;
10+
if (s.unstable_prerenderToNodeStream) {
11+
exports.unstable_prerenderToNodeStream = s.unstable_prerenderToNodeStream;
1212
}

packages/react-server-dom-esm/src/server/react-flight-dom-server.node.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
export {
1111
renderToPipeableStream,
12-
prerenderToNodeStream,
12+
prerenderToNodeStream as unstable_prerenderToNodeStream,
1313
decodeReplyFromBusboy,
1414
decodeReply,
1515
decodeAction,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
export {
1111
renderToPipeableStream,
12+
prerenderToNodeStream as unstable_prerenderToNodeStream,
1213
decodeReplyFromBusboy,
1314
decodeReply,
1415
decodeAction,

packages/react-server-dom-esm/static.node.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
* @flow
88
*/
99

10-
export {prerenderToNodeStream} from './src/server/react-flight-dom-server.node';
10+
export {unstable_prerenderToNodeStream} from './src/server/react-flight-dom-server.node';

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ if (process.env.NODE_ENV === 'production') {
77
s = require('./cjs/react-server-dom-turbopack-server.browser.development.js');
88
}
99

10-
if (s.prerender) {
11-
exports.prerender = s.prerender;
10+
if (s.unstable_prerender) {
11+
exports.unstable_prerender = s.unstable_prerender;
1212
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ if (process.env.NODE_ENV === 'production') {
77
s = require('./cjs/react-server-dom-turbopack-server.edge.development.js');
88
}
99

10-
if (s.prerender) {
11-
exports.prerender = s.prerender;
10+
if (s.unstable_prerender) {
11+
exports.unstable_prerender = s.unstable_prerender;
1212
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ if (process.env.NODE_ENV === 'production') {
77
s = require('./cjs/react-server-dom-turbopack-server.node.development.js');
88
}
99

10-
if (s.prerenderToNodeStream) {
11-
exports.prerenderToNodeStream = s.prerenderToNodeStream;
10+
if (s.unstable_prerenderToNodeStream) {
11+
exports.unstable_prerenderToNodeStream = s.unstable_prerenderToNodeStream;
1212
}

packages/react-server-dom-turbopack/src/server/react-flight-dom-server.browser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
export {
1111
renderToReadableStream,
12-
prerender,
12+
prerender as unstable_prerender,
1313
decodeReply,
1414
decodeAction,
1515
decodeFormState,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
export {
1111
renderToReadableStream,
12+
prerender as unstable_prerender,
1213
decodeReply,
1314
decodeAction,
1415
decodeFormState,

packages/react-server-dom-turbopack/src/server/react-flight-dom-server.edge.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
export {
1111
renderToReadableStream,
12-
prerender,
12+
prerender as unstable_prerender,
1313
decodeReply,
1414
decodeAction,
1515
decodeFormState,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
export {
1111
renderToReadableStream,
12+
prerender as unstable_prerender,
1213
decodeReply,
1314
decodeAction,
1415
decodeFormState,

packages/react-server-dom-turbopack/src/server/react-flight-dom-server.node.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
export {
1111
renderToPipeableStream,
12-
prerenderToNodeStream,
12+
prerenderToNodeStream as unstable_prerenderToNodeStream,
1313
decodeReplyFromBusboy,
1414
decodeReply,
1515
decodeAction,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
export {
1111
renderToPipeableStream,
12+
prerenderToNodeStream as unstable_prerenderToNodeStream,
1213
decodeReplyFromBusboy,
1314
decodeReply,
1415
decodeAction,

packages/react-server-dom-turbopack/static.browser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
* @flow
88
*/
99

10-
export {prerender} from './src/server/react-flight-dom-server.browser';
10+
export {unstable_prerender} from './src/server/react-flight-dom-server.browser';

packages/react-server-dom-turbopack/static.edge.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
* @flow
88
*/
99

10-
export {prerender} from './src/server/react-flight-dom-server.edge';
10+
export {unstable_prerender} from './src/server/react-flight-dom-server.edge';

packages/react-server-dom-turbopack/static.node.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
* @flow
88
*/
99

10-
export {prerenderToNodeStream} from './src/server/react-flight-dom-server.node';
10+
export {unstable_prerenderToNodeStream} from './src/server/react-flight-dom-server.node';

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ if (process.env.NODE_ENV === 'production') {
77
s = require('./cjs/react-server-dom-webpack-server.browser.development.js');
88
}
99

10-
if (s.prerender) {
11-
exports.prerender = s.prerender;
10+
if (s.unstable_prerender) {
11+
exports.unstable_prerender = s.unstable_prerender;
1212
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ if (process.env.NODE_ENV === 'production') {
77
s = require('./cjs/react-server-dom-webpack-server.edge.development.js');
88
}
99

10-
if (s.prerender) {
11-
exports.prerender = s.prerender;
10+
if (s.unstable_prerender) {
11+
exports.unstable_prerender = s.unstable_prerender;
1212
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ if (process.env.NODE_ENV === 'production') {
77
s = require('./cjs/react-server-dom-webpack-server.node.development.js');
88
}
99

10-
if (s.prerenderToNodeStream) {
11-
exports.prerenderToNodeStream = s.prerenderToNodeStream;
10+
if (s.unstable_prerenderToNodeStream) {
11+
exports.unstable_prerenderToNodeStream = s.unstable_prerenderToNodeStream;
1212
}

packages/react-server-dom-webpack/npm/static.node.unbundled.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ if (process.env.NODE_ENV === 'production') {
77
s = require('./cjs/react-server-dom-webpack-server.node.unbundled.development.js');
88
}
99

10-
if (s.prerenderToNodeStream) {
11-
exports.prerenderToNodeStream = s.prerenderToNodeStream;
10+
if (s.unstable_prerenderToNodeStream) {
11+
exports.unstable_prerenderToNodeStream = s.unstable_prerenderToNodeStream;
1212
}

packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2787,10 +2787,11 @@ describe('ReactFlightDOM', () => {
27872787
const {pendingResult} = await serverAct(async () => {
27882788
// destructure trick to avoid the act scope from awaiting the returned value
27892789
return {
2790-
pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
2791-
<App />,
2792-
webpackMap,
2793-
),
2790+
pendingResult:
2791+
ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
2792+
<App />,
2793+
webpackMap,
2794+
),
27942795
};
27952796
});
27962797

@@ -2853,16 +2854,17 @@ describe('ReactFlightDOM', () => {
28532854
const {pendingResult} = await serverAct(async () => {
28542855
// destructure trick to avoid the act scope from awaiting the returned value
28552856
return {
2856-
pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
2857-
<App />,
2858-
webpackMap,
2859-
{
2860-
signal: controller.signal,
2861-
onError(err) {
2862-
errors.push(err);
2857+
pendingResult:
2858+
ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
2859+
<App />,
2860+
webpackMap,
2861+
{
2862+
signal: controller.signal,
2863+
onError(err) {
2864+
errors.push(err);
2865+
},
28632866
},
2864-
},
2865-
),
2867+
),
28662868
};
28672869
});
28682870

@@ -2934,18 +2936,19 @@ describe('ReactFlightDOM', () => {
29342936
const controller = new AbortController();
29352937
const {pendingResult} = await serverAct(() => {
29362938
return {
2937-
pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
2938-
{
2939-
multiShotIterable,
2940-
},
2941-
{},
2942-
{
2943-
onError(x) {
2944-
errors.push(x);
2939+
pendingResult:
2940+
ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
2941+
{
2942+
multiShotIterable,
29452943
},
2946-
signal: controller.signal,
2947-
},
2948-
),
2944+
{},
2945+
{
2946+
onError(x) {
2947+
errors.push(x);
2948+
},
2949+
signal: controller.signal,
2950+
},
2951+
),
29492952
};
29502953
});
29512954

@@ -3017,16 +3020,17 @@ describe('ReactFlightDOM', () => {
30173020
const errors = [];
30183021
const {pendingResult} = await serverAct(() => {
30193022
return {
3020-
pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
3021-
<App />,
3022-
{},
3023-
{
3024-
onError(x) {
3025-
errors.push(x);
3023+
pendingResult:
3024+
ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
3025+
<App />,
3026+
{},
3027+
{
3028+
onError(x) {
3029+
errors.push(x);
3030+
},
3031+
signal: controller.signal,
30263032
},
3027-
signal: controller.signal,
3028-
},
3029-
),
3033+
),
30303034
};
30313035
});
30323036

packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2490,7 +2490,7 @@ describe('ReactFlightDOMBrowser', () => {
24902490
const {pendingResult} = await serverAct(async () => {
24912491
// destructure trick to avoid the act scope from awaiting the returned value
24922492
return {
2493-
pendingResult: ReactServerDOMStaticServer.prerender(
2493+
pendingResult: ReactServerDOMStaticServer.unstable_prerender(
24942494
<App />,
24952495
webpackMap,
24962496
),
@@ -2543,7 +2543,7 @@ describe('ReactFlightDOMBrowser', () => {
25432543
const {pendingResult} = await serverAct(async () => {
25442544
// destructure trick to avoid the act scope from awaiting the returned value
25452545
return {
2546-
pendingResult: ReactServerDOMStaticServer.prerender(
2546+
pendingResult: ReactServerDOMStaticServer.unstable_prerender(
25472547
<App />,
25482548
webpackMap,
25492549
{

packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,7 +1134,7 @@ describe('ReactFlightDOMEdge', () => {
11341134
const {pendingResult} = await serverAct(async () => {
11351135
// destructure trick to avoid the act scope from awaiting the returned value
11361136
return {
1137-
pendingResult: ReactServerDOMStaticServer.prerender(
1137+
pendingResult: ReactServerDOMStaticServer.unstable_prerender(
11381138
<App />,
11391139
webpackMap,
11401140
),
@@ -1192,7 +1192,7 @@ describe('ReactFlightDOMEdge', () => {
11921192
const {pendingResult} = await serverAct(async () => {
11931193
// destructure trick to avoid the act scope from awaiting the returned value
11941194
return {
1195-
pendingResult: ReactServerDOMStaticServer.prerender(
1195+
pendingResult: ReactServerDOMStaticServer.unstable_prerender(
11961196
<App />,
11971197
webpackMap,
11981198
{

packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -411,10 +411,11 @@ describe('ReactFlightDOMNode', () => {
411411
const {pendingResult} = await serverAct(async () => {
412412
// destructure trick to avoid the act scope from awaiting the returned value
413413
return {
414-
pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
415-
<App />,
416-
webpackMap,
417-
),
414+
pendingResult:
415+
ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
416+
<App />,
417+
webpackMap,
418+
),
418419
};
419420
});
420421

@@ -469,16 +470,17 @@ describe('ReactFlightDOMNode', () => {
469470
const {pendingResult} = await serverAct(async () => {
470471
// destructure trick to avoid the act scope from awaiting the returned value
471472
return {
472-
pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
473-
<App />,
474-
webpackMap,
475-
{
476-
signal: controller.signal,
477-
onError(err) {
478-
errors.push(err);
473+
pendingResult:
474+
ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
475+
<App />,
476+
webpackMap,
477+
{
478+
signal: controller.signal,
479+
onError(err) {
480+
errors.push(err);
481+
},
479482
},
480-
},
481-
),
483+
),
482484
};
483485
});
484486

packages/react-server-dom-webpack/src/server/react-flight-dom-server.browser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
export {
1111
renderToReadableStream,
12-
prerender,
12+
prerender as unstable_prerender,
1313
decodeReply,
1414
decodeAction,
1515
decodeFormState,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
export {
1111
renderToReadableStream,
12+
prerender as unstable_prerender,
1213
decodeReply,
1314
decodeAction,
1415
decodeFormState,

packages/react-server-dom-webpack/src/server/react-flight-dom-server.edge.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
export {
1111
renderToReadableStream,
12-
prerender,
12+
prerender as unstable_prerender,
1313
decodeReply,
1414
decodeAction,
1515
decodeFormState,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
export {
1111
renderToReadableStream,
12+
prerender as unstable_prerender,
1213
decodeReply,
1314
decodeAction,
1415
decodeFormState,

packages/react-server-dom-webpack/src/server/react-flight-dom-server.node.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
export {
1111
renderToPipeableStream,
12-
prerenderToNodeStream,
12+
prerenderToNodeStream as unstable_prerenderToNodeStream,
1313
decodeReplyFromBusboy,
1414
decodeReply,
1515
decodeAction,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
export {
1111
renderToPipeableStream,
12+
prerenderToNodeStream as unstable_prerenderToNodeStream,
1213
decodeReplyFromBusboy,
1314
decodeReply,
1415
decodeAction,

0 commit comments

Comments
 (0)