Skip to content

Commit

Permalink
Deprecate renderToStaticNodeStream (facebook#28872)
Browse files Browse the repository at this point in the history
This commit adds warnings indicating that `renderToStaticNodeStream`
will be removed in an upcoming React release. This API has been legacy,
is not widely used (renderToStaticMarkup is more common) and has
semantically eqiuvalent implementations with renderToReadableStream and
renderToPipeableStream.
  • Loading branch information
gnoff committed Apr 19, 2024
1 parent 415ee0e commit baacaf0
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 5 deletions.
20 changes: 15 additions & 5 deletions packages/react-dom/src/__tests__/ReactServerRendering-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -620,17 +620,27 @@ describe('ReactDOMServer', () => {
describe('renderToStaticNodeStream', () => {
it('should generate simple markup', () => {
const SuccessfulElement = React.createElement(() => <img />);
const response = ReactDOMServer.renderToStaticNodeStream(
SuccessfulElement,
);
expect(response.read().toString()).toMatch(new RegExp('<img' + '/>'));
expect(() => {
const response = ReactDOMServer.renderToStaticNodeStream(
SuccessfulElement,
);
expect(response.read().toString()).toMatch(new RegExp('<img' + '/>'));
}).toErrorDev('ReactDOMServer.renderToStaticNodeStream() is deprecated', {
withoutStack: true,
});
});

it('should handle errors correctly', () => {
const FailingElement = React.createElement(() => {
throw new Error('An Error');
});
const response = ReactDOMServer.renderToStaticNodeStream(FailingElement);

let response;
expect(() => {
response = ReactDOMServer.renderToStaticNodeStream(FailingElement);
}).toErrorDev('ReactDOMServer.renderToStaticNodeStream() is deprecated', {
withoutStack: true,
});
return new Promise(resolve => {
response.once('error', () => {
resolve();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,13 @@ function renderToStaticNodeStream(
children: ReactNodeList,
options?: ServerOptions,
): Readable {
if (__DEV__) {
console.error(
'ReactDOMServer.renderToStaticNodeStream() is deprecated.' +
' Use ReactDOMServer.renderToPipeableStream() and wait to `pipe` until the `onAllReady`' +
' callback has been called instead.',
);
}
return renderToNodeStreamImpl(children, options, true);
}

Expand Down

0 comments on commit baacaf0

Please sign in to comment.