Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fixtures/flight/server/region.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
4 changes: 1 addition & 3 deletions packages/react-dom/npm/server.browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
4 changes: 1 addition & 3 deletions packages/react-dom/npm/server.bun.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
4 changes: 1 addition & 3 deletions packages/react-dom/npm/server.edge.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
8 changes: 2 additions & 6 deletions packages/react-dom/npm/server.node.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
10 changes: 10 additions & 0 deletions packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,11 @@ describe('ReactDOMFizzStatic', () => {
return <div>aborted</div>;
}

const errors = [];
const pendingResult = ReactDOMFizzStatic.prerenderToNodeStream(<App />, {
onError: error => {
errors.push(error);
},
signal: controller.signal,
});
pendingResult.catch(() => {});
Expand All @@ -430,6 +434,7 @@ describe('ReactDOMFizzStatic', () => {
result.prelude.pipe(writable);
});
expect(getVisibleChildren(container)).toEqual(undefined);
expect(errors).toEqual([]);
Copy link
Collaborator Author

@eps1lon eps1lon Sep 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test used to fail due to prerenderToNodeStream not existing. Since that API exists everywhere now, the only error happens in onError calling console.error(postponedValue). However, we ignore console.error(someErrorInstance) in our testing infra and it would take a while to update all the tests to also assert on prod errors.

In dev the test failed because we also called console.error with the environment name

});

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

const errors = [];
const result = await ReactDOMFizzStatic.prerenderToNodeStream(<App />, {
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
32 changes: 15 additions & 17 deletions packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
});

Expand Down Expand Up @@ -58,7 +56,7 @@ describe('ReactDOMFizzStaticNode', () => {
}
}

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

// @gate experimental
// @gate enableHalt || enablePostpone
it('should suppport web streams', async () => {
const result = await ReactDOMFizzStatic.prerender(<div>hello world</div>);
const prelude = await readContentWeb(result.prelude);
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
});

// @gate experimental
// @gate enableHalt || enablePostpone
it('should emit DOCTYPE at the root of the document', async () => {
const result = await ReactDOMFizzStatic.prerenderToNodeStream(
<html>
Expand All @@ -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(
<div>hello world</div>,
Expand All @@ -109,7 +107,7 @@ describe('ReactDOMFizzStaticNode', () => {
);
});

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

// @gate experimental
// @gate enableHalt || enablePostpone
it('should reject the promise when an error is thrown at the root', async () => {
const reportedErrors = [];
let caughtError = null;
Expand All @@ -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;
Expand All @@ -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(
Expand All @@ -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();
Expand Down Expand Up @@ -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 = [];
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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 = [];
Expand Down Expand Up @@ -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() {
Expand Down Expand Up @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';
8 changes: 6 additions & 2 deletions packages/react-dom/src/server/react-dom-server.edge.stable.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Comment on lines -1592 to 1601
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

drive-by fix when looking for things gated on experimental.

const formatHookNamesToMatchErrorMessage = (hookNameA, hookNameB) => {
return `use${hookNameA}${' '.repeat(24 - hookNameA.length)}${
Expand Down
4 changes: 1 addition & 3 deletions packages/react-server-dom-esm/npm/static.node.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

export {
renderToPipeableStream,
prerenderToNodeStream as unstable_prerenderToNodeStream,
prerenderToNodeStream,
decodeReplyFromBusboy,
decodeReply,
decodeAction,
Expand Down
2 changes: 1 addition & 1 deletion packages/react-server-dom-esm/static.node.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';
4 changes: 1 addition & 3 deletions packages/react-server-dom-parcel/npm/static.browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
4 changes: 1 addition & 3 deletions packages/react-server-dom-parcel/npm/static.edge.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
8 changes: 2 additions & 6 deletions packages/react-server-dom-parcel/npm/static.node.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

export {
renderToReadableStream,
prerender as unstable_prerender,
prerender,
decodeReply,
decodeAction,
decodeFormState,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

export {
renderToReadableStream,
prerender as unstable_prerender,
prerender,
decodeReply,
decodeReplyFromAsyncIterable,
decodeAction,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
export {
renderToReadableStream,
renderToPipeableStream,
prerender as unstable_prerender,
prerenderToNodeStream as unstable_prerenderToNodeStream,
prerender,
prerenderToNodeStream,
decodeReply,
decodeReplyFromBusboy,
decodeReplyFromAsyncIterable,
Expand Down
2 changes: 1 addition & 1 deletion packages/react-server-dom-parcel/static.browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';
2 changes: 1 addition & 1 deletion packages/react-server-dom-parcel/static.edge.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';
4 changes: 2 additions & 2 deletions packages/react-server-dom-parcel/static.node.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
*/

export {
unstable_prerender,
unstable_prerenderToNodeStream,
prerender,
prerenderToNodeStream,
} from './src/server/react-flight-dom-server.node';
Loading
Loading