diff --git a/fixtures/flight/server/region.js b/fixtures/flight/server/region.js
index 7339e3a48abbb..ccf7907aacc1f 100644
--- a/fixtures/flight/server/region.js
+++ b/fixtures/flight/server/region.js
@@ -133,7 +133,7 @@ async function renderApp(res, returnValue, formState, noCache, debugChannel) {
}
async function prerenderApp(res, returnValue, formState, noCache) {
- const {unstable_prerenderToNodeStream: prerenderToNodeStream} = await import(
+ const {prerenderToNodeStream} = await import(
'react-server-dom-webpack/static'
);
// const m = require('../src/App.js');
diff --git a/packages/react-dom/npm/server.browser.js b/packages/react-dom/npm/server.browser.js
index 04446965dc662..4d8066527139f 100644
--- a/packages/react-dom/npm/server.browser.js
+++ b/packages/react-dom/npm/server.browser.js
@@ -13,6 +13,4 @@ exports.version = l.version;
exports.renderToString = l.renderToString;
exports.renderToStaticMarkup = l.renderToStaticMarkup;
exports.renderToReadableStream = s.renderToReadableStream;
-if (s.resume) {
- exports.resume = s.resume;
-}
+exports.resume = s.resume;
diff --git a/packages/react-dom/npm/server.bun.js b/packages/react-dom/npm/server.bun.js
index f0b6bf3a82981..bb44b38ec3c77 100644
--- a/packages/react-dom/npm/server.bun.js
+++ b/packages/react-dom/npm/server.bun.js
@@ -12,8 +12,6 @@ if (process.env.NODE_ENV === 'production') {
exports.version = b.version;
exports.renderToReadableStream = b.renderToReadableStream;
-if (b.resume) {
- exports.resume = b.resume;
-}
+exports.resume = b.resume;
exports.renderToString = l.renderToString;
exports.renderToStaticMarkup = l.renderToStaticMarkup;
diff --git a/packages/react-dom/npm/server.edge.js b/packages/react-dom/npm/server.edge.js
index d64b9da7360a6..cc05ed6120f4f 100644
--- a/packages/react-dom/npm/server.edge.js
+++ b/packages/react-dom/npm/server.edge.js
@@ -14,6 +14,4 @@ exports.version = b.version;
exports.renderToReadableStream = b.renderToReadableStream;
exports.renderToString = l.renderToString;
exports.renderToStaticMarkup = l.renderToStaticMarkup;
-if (b.resume) {
- exports.resume = b.resume;
-}
+exports.resume = b.resume;
diff --git a/packages/react-dom/npm/server.node.js b/packages/react-dom/npm/server.node.js
index 34276711b1025..3feeac208fe17 100644
--- a/packages/react-dom/npm/server.node.js
+++ b/packages/react-dom/npm/server.node.js
@@ -14,9 +14,5 @@ exports.renderToString = l.renderToString;
exports.renderToStaticMarkup = l.renderToStaticMarkup;
exports.renderToPipeableStream = s.renderToPipeableStream;
exports.renderToReadableStream = s.renderToReadableStream;
-if (s.resumeToPipeableStream) {
- exports.resumeToPipeableStream = s.resumeToPipeableStream;
-}
-if (s.resume) {
- exports.resume = s.resume;
-}
+exports.resumeToPipeableStream = s.resumeToPipeableStream;
+exports.resume = s.resume;
diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js
index de6e21b557a1d..650120234202a 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js
@@ -416,7 +416,11 @@ describe('ReactDOMFizzStatic', () => {
return
aborted
;
}
+ const errors = [];
const pendingResult = ReactDOMFizzStatic.prerenderToNodeStream(, {
+ onError: error => {
+ errors.push(error);
+ },
signal: controller.signal,
});
pendingResult.catch(() => {});
@@ -430,6 +434,7 @@ describe('ReactDOMFizzStatic', () => {
result.prelude.pipe(writable);
});
expect(getVisibleChildren(container)).toEqual(undefined);
+ expect(errors).toEqual([]);
});
// @gate enablePostpone
@@ -447,13 +452,18 @@ describe('ReactDOMFizzStatic', () => {
return aborted
;
}
+ const errors = [];
const result = await ReactDOMFizzStatic.prerenderToNodeStream(, {
+ onError: error => {
+ errors.push(error);
+ },
signal: controller.signal,
});
await act(async () => {
result.prelude.pipe(writable);
});
expect(getVisibleChildren(container)).toEqual(undefined);
+ expect(errors).toEqual([]);
});
// @gate enableHalt
diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzStaticFloat-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzStaticFloat-test.js
index 8bb1c7c861075..e806235b7fd04 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFizzStaticFloat-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFizzStaticFloat-test.js
@@ -40,9 +40,7 @@ describe('ReactDOMFizzStaticFloat', () => {
React = require('react');
ReactDOM = require('react-dom');
ReactDOMFizzServer = require('react-dom/server.browser');
- if (__EXPERIMENTAL__) {
- ReactDOMFizzStatic = require('react-dom/static.browser');
- }
+ ReactDOMFizzStatic = require('react-dom/static.browser');
Suspense = React.Suspense;
container = document.createElement('div');
document.body.appendChild(container);
diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js
index e4b21fcf8d5a6..d3c7ba9d2b7e7 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js
@@ -18,9 +18,7 @@ describe('ReactDOMFizzStaticNode', () => {
beforeEach(() => {
jest.resetModules();
React = require('react');
- if (__EXPERIMENTAL__) {
- ReactDOMFizzStatic = require('react-dom/static');
- }
+ ReactDOMFizzStatic = require('react-dom/static');
Suspense = React.Suspense;
});
@@ -58,7 +56,7 @@ describe('ReactDOMFizzStaticNode', () => {
}
}
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('should call prerenderToNodeStream', async () => {
const result = await ReactDOMFizzStatic.prerenderToNodeStream(
hello world
,
@@ -67,14 +65,14 @@ describe('ReactDOMFizzStaticNode', () => {
expect(prelude).toMatchInlineSnapshot(`"hello world
"`);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('should suppport web streams', async () => {
const result = await ReactDOMFizzStatic.prerender(hello world
);
const prelude = await readContentWeb(result.prelude);
expect(prelude).toMatchInlineSnapshot(`"hello world
"`);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('should emit DOCTYPE at the root of the document', async () => {
const result = await ReactDOMFizzStatic.prerenderToNodeStream(
@@ -93,7 +91,7 @@ describe('ReactDOMFizzStaticNode', () => {
}
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('should emit bootstrap script src at the end', async () => {
const result = await ReactDOMFizzStatic.prerenderToNodeStream(
hello world
,
@@ -109,7 +107,7 @@ describe('ReactDOMFizzStaticNode', () => {
);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('emits all HTML as one unit', async () => {
let hasLoaded = false;
let resolve;
@@ -139,7 +137,7 @@ describe('ReactDOMFizzStaticNode', () => {
expect(prelude).toMatchInlineSnapshot(`"Done
"`);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('should reject the promise when an error is thrown at the root', async () => {
const reportedErrors = [];
let caughtError = null;
@@ -161,7 +159,7 @@ describe('ReactDOMFizzStaticNode', () => {
expect(reportedErrors).toEqual([theError]);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('should reject the promise when an error is thrown inside a fallback', async () => {
const reportedErrors = [];
let caughtError = null;
@@ -185,7 +183,7 @@ describe('ReactDOMFizzStaticNode', () => {
expect(reportedErrors).toEqual([theError]);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('should not error the stream when an error is thrown inside suspense boundary', async () => {
const reportedErrors = [];
const result = await ReactDOMFizzStatic.prerenderToNodeStream(
@@ -206,7 +204,7 @@ describe('ReactDOMFizzStaticNode', () => {
expect(reportedErrors).toEqual([theError]);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('should be able to complete by aborting even if the promise never resolves', async () => {
const errors = [];
const controller = new AbortController();
@@ -236,7 +234,7 @@ describe('ReactDOMFizzStaticNode', () => {
expect(errors).toEqual(['This operation was aborted']);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
// @gate !enableHalt
it('should reject if aborting before the shell is complete and enableHalt is disabled', async () => {
const errors = [];
@@ -302,7 +300,7 @@ describe('ReactDOMFizzStaticNode', () => {
expect(content).toBe('');
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('should be able to abort before something suspends', async () => {
const errors = [];
const controller = new AbortController();
@@ -343,7 +341,7 @@ describe('ReactDOMFizzStaticNode', () => {
}
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
// @gate !enableHalt
it('should reject if passing an already aborted signal and enableHalt is disabled', async () => {
const errors = [];
@@ -414,7 +412,7 @@ describe('ReactDOMFizzStaticNode', () => {
expect(content).toBe('');
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('supports custom abort reasons with a string', async () => {
const promise = new Promise(r => {});
function Wait() {
@@ -456,7 +454,7 @@ describe('ReactDOMFizzStaticNode', () => {
expect(errors).toEqual(['foobar', 'foobar']);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('supports custom abort reasons with an Error', async () => {
const promise = new Promise(r => {});
function Wait() {
diff --git a/packages/react-dom/src/server/react-dom-server.browser.stable.js b/packages/react-dom/src/server/react-dom-server.browser.stable.js
index 2c8f8b5dd59a3..679e6803f6aa8 100644
--- a/packages/react-dom/src/server/react-dom-server.browser.stable.js
+++ b/packages/react-dom/src/server/react-dom-server.browser.stable.js
@@ -7,5 +7,9 @@
* @flow
*/
-export {renderToReadableStream, version} from './ReactDOMFizzServerBrowser.js';
-export {prerender} from './ReactDOMFizzStaticBrowser.js';
+export {
+ renderToReadableStream,
+ resume,
+ version,
+} from './ReactDOMFizzServerBrowser.js';
+export {prerender, resumeAndPrerender} from './ReactDOMFizzStaticBrowser.js';
diff --git a/packages/react-dom/src/server/react-dom-server.edge.stable.js b/packages/react-dom/src/server/react-dom-server.edge.stable.js
index 5f47ecafd371a..588b6d8cb59af 100644
--- a/packages/react-dom/src/server/react-dom-server.edge.stable.js
+++ b/packages/react-dom/src/server/react-dom-server.edge.stable.js
@@ -7,5 +7,9 @@
* @flow
*/
-export {renderToReadableStream, version} from './ReactDOMFizzServerEdge.js';
-export {prerender} from './ReactDOMFizzStaticEdge.js';
+export {
+ renderToReadableStream,
+ resume,
+ version,
+} from './ReactDOMFizzServerEdge.js';
+export {prerender, resumeAndPrerender} from './ReactDOMFizzStaticEdge.js';
diff --git a/packages/react-dom/src/server/react-dom-server.node.stable.js b/packages/react-dom/src/server/react-dom-server.node.stable.js
index a650dc161013c..e26eee2284565 100644
--- a/packages/react-dom/src/server/react-dom-server.node.stable.js
+++ b/packages/react-dom/src/server/react-dom-server.node.stable.js
@@ -10,6 +10,13 @@
export {
renderToPipeableStream,
renderToReadableStream,
+ resume,
+ resumeToPipeableStream,
version,
} from './ReactDOMFizzServerNode.js';
-export {prerenderToNodeStream, prerender} from './ReactDOMFizzStaticNode.js';
+export {
+ prerenderToNodeStream,
+ prerender,
+ resumeAndPrerender,
+ resumeAndPrerenderToNodeStream,
+} from './ReactDOMFizzStaticNode.js';
diff --git a/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js b/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js
index 0bd0a25534202..82eb4620642f2 100644
--- a/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js
@@ -1589,17 +1589,15 @@ describe('ReactHooks', () => {
useStateHelper,
];
- if (__EXPERIMENTAL__) {
- const useTransitionHelper = () => React.useTransition();
- const useDeferredValueHelper = () =>
- React.useDeferredValue(0, {timeoutMs: 1000});
+ const useTransitionHelper = () => React.useTransition();
+ const useDeferredValueHelper = () =>
+ React.useDeferredValue(0, {timeoutMs: 1000});
- orderedHooks.push(useTransitionHelper);
- orderedHooks.push(useDeferredValueHelper);
+ orderedHooks.push(useTransitionHelper);
+ orderedHooks.push(useDeferredValueHelper);
- hooksInList.push(useTransitionHelper);
- hooksInList.push(useDeferredValueHelper);
- }
+ hooksInList.push(useTransitionHelper);
+ hooksInList.push(useDeferredValueHelper);
const formatHookNamesToMatchErrorMessage = (hookNameA, hookNameB) => {
return `use${hookNameA}${' '.repeat(24 - hookNameA.length)}${
diff --git a/packages/react-server-dom-esm/npm/static.node.js b/packages/react-server-dom-esm/npm/static.node.js
index 7fb451a3cd807..eea9fb7e18ebf 100644
--- a/packages/react-server-dom-esm/npm/static.node.js
+++ b/packages/react-server-dom-esm/npm/static.node.js
@@ -7,6 +7,4 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-esm-server.node.development.js');
}
-if (s.unstable_prerenderToNodeStream) {
- exports.unstable_prerenderToNodeStream = s.unstable_prerenderToNodeStream;
-}
+exports.prerenderToNodeStream = s.prerenderToNodeStream;
diff --git a/packages/react-server-dom-esm/src/server/react-flight-dom-server.node.js b/packages/react-server-dom-esm/src/server/react-flight-dom-server.node.js
index 7d5b19a521ea7..f24946fcae8bb 100644
--- a/packages/react-server-dom-esm/src/server/react-flight-dom-server.node.js
+++ b/packages/react-server-dom-esm/src/server/react-flight-dom-server.node.js
@@ -9,7 +9,7 @@
export {
renderToPipeableStream,
- prerenderToNodeStream as unstable_prerenderToNodeStream,
+ prerenderToNodeStream,
decodeReplyFromBusboy,
decodeReply,
decodeAction,
diff --git a/packages/react-server-dom-esm/static.node.js b/packages/react-server-dom-esm/static.node.js
index 345f4123c9f09..d15eddc6f9b0e 100644
--- a/packages/react-server-dom-esm/static.node.js
+++ b/packages/react-server-dom-esm/static.node.js
@@ -7,4 +7,4 @@
* @flow
*/
-export {unstable_prerenderToNodeStream} from './src/server/react-flight-dom-server.node';
+export {prerenderToNodeStream} from './src/server/react-flight-dom-server.node';
diff --git a/packages/react-server-dom-parcel/npm/static.browser.js b/packages/react-server-dom-parcel/npm/static.browser.js
index 1c5c8f19274f9..0f5f9ac5570a2 100644
--- a/packages/react-server-dom-parcel/npm/static.browser.js
+++ b/packages/react-server-dom-parcel/npm/static.browser.js
@@ -7,6 +7,4 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-parcel-server.browser.development.js');
}
-if (s.unstable_prerender) {
- exports.unstable_prerender = s.unstable_prerender;
-}
+exports.prerender = s.prerender;
diff --git a/packages/react-server-dom-parcel/npm/static.edge.js b/packages/react-server-dom-parcel/npm/static.edge.js
index 4deafdca05e9f..540332ad8d798 100644
--- a/packages/react-server-dom-parcel/npm/static.edge.js
+++ b/packages/react-server-dom-parcel/npm/static.edge.js
@@ -7,6 +7,4 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-parcel-server.edge.development.js');
}
-if (s.unstable_prerender) {
- exports.unstable_prerender = s.unstable_prerender;
-}
+exports.prerender = s.prerender;
diff --git a/packages/react-server-dom-parcel/npm/static.node.js b/packages/react-server-dom-parcel/npm/static.node.js
index 411c2958ef966..ca66f6e3f0e75 100644
--- a/packages/react-server-dom-parcel/npm/static.node.js
+++ b/packages/react-server-dom-parcel/npm/static.node.js
@@ -7,9 +7,5 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-parcel-server.node.development.js');
}
-if (s.unstable_prerender) {
- exports.unstable_prerender = s.unstable_prerender;
-}
-if (s.unstable_prerenderToNodeStream) {
- exports.unstable_prerenderToNodeStream = s.unstable_prerenderToNodeStream;
-}
+exports.prerender = s.prerender;
+exports.prerenderToNodeStream = s.prerenderToNodeStream;
diff --git a/packages/react-server-dom-parcel/src/server/react-flight-dom-server.browser.js b/packages/react-server-dom-parcel/src/server/react-flight-dom-server.browser.js
index c0a8015873eff..9b2a047c324f5 100644
--- a/packages/react-server-dom-parcel/src/server/react-flight-dom-server.browser.js
+++ b/packages/react-server-dom-parcel/src/server/react-flight-dom-server.browser.js
@@ -9,7 +9,7 @@
export {
renderToReadableStream,
- prerender as unstable_prerender,
+ prerender,
decodeReply,
decodeAction,
decodeFormState,
diff --git a/packages/react-server-dom-parcel/src/server/react-flight-dom-server.edge.js b/packages/react-server-dom-parcel/src/server/react-flight-dom-server.edge.js
index 54f3dbb2ec346..7f99c56f7cc76 100644
--- a/packages/react-server-dom-parcel/src/server/react-flight-dom-server.edge.js
+++ b/packages/react-server-dom-parcel/src/server/react-flight-dom-server.edge.js
@@ -9,7 +9,7 @@
export {
renderToReadableStream,
- prerender as unstable_prerender,
+ prerender,
decodeReply,
decodeReplyFromAsyncIterable,
decodeAction,
diff --git a/packages/react-server-dom-parcel/src/server/react-flight-dom-server.node.js b/packages/react-server-dom-parcel/src/server/react-flight-dom-server.node.js
index 37c0497178422..f18bec13536bd 100644
--- a/packages/react-server-dom-parcel/src/server/react-flight-dom-server.node.js
+++ b/packages/react-server-dom-parcel/src/server/react-flight-dom-server.node.js
@@ -10,8 +10,8 @@
export {
renderToReadableStream,
renderToPipeableStream,
- prerender as unstable_prerender,
- prerenderToNodeStream as unstable_prerenderToNodeStream,
+ prerender,
+ prerenderToNodeStream,
decodeReply,
decodeReplyFromBusboy,
decodeReplyFromAsyncIterable,
diff --git a/packages/react-server-dom-parcel/static.browser.js b/packages/react-server-dom-parcel/static.browser.js
index 3281fed6ea29c..2589789163206 100644
--- a/packages/react-server-dom-parcel/static.browser.js
+++ b/packages/react-server-dom-parcel/static.browser.js
@@ -7,4 +7,4 @@
* @flow
*/
-export {unstable_prerender} from './src/server/react-flight-dom-server.browser';
+export {prerender} from './src/server/react-flight-dom-server.browser';
diff --git a/packages/react-server-dom-parcel/static.edge.js b/packages/react-server-dom-parcel/static.edge.js
index b1a96317ae9b3..a39d54c73f579 100644
--- a/packages/react-server-dom-parcel/static.edge.js
+++ b/packages/react-server-dom-parcel/static.edge.js
@@ -7,4 +7,4 @@
* @flow
*/
-export {unstable_prerender} from './src/server/react-flight-dom-server.edge';
+export {prerender} from './src/server/react-flight-dom-server.edge';
diff --git a/packages/react-server-dom-parcel/static.node.js b/packages/react-server-dom-parcel/static.node.js
index 1b2c11edc10f1..78e70a1cf4c28 100644
--- a/packages/react-server-dom-parcel/static.node.js
+++ b/packages/react-server-dom-parcel/static.node.js
@@ -8,6 +8,6 @@
*/
export {
- unstable_prerender,
- unstable_prerenderToNodeStream,
+ prerender,
+ prerenderToNodeStream,
} from './src/server/react-flight-dom-server.node';
diff --git a/packages/react-server-dom-turbopack/npm/static.browser.js b/packages/react-server-dom-turbopack/npm/static.browser.js
index d04d771c2d3b6..d6acca4d6ec5d 100644
--- a/packages/react-server-dom-turbopack/npm/static.browser.js
+++ b/packages/react-server-dom-turbopack/npm/static.browser.js
@@ -7,6 +7,4 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-turbopack-server.browser.development.js');
}
-if (s.unstable_prerender) {
- exports.unstable_prerender = s.unstable_prerender;
-}
+exports.prerender = s.prerender;
diff --git a/packages/react-server-dom-turbopack/npm/static.edge.js b/packages/react-server-dom-turbopack/npm/static.edge.js
index 6d9ca4b3e8b84..acd8ad68d74e7 100644
--- a/packages/react-server-dom-turbopack/npm/static.edge.js
+++ b/packages/react-server-dom-turbopack/npm/static.edge.js
@@ -7,6 +7,4 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-turbopack-server.edge.development.js');
}
-if (s.unstable_prerender) {
- exports.unstable_prerender = s.unstable_prerender;
-}
+exports.prerender = s.prerender;
diff --git a/packages/react-server-dom-turbopack/npm/static.node.js b/packages/react-server-dom-turbopack/npm/static.node.js
index 34c9d63a4a26b..f082e275e0120 100644
--- a/packages/react-server-dom-turbopack/npm/static.node.js
+++ b/packages/react-server-dom-turbopack/npm/static.node.js
@@ -7,9 +7,5 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-turbopack-server.node.development.js');
}
-if (s.unstable_prerender) {
- exports.unstable_prerender = s.unstable_prerender;
-}
-if (s.unstable_prerenderToNodeStream) {
- exports.unstable_prerenderToNodeStream = s.unstable_prerenderToNodeStream;
-}
+exports.prerender = s.prerender;
+exports.prerenderToNodeStream = s.prerenderToNodeStream;
diff --git a/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.browser.js b/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.browser.js
index c0860225d7b57..d8373ec551bc0 100644
--- a/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.browser.js
+++ b/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.browser.js
@@ -9,7 +9,7 @@
export {
renderToReadableStream,
- prerender as unstable_prerender,
+ prerender,
decodeReply,
decodeAction,
decodeFormState,
diff --git a/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.edge.js b/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.edge.js
index 9198f9913ed37..e103ff761913f 100644
--- a/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.edge.js
+++ b/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.edge.js
@@ -9,7 +9,7 @@
export {
renderToReadableStream,
- prerender as unstable_prerender,
+ prerender,
decodeReply,
decodeReplyFromAsyncIterable,
decodeAction,
diff --git a/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.node.js b/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.node.js
index 1e3571a6f2ba4..3c2b9e512c7ca 100644
--- a/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.node.js
+++ b/packages/react-server-dom-turbopack/src/server/react-flight-dom-server.node.js
@@ -10,8 +10,8 @@
export {
renderToReadableStream,
renderToPipeableStream,
- prerender as unstable_prerender,
- prerenderToNodeStream as unstable_prerenderToNodeStream,
+ prerender,
+ prerenderToNodeStream,
decodeReply,
decodeReplyFromBusboy,
decodeReplyFromAsyncIterable,
diff --git a/packages/react-server-dom-turbopack/static.browser.js b/packages/react-server-dom-turbopack/static.browser.js
index 3281fed6ea29c..2589789163206 100644
--- a/packages/react-server-dom-turbopack/static.browser.js
+++ b/packages/react-server-dom-turbopack/static.browser.js
@@ -7,4 +7,4 @@
* @flow
*/
-export {unstable_prerender} from './src/server/react-flight-dom-server.browser';
+export {prerender} from './src/server/react-flight-dom-server.browser';
diff --git a/packages/react-server-dom-turbopack/static.edge.js b/packages/react-server-dom-turbopack/static.edge.js
index b1a96317ae9b3..a39d54c73f579 100644
--- a/packages/react-server-dom-turbopack/static.edge.js
+++ b/packages/react-server-dom-turbopack/static.edge.js
@@ -7,4 +7,4 @@
* @flow
*/
-export {unstable_prerender} from './src/server/react-flight-dom-server.edge';
+export {prerender} from './src/server/react-flight-dom-server.edge';
diff --git a/packages/react-server-dom-turbopack/static.node.js b/packages/react-server-dom-turbopack/static.node.js
index 1b2c11edc10f1..78e70a1cf4c28 100644
--- a/packages/react-server-dom-turbopack/static.node.js
+++ b/packages/react-server-dom-turbopack/static.node.js
@@ -8,6 +8,6 @@
*/
export {
- unstable_prerender,
- unstable_prerenderToNodeStream,
+ prerender,
+ prerenderToNodeStream,
} from './src/server/react-flight-dom-server.node';
diff --git a/packages/react-server-dom-webpack/npm/static.browser.js b/packages/react-server-dom-webpack/npm/static.browser.js
index 8c8951a62b9ea..06218aec3d437 100644
--- a/packages/react-server-dom-webpack/npm/static.browser.js
+++ b/packages/react-server-dom-webpack/npm/static.browser.js
@@ -7,6 +7,4 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-webpack-server.browser.development.js');
}
-if (s.unstable_prerender) {
- exports.unstable_prerender = s.unstable_prerender;
-}
+exports.prerender = s.prerender;
diff --git a/packages/react-server-dom-webpack/npm/static.edge.js b/packages/react-server-dom-webpack/npm/static.edge.js
index 975a4b5b87281..df9085690aaf6 100644
--- a/packages/react-server-dom-webpack/npm/static.edge.js
+++ b/packages/react-server-dom-webpack/npm/static.edge.js
@@ -7,6 +7,4 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-webpack-server.edge.development.js');
}
-if (s.unstable_prerender) {
- exports.unstable_prerender = s.unstable_prerender;
-}
+exports.prerender = s.prerender;
diff --git a/packages/react-server-dom-webpack/npm/static.node.js b/packages/react-server-dom-webpack/npm/static.node.js
index b0e4477fab466..2f649d1fc514e 100644
--- a/packages/react-server-dom-webpack/npm/static.node.js
+++ b/packages/react-server-dom-webpack/npm/static.node.js
@@ -7,9 +7,5 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-webpack-server.node.development.js');
}
-if (s.unstable_prerender) {
- exports.unstable_prerender = s.unstable_prerender;
-}
-if (s.unstable_prerenderToNodeStream) {
- exports.unstable_prerenderToNodeStream = s.unstable_prerenderToNodeStream;
-}
+exports.prerender = s.prerender;
+exports.prerenderToNodeStream = s.prerenderToNodeStream;
diff --git a/packages/react-server-dom-webpack/npm/static.node.unbundled.js b/packages/react-server-dom-webpack/npm/static.node.unbundled.js
index 5df3d5bf7afbc..850886dcd9e78 100644
--- a/packages/react-server-dom-webpack/npm/static.node.unbundled.js
+++ b/packages/react-server-dom-webpack/npm/static.node.unbundled.js
@@ -7,6 +7,4 @@ if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-server-dom-webpack-server.node.unbundled.development.js');
}
-if (s.unstable_prerenderToNodeStream) {
- exports.unstable_prerenderToNodeStream = s.unstable_prerenderToNodeStream;
-}
+exports.prerenderToNodeStream = s.prerenderToNodeStream;
diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js
index 60154d6118138..9fe9c7aaf32fd 100644
--- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js
+++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js
@@ -63,11 +63,9 @@ describe('ReactFlightDOM', () => {
jest.mock('react-server-dom-webpack/server', () =>
require('react-server-dom-webpack/server.node.unbundled'),
);
- if (__EXPERIMENTAL__) {
- jest.mock('react-server-dom-webpack/static', () =>
- require('react-server-dom-webpack/static.node.unbundled'),
- );
- }
+ jest.mock('react-server-dom-webpack/static', () =>
+ require('react-server-dom-webpack/static.node.unbundled'),
+ );
const WebpackMock = require('./utils/WebpackMock');
clientExports = WebpackMock.clientExports;
clientExportsESM = WebpackMock.clientExportsESM;
@@ -75,9 +73,7 @@ describe('ReactFlightDOM', () => {
webpackMap = WebpackMock.webpackMap;
ReactServerDOMServer = require('react-server-dom-webpack/server');
- if (__EXPERIMENTAL__) {
- ReactServerDOMStaticServer = require('react-server-dom-webpack/static');
- }
+ ReactServerDOMStaticServer = require('react-server-dom-webpack/static');
// This reset is to load modules for the SSR/Browser scope.
jest.unmock('react-server-dom-webpack/server');
@@ -2874,7 +2870,7 @@ describe('ReactFlightDOM', () => {
);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('can prerender', async () => {
let resolveGreeting;
const greetingPromise = new Promise(resolve => {
@@ -2897,11 +2893,10 @@ describe('ReactFlightDOM', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult:
- ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
- ,
- webpackMap,
- ),
+ pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
+ ,
+ webpackMap,
+ ),
};
});
@@ -2964,17 +2959,16 @@ describe('ReactFlightDOM', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult:
- ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
- ,
- webpackMap,
- {
- signal: controller.signal,
- onError(err) {
- errors.push(err);
- },
+ pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
+ ,
+ webpackMap,
+ {
+ signal: controller.signal,
+ onError(err) {
+ errors.push(err);
},
- ),
+ },
+ ),
};
});
@@ -3022,7 +3016,7 @@ describe('ReactFlightDOM', () => {
});
// This could be a bug. Discovered while making enableAsyncDebugInfo dynamic for www.
- // @gate experimental && (enableHalt || (enableAsyncDebugInfo && __DEV__))
+ // @gate enableHalt || enablePostpone || (enableAsyncDebugInfo && __DEV__)
it('will leave async iterables in an incomplete state when halting', async () => {
let resolve;
const wait = new Promise(r => (resolve = r));
@@ -3040,19 +3034,18 @@ describe('ReactFlightDOM', () => {
const controller = new AbortController();
const {pendingResult} = await serverAct(() => {
return {
- pendingResult:
- ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
- {
- multiShotIterable,
- },
- {},
- {
- onError(x) {
- errors.push(x);
- },
- signal: controller.signal,
+ pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
+ {
+ multiShotIterable,
+ },
+ {},
+ {
+ onError(x) {
+ errors.push(x);
},
- ),
+ signal: controller.signal,
+ },
+ ),
};
});
@@ -3124,17 +3117,16 @@ describe('ReactFlightDOM', () => {
const errors = [];
const {pendingResult} = await serverAct(() => {
return {
- pendingResult:
- ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
- ,
- {},
- {
- onError(x) {
- errors.push(x);
- },
- signal: controller.signal,
+ pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
+ ,
+ {},
+ {
+ onError(x) {
+ errors.push(x);
},
- ),
+ signal: controller.signal,
+ },
+ ),
};
});
diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js
index 49cc28535e92d..9c7b5b62b195e 100644
--- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js
+++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js
@@ -69,12 +69,10 @@ describe('ReactFlightDOMBrowser', () => {
webpackMap = WebpackMock.webpackMap;
webpackServerMap = WebpackMock.webpackServerMap;
ReactServerDOMServer = require('react-server-dom-webpack/server');
- if (__EXPERIMENTAL__) {
- jest.mock('react-server-dom-webpack/static', () =>
- require('react-server-dom-webpack/static.browser'),
- );
- ReactServerDOMStaticServer = require('react-server-dom-webpack/static');
- }
+ jest.mock('react-server-dom-webpack/static', () =>
+ require('react-server-dom-webpack/static.browser'),
+ );
+ ReactServerDOMStaticServer = require('react-server-dom-webpack/static');
__unmockReact();
jest.resetModules();
@@ -2497,7 +2495,7 @@ describe('ReactFlightDOMBrowser', () => {
expect(errors).toEqual([reason]);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('can prerender', async () => {
let resolveGreeting;
const greetingPromise = new Promise(resolve => {
@@ -2520,7 +2518,7 @@ describe('ReactFlightDOMBrowser', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult: ReactServerDOMStaticServer.unstable_prerender(
+ pendingResult: ReactServerDOMStaticServer.prerender(
,
webpackMap,
),
@@ -2573,7 +2571,7 @@ describe('ReactFlightDOMBrowser', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult: ReactServerDOMStaticServer.unstable_prerender(
+ pendingResult: ReactServerDOMStaticServer.prerender(
,
webpackMap,
{
@@ -3011,9 +3009,9 @@ describe('ReactFlightDOMBrowser', () => {
[
"",
"/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js",
- 2937,
+ 2935,
27,
- 2931,
+ 2929,
34,
],
[
@@ -3027,9 +3025,9 @@ describe('ReactFlightDOMBrowser', () => {
[
"Object.",
"/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js",
- 2931,
+ 2929,
18,
- 2918,
+ 2916,
89,
],
],
diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js
index 7aaf4150db087..44b3256afe8ab 100644
--- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js
+++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js
@@ -90,12 +90,10 @@ describe('ReactFlightDOMEdge', () => {
ReactServer = require('react');
ReactServerDOMServer = require('react-server-dom-webpack/server');
- if (__EXPERIMENTAL__) {
- jest.mock('react-server-dom-webpack/static', () =>
- require('react-server-dom-webpack/static.edge'),
- );
- ReactServerDOMStaticServer = require('react-server-dom-webpack/static');
- }
+ jest.mock('react-server-dom-webpack/static', () =>
+ require('react-server-dom-webpack/static.edge'),
+ );
+ ReactServerDOMStaticServer = require('react-server-dom-webpack/static');
jest.resetModules();
__unmockReact();
@@ -1372,7 +1370,7 @@ describe('ReactFlightDOMEdge', () => {
]);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('can prerender', async () => {
let resolveGreeting;
const greetingPromise = new Promise(resolve => {
@@ -1395,7 +1393,7 @@ describe('ReactFlightDOMEdge', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult: ReactServerDOMStaticServer.unstable_prerender(
+ pendingResult: ReactServerDOMStaticServer.prerender(
,
webpackMap,
),
@@ -1453,7 +1451,7 @@ describe('ReactFlightDOMEdge', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult: ReactServerDOMStaticServer.unstable_prerender(
+ pendingResult: ReactServerDOMStaticServer.prerender(
,
webpackMap,
{
@@ -1514,7 +1512,7 @@ describe('ReactFlightDOMEdge', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult: ReactServerDOMStaticServer.unstable_prerender(
+ pendingResult: ReactServerDOMStaticServer.prerender(
{promise: infinitePromise},
webpackMap,
{
@@ -1554,12 +1552,12 @@ describe('ReactFlightDOMEdge', () => {
expect(error.message).toBe('Connection closed.');
});
- // @gate experimental
- it('should be able to handle a rejected promise in unstable_prerender', async () => {
+ // @gate enableHalt || enablePostpone
+ it('should be able to handle a rejected promise in prerender', async () => {
const expectedError = new Error('Bam!');
const errors = [];
- const {prelude} = await ReactServerDOMStaticServer.unstable_prerender(
+ const {prelude} = await ReactServerDOMStaticServer.prerender(
Promise.reject(expectedError),
webpackMap,
{
@@ -1593,12 +1591,12 @@ describe('ReactFlightDOMEdge', () => {
expect(error.message).toBe(expectedMessage);
});
- // @gate experimental
- it('should be able to handle an erroring async iterable in unstable_prerender', async () => {
+ // @gate enableHalt || enablePostpone
+ it('should be able to handle an erroring async iterable in prerender', async () => {
const expectedError = new Error('Bam!');
const errors = [];
- const {prelude} = await ReactServerDOMStaticServer.unstable_prerender(
+ const {prelude} = await ReactServerDOMStaticServer.prerender(
{
async *[Symbol.asyncIterator]() {
await serverAct(() => {
@@ -1640,12 +1638,12 @@ describe('ReactFlightDOMEdge', () => {
expect(error.message).toBe(expectedMessage);
});
- // @gate experimental
- it('should be able to handle an erroring readable stream in unstable_prerender', async () => {
+ // @gate enableHalt || enablePostpone
+ it('should be able to handle an erroring readable stream in prerender', async () => {
const expectedError = new Error('Bam!');
const errors = [];
- const {prelude} = await ReactServerDOMStaticServer.unstable_prerender(
+ const {prelude} = await ReactServerDOMStaticServer.prerender(
new ReadableStream({
async start(controller) {
await serverAct(() => {
@@ -1688,11 +1686,11 @@ describe('ReactFlightDOMEdge', () => {
expect(error.message).toBe(expectedMessage);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('can prerender an async iterable', async () => {
const errors = [];
- const {prelude} = await ReactServerDOMStaticServer.unstable_prerender(
+ const {prelude} = await ReactServerDOMStaticServer.prerender(
{
async *[Symbol.asyncIterator]() {
yield 'hello';
@@ -1732,11 +1730,11 @@ describe('ReactFlightDOMEdge', () => {
expect(text).toBe('hello world');
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('can prerender a readable stream', async () => {
const errors = [];
- const {prelude} = await ReactServerDOMStaticServer.unstable_prerender(
+ const {prelude} = await ReactServerDOMStaticServer.prerender(
new ReadableStream({
start(controller) {
controller.enqueue('hello world');
@@ -1766,7 +1764,7 @@ describe('ReactFlightDOMEdge', () => {
expect(result).toBe('hello world');
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('does not return a prerender prelude early when an error is emitted and there are still pending tasks', async () => {
let rejectPromise;
const rejectingPromise = new Promise(
@@ -1775,7 +1773,7 @@ describe('ReactFlightDOMEdge', () => {
const expectedError = new Error('Boom!');
const errors = [];
- const {prelude} = await ReactServerDOMStaticServer.unstable_prerender(
+ const {prelude} = await ReactServerDOMStaticServer.prerender(
[
rejectingPromise,
{
@@ -1862,7 +1860,7 @@ describe('ReactFlightDOMEdge', () => {
const serverAbortController = new AbortController();
const errors = [];
- const prerenderResult = ReactServerDOMStaticServer.unstable_prerender(
+ const prerenderResult = ReactServerDOMStaticServer.prerender(
ReactServer.createElement(App, null),
webpackMap,
{
diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js
index 59df3c24d6f40..f63f82333116e 100644
--- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js
+++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js
@@ -49,12 +49,10 @@ describe('ReactFlightDOMNode', () => {
);
ReactServer = require('react');
ReactServerDOMServer = require('react-server-dom-webpack/server');
- if (__EXPERIMENTAL__) {
- jest.mock('react-server-dom-webpack/static', () =>
- require('react-server-dom-webpack/static.node'),
- );
- ReactServerDOMStaticServer = require('react-server-dom-webpack/static');
- }
+ jest.mock('react-server-dom-webpack/static', () =>
+ require('react-server-dom-webpack/static.node'),
+ );
+ ReactServerDOMStaticServer = require('react-server-dom-webpack/static');
const WebpackMock = require('./utils/WebpackMock');
clientExports = WebpackMock.clientExports;
@@ -489,7 +487,7 @@ describe('ReactFlightDOMNode', () => {
expect(errors).toEqual([reason]);
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
it('can prerender', async () => {
let resolveGreeting;
const greetingPromise = new Promise(resolve => {
@@ -512,11 +510,10 @@ describe('ReactFlightDOMNode', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult:
- ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
- ,
- webpackMap,
- ),
+ pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
+ ,
+ webpackMap,
+ ),
};
});
@@ -571,17 +568,16 @@ describe('ReactFlightDOMNode', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult:
- ReactServerDOMStaticServer.unstable_prerenderToNodeStream(
- ,
- webpackMap,
- {
- signal: controller.signal,
- onError(err) {
- errors.push(err);
- },
+ pendingResult: ReactServerDOMStaticServer.prerenderToNodeStream(
+ ,
+ webpackMap,
+ {
+ signal: controller.signal,
+ onError(err) {
+ errors.push(err);
},
- ),
+ },
+ ),
};
});
@@ -618,7 +614,7 @@ describe('ReactFlightDOMNode', () => {
expect(result).toContain('loading...');
});
- // @gate enableHalt && enableAsyncDebugInfo
+ // @gate enableHalt
it('includes source locations in component and owner stacks for halted components', async () => {
async function Component() {
await new Promise(() => {});
@@ -646,7 +642,7 @@ describe('ReactFlightDOMNode', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult: ReactServerDOMStaticServer.unstable_prerender(
+ pendingResult: ReactServerDOMStaticServer.prerender(
ReactServer.createElement(App, null),
webpackMap,
{
@@ -722,7 +718,9 @@ describe('ReactFlightDOMNode', () => {
if (__DEV__) {
expect(normalizeCodeLocInfo(componentStack)).toBe(
- '\n in Component (at **)\n' +
+ '\n' +
+ ' in Component' +
+ (gate(flags => flags.enableAsyncDebugInfo) ? ' (at **)\n' : '\n') +
' in Suspense\n' +
' in body\n' +
' in html\n' +
@@ -739,15 +737,19 @@ describe('ReactFlightDOMNode', () => {
}
if (__DEV__) {
- expect(normalizeCodeLocInfo(ownerStack)).toBe(
- '\n in Component (at **)\n in App (at **)',
- );
+ if (gate(flags => flags.enableAsyncDebugInfo)) {
+ expect(normalizeCodeLocInfo(ownerStack)).toBe(
+ '\n in Component (at **)\n in App (at **)',
+ );
+ } else {
+ expect(normalizeCodeLocInfo(ownerStack)).toBe('\n in App (at **)');
+ }
} else {
expect(ownerStack).toBeNull();
}
});
- // @gate enableHalt && enableAsyncDebugInfo
+ // @gate enableHalt
it('includes deeper location for aborted stacks', async () => {
async function getData() {
const signal = ReactServer.cacheSignal();
@@ -792,7 +794,7 @@ describe('ReactFlightDOMNode', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult: ReactServerDOMStaticServer.unstable_prerender(
+ pendingResult: ReactServerDOMStaticServer.prerender(
ReactServer.createElement(App, null),
webpackMap,
{
@@ -869,7 +871,9 @@ describe('ReactFlightDOMNode', () => {
if (__DEV__) {
expect(normalizeCodeLocInfo(componentStack)).toBe(
- '\n in Component (at **)\n' +
+ '\n' +
+ ' in Component' +
+ (gate(flags => flags.enableAsyncDebugInfo) ? ' (at **)\n' : '\n') +
' in Suspense\n' +
' in body\n' +
' in html\n' +
@@ -886,17 +890,24 @@ describe('ReactFlightDOMNode', () => {
}
if (__DEV__) {
- expect(normalizeCodeLocInfo(ownerStack)).toBe(
- '\n in getData (at **)' +
- '\n in Component (at **)' +
- '\n in App (at **)',
- );
+ if (gate(flags => flags.enableAsyncDebugInfo)) {
+ expect(normalizeCodeLocInfo(ownerStack)).toBe(
+ '' +
+ '\n in getData (at **)' +
+ '\n in Component (at **)' +
+ '\n in App (at **)',
+ );
+ } else {
+ expect(normalizeCodeLocInfo(ownerStack)).toBe(
+ '' + '\n in App (at **)',
+ );
+ }
} else {
expect(ownerStack).toBeNull();
}
});
- // @gate experimental
+ // @gate enableHalt || enablePostpone
// @gate enableHalt
it('can handle an empty prelude when prerendering', async () => {
function App() {
@@ -909,7 +920,7 @@ describe('ReactFlightDOMNode', () => {
const {pendingResult} = await serverAct(async () => {
// destructure trick to avoid the act scope from awaiting the returned value
return {
- pendingResult: ReactServerDOMStaticServer.unstable_prerender(
+ pendingResult: ReactServerDOMStaticServer.prerender(
ReactServer.createElement(App, null),
webpackMap,
{
diff --git a/packages/react-server-dom-webpack/src/server/react-flight-dom-server.browser.js b/packages/react-server-dom-webpack/src/server/react-flight-dom-server.browser.js
index c0860225d7b57..d8373ec551bc0 100644
--- a/packages/react-server-dom-webpack/src/server/react-flight-dom-server.browser.js
+++ b/packages/react-server-dom-webpack/src/server/react-flight-dom-server.browser.js
@@ -9,7 +9,7 @@
export {
renderToReadableStream,
- prerender as unstable_prerender,
+ prerender,
decodeReply,
decodeAction,
decodeFormState,
diff --git a/packages/react-server-dom-webpack/src/server/react-flight-dom-server.edge.js b/packages/react-server-dom-webpack/src/server/react-flight-dom-server.edge.js
index 9198f9913ed37..e103ff761913f 100644
--- a/packages/react-server-dom-webpack/src/server/react-flight-dom-server.edge.js
+++ b/packages/react-server-dom-webpack/src/server/react-flight-dom-server.edge.js
@@ -9,7 +9,7 @@
export {
renderToReadableStream,
- prerender as unstable_prerender,
+ prerender,
decodeReply,
decodeReplyFromAsyncIterable,
decodeAction,
diff --git a/packages/react-server-dom-webpack/src/server/react-flight-dom-server.node.js b/packages/react-server-dom-webpack/src/server/react-flight-dom-server.node.js
index 1e3571a6f2ba4..3c2b9e512c7ca 100644
--- a/packages/react-server-dom-webpack/src/server/react-flight-dom-server.node.js
+++ b/packages/react-server-dom-webpack/src/server/react-flight-dom-server.node.js
@@ -10,8 +10,8 @@
export {
renderToReadableStream,
renderToPipeableStream,
- prerender as unstable_prerender,
- prerenderToNodeStream as unstable_prerenderToNodeStream,
+ prerender,
+ prerenderToNodeStream,
decodeReply,
decodeReplyFromBusboy,
decodeReplyFromAsyncIterable,
diff --git a/packages/react-server-dom-webpack/src/server/react-flight-dom-server.node.unbundled.js b/packages/react-server-dom-webpack/src/server/react-flight-dom-server.node.unbundled.js
index 1e3571a6f2ba4..3c2b9e512c7ca 100644
--- a/packages/react-server-dom-webpack/src/server/react-flight-dom-server.node.unbundled.js
+++ b/packages/react-server-dom-webpack/src/server/react-flight-dom-server.node.unbundled.js
@@ -10,8 +10,8 @@
export {
renderToReadableStream,
renderToPipeableStream,
- prerender as unstable_prerender,
- prerenderToNodeStream as unstable_prerenderToNodeStream,
+ prerender,
+ prerenderToNodeStream,
decodeReply,
decodeReplyFromBusboy,
decodeReplyFromAsyncIterable,
diff --git a/packages/react-server-dom-webpack/static.browser.js b/packages/react-server-dom-webpack/static.browser.js
index 3281fed6ea29c..2589789163206 100644
--- a/packages/react-server-dom-webpack/static.browser.js
+++ b/packages/react-server-dom-webpack/static.browser.js
@@ -7,4 +7,4 @@
* @flow
*/
-export {unstable_prerender} from './src/server/react-flight-dom-server.browser';
+export {prerender} from './src/server/react-flight-dom-server.browser';
diff --git a/packages/react-server-dom-webpack/static.edge.js b/packages/react-server-dom-webpack/static.edge.js
index b1a96317ae9b3..a39d54c73f579 100644
--- a/packages/react-server-dom-webpack/static.edge.js
+++ b/packages/react-server-dom-webpack/static.edge.js
@@ -7,4 +7,4 @@
* @flow
*/
-export {unstable_prerender} from './src/server/react-flight-dom-server.edge';
+export {prerender} from './src/server/react-flight-dom-server.edge';
diff --git a/packages/react-server-dom-webpack/static.node.js b/packages/react-server-dom-webpack/static.node.js
index 1b2c11edc10f1..78e70a1cf4c28 100644
--- a/packages/react-server-dom-webpack/static.node.js
+++ b/packages/react-server-dom-webpack/static.node.js
@@ -8,6 +8,6 @@
*/
export {
- unstable_prerender,
- unstable_prerenderToNodeStream,
+ prerender,
+ prerenderToNodeStream,
} from './src/server/react-flight-dom-server.node';
diff --git a/packages/react-server-dom-webpack/static.node.unbundled.js b/packages/react-server-dom-webpack/static.node.unbundled.js
index be7dbcb721b9f..3f19796a2055f 100644
--- a/packages/react-server-dom-webpack/static.node.unbundled.js
+++ b/packages/react-server-dom-webpack/static.node.unbundled.js
@@ -8,6 +8,6 @@
*/
export {
- unstable_prerender,
- unstable_prerenderToNodeStream,
+ prerender,
+ prerenderToNodeStream,
} from './src/server/react-flight-dom-server.node.unbundled';
diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js
index f29ee68d7411b..cc9889b4cb1bc 100644
--- a/packages/shared/ReactFeatureFlags.js
+++ b/packages/shared/ReactFeatureFlags.js
@@ -82,7 +82,7 @@ export const enableTaint = __EXPERIMENTAL__;
export const enablePostpone = __EXPERIMENTAL__;
-export const enableHalt = __EXPERIMENTAL__;
+export const enableHalt: boolean = true;
export const enableViewTransition = __EXPERIMENTAL__;
diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb.js b/packages/shared/forks/ReactFeatureFlags.native-fb.js
index 409b10d0b2db7..2968a5d924bde 100644
--- a/packages/shared/forks/ReactFeatureFlags.native-fb.js
+++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js
@@ -45,7 +45,7 @@ export const enableCPUSuspense: boolean = true;
export const enableCreateEventHandleAPI: boolean = false;
export const enableMoveBefore: boolean = true;
export const enableFizzExternalRuntime: boolean = true;
-export const enableHalt: boolean = false;
+export const enableHalt: boolean = true;
export const enableInfiniteRenderLoopDetection: boolean = false;
export const enableLegacyCache: boolean = false;
export const enableLegacyFBSupport: boolean = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.native-oss.js b/packages/shared/forks/ReactFeatureFlags.native-oss.js
index fbef31b026e6f..06a4ce23994c7 100644
--- a/packages/shared/forks/ReactFeatureFlags.native-oss.js
+++ b/packages/shared/forks/ReactFeatureFlags.native-oss.js
@@ -30,7 +30,7 @@ export const enableCPUSuspense: boolean = false;
export const enableCreateEventHandleAPI: boolean = false;
export const enableMoveBefore: boolean = true;
export const enableFizzExternalRuntime: boolean = true;
-export const enableHalt: boolean = false;
+export const enableHalt: boolean = true;
export const enableHiddenSubtreeInsertionEffectCleanup: boolean = false;
export const enableInfiniteRenderLoopDetection: boolean = false;
export const enableLegacyCache: boolean = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.js
index eb02b6a1807a1..f550f1b153838 100644
--- a/packages/shared/forks/ReactFeatureFlags.test-renderer.js
+++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.js
@@ -21,7 +21,7 @@ export const enableLegacyCache: boolean = __EXPERIMENTAL__;
export const enableAsyncIterableChildren: boolean = false;
export const enableTaint: boolean = true;
export const enablePostpone: boolean = false;
-export const enableHalt: boolean = false;
+export const enableHalt: boolean = true;
export const disableCommentsAsDOMContainers: boolean = true;
export const disableInputAttributeSyncing: boolean = false;
export const enableScopeAPI: boolean = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js
index 768ab592d2c50..51162c3955840 100644
--- a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js
+++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js
@@ -25,7 +25,7 @@ export const enableCPUSuspense = true;
export const enableCreateEventHandleAPI = false;
export const enableMoveBefore = false;
export const enableFizzExternalRuntime = true;
-export const enableHalt = false;
+export const enableHalt = true;
export const enableInfiniteRenderLoopDetection = false;
export const enableHiddenSubtreeInsertionEffectCleanup = true;
export const enableLegacyCache = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
index c0c788db52652..0f24ae8025f92 100644
--- a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
+++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
@@ -21,7 +21,7 @@ export const enableLegacyCache: boolean = true;
export const enableAsyncIterableChildren: boolean = false;
export const enableTaint: boolean = true;
export const enablePostpone: boolean = false;
-export const enableHalt: boolean = false;
+export const enableHalt: boolean = true;
export const disableCommentsAsDOMContainers: boolean = true;
export const disableInputAttributeSyncing: boolean = false;
export const enableScopeAPI: boolean = true;
diff --git a/packages/shared/forks/ReactFeatureFlags.www.js b/packages/shared/forks/ReactFeatureFlags.www.js
index 408fc0b62f667..e07f15a6318aa 100644
--- a/packages/shared/forks/ReactFeatureFlags.www.js
+++ b/packages/shared/forks/ReactFeatureFlags.www.js
@@ -73,7 +73,7 @@ export const enableTaint: boolean = false;
export const enablePostpone: boolean = false;
-export const enableHalt: boolean = false;
+export const enableHalt: boolean = true;
// TODO: www currently relies on this feature. It's disabled in open source.
// Need to remove it.