diff --git a/packages/react-dom/npm/server.browser.js b/packages/react-dom/npm/server.browser.js index 4627357ca746..318fe36fa203 100644 --- a/packages/react-dom/npm/server.browser.js +++ b/packages/react-dom/npm/server.browser.js @@ -12,7 +12,6 @@ if (process.env.NODE_ENV === 'production') { exports.version = l.version; exports.renderToString = l.renderToString; exports.renderToStaticMarkup = l.renderToStaticMarkup; -exports.renderToStaticNodeStream = l.renderToStaticNodeStream; exports.renderToReadableStream = s.renderToReadableStream; if (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 cd45f7d7f1fa..74390e99c86a 100644 --- a/packages/react-dom/npm/server.bun.js +++ b/packages/react-dom/npm/server.bun.js @@ -15,6 +15,5 @@ exports.renderToReadableStream = b.renderToReadableStream; if (b.resume) { exports.resume = b.resume; } -exports.renderToStaticNodeStream = b.renderToStaticNodeStream; 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 c71b3ee80599..50192934179b 100644 --- a/packages/react-dom/npm/server.edge.js +++ b/packages/react-dom/npm/server.edge.js @@ -12,7 +12,6 @@ if (process.env.NODE_ENV === 'production') { exports.version = b.version; exports.renderToReadableStream = b.renderToReadableStream; -exports.renderToStaticNodeStream = b.renderToStaticNodeStream; exports.renderToString = l.renderToString; exports.renderToStaticMarkup = l.renderToStaticMarkup; if (b.resume) { diff --git a/packages/react-dom/npm/server.node.js b/packages/react-dom/npm/server.node.js index 9aed61fffb37..edee039b26b0 100644 --- a/packages/react-dom/npm/server.node.js +++ b/packages/react-dom/npm/server.node.js @@ -12,7 +12,6 @@ if (process.env.NODE_ENV === 'production') { exports.version = l.version; exports.renderToString = l.renderToString; exports.renderToStaticMarkup = l.renderToStaticMarkup; -exports.renderToStaticNodeStream = l.renderToStaticNodeStream; exports.renderToPipeableStream = s.renderToPipeableStream; if (s.resumeToPipeableStream) { exports.resumeToPipeableStream = s.resumeToPipeableStream; diff --git a/packages/react-dom/server.browser.js b/packages/react-dom/server.browser.js index 490bc8150409..b27f4410dccf 100644 --- a/packages/react-dom/server.browser.js +++ b/packages/react-dom/server.browser.js @@ -23,12 +23,6 @@ export function renderToStaticMarkup() { arguments, ); } -export function renderToStaticNodeStream() { - return require('./src/server/ReactDOMLegacyServerBrowser').renderToStaticNodeStream.apply( - this, - arguments, - ); -} export function renderToReadableStream() { return require('./src/server/react-dom-server.browser').renderToReadableStream.apply( diff --git a/packages/react-dom/server.bun.js b/packages/react-dom/server.bun.js index 8e868a862159..7d054e5534e2 100644 --- a/packages/react-dom/server.bun.js +++ b/packages/react-dom/server.bun.js @@ -18,13 +18,6 @@ export function renderToReadableStream() { ); } -export function renderToStaticNodeStream() { - return require('./src/server/react-dom-server.bun').renderToStaticNodeStream.apply( - this, - arguments, - ); -} - export function renderToString() { return require('./src/server/ReactDOMLegacyServerBrowser').renderToString.apply( this, diff --git a/packages/react-dom/server.edge.js b/packages/react-dom/server.edge.js index d5a0ce6eb46f..7282c4ed6c87 100644 --- a/packages/react-dom/server.edge.js +++ b/packages/react-dom/server.edge.js @@ -18,13 +18,6 @@ export function renderToReadableStream() { ); } -export function renderToStaticNodeStream() { - return require('./src/server/react-dom-server.edge').renderToStaticNodeStream.apply( - this, - arguments, - ); -} - export function renderToString() { return require('./src/server/ReactDOMLegacyServerBrowser').renderToString.apply( this, diff --git a/packages/react-dom/server.node.js b/packages/react-dom/server.node.js index acdaa234f3c5..5f9c78f6dbd1 100644 --- a/packages/react-dom/server.node.js +++ b/packages/react-dom/server.node.js @@ -23,12 +23,6 @@ export function renderToStaticMarkup() { arguments, ); } -export function renderToStaticNodeStream() { - return require('./src/server/ReactDOMLegacyServerNode').renderToStaticNodeStream.apply( - this, - arguments, - ); -} export function renderToPipeableStream() { return require('./src/server/react-dom-server.node').renderToPipeableStream.apply( diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js index 2e573164a2e1..24009f1eda47 100644 --- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js @@ -324,97 +324,6 @@ describe('ReactDOMServerIntegration', () => { expect(e.textContent).toBe('dark'); }); - it('does not pollute parallel node streams', () => { - const LoggedInUser = React.createContext(); - - const AppWithUser = user => ( - -
- {whoAmI => whoAmI} -
- -
- ); - - const streamAmy = ReactDOMServer.renderToStaticNodeStream( - AppWithUser('Amy'), - ).setEncoding('utf8'); - const streamBob = ReactDOMServer.renderToStaticNodeStream( - AppWithUser('Bob'), - ).setEncoding('utf8'); - - // Testing by filling the buffer using internal _read() with a small - // number of bytes to avoid a test case which needs to align to a - // highWaterMark boundary of 2^14 chars. - streamAmy._read(20); - streamBob._read(20); - streamAmy._read(20); - streamBob._read(20); - - expect(streamAmy.read()).toBe('
Amy
'); - expect(streamBob.read()).toBe('
Bob
'); - }); - - it('does not pollute parallel node streams when many are used', () => { - const CurrentIndex = React.createContext(); - - const NthRender = index => ( - -
- {idx => idx} -
- -
- ); - - const streams = []; - - // Test with more than 32 streams to test that growing the thread count - // works properly. - const streamCount = 34; - - for (let i = 0; i < streamCount; i++) { - streams[i] = ReactDOMServer.renderToStaticNodeStream( - NthRender(i % 2 === 0 ? 'Expected to be recreated' : i), - ).setEncoding('utf8'); - } - - // Testing by filling the buffer using internal _read() with a small - // number of bytes to avoid a test case which needs to align to a - // highWaterMark boundary of 2^14 chars. - for (let i = 0; i < streamCount; i++) { - streams[i]._read(20); - } - - // Early destroy every other stream - for (let i = 0; i < streamCount; i += 2) { - streams[i].destroy(); - } - - // Recreate those same streams. - for (let i = 0; i < streamCount; i += 2) { - streams[i] = ReactDOMServer.renderToStaticNodeStream( - NthRender(i), - ).setEncoding('utf8'); - } - - // Read a bit from all streams again. - for (let i = 0; i < streamCount; i++) { - streams[i]._read(20); - } - - // Assert that all stream rendered the expected output. - for (let i = 0; i < streamCount; i++) { - expect(streams[i].read()).toBe( - '
' + i + '
', - ); - } - }); - it('does not pollute sync renders after an error', () => { const LoggedInUser = React.createContext('default'); const Crash = () => { diff --git a/packages/react-dom/src/__tests__/ReactServerRendering-test.js b/packages/react-dom/src/__tests__/ReactServerRendering-test.js index ab200d10517f..b964656c5c7c 100644 --- a/packages/react-dom/src/__tests__/ReactServerRendering-test.js +++ b/packages/react-dom/src/__tests__/ReactServerRendering-test.js @@ -577,73 +577,6 @@ describe('ReactDOMServer', () => { }); }); - describe('renderToStaticNodeStream', () => { - it('should generate simple markup', () => { - const SuccessfulElement = React.createElement(() => ); - expect(() => { - const response = - ReactDOMServer.renderToStaticNodeStream(SuccessfulElement); - expect(response.read().toString()).toMatch(new RegExp('')); - }).toErrorDev( - 'ReactDOMServer.renderToStaticNodeStream() is deprecated and will be removed in an upcomingrelease of React', - {withoutStack: true}, - ); - }); - - it('should handle errors correctly', () => { - const FailingElement = React.createElement(() => { - throw new Error('An Error'); - }); - - let response; - expect(() => { - response = ReactDOMServer.renderToStaticNodeStream(FailingElement); - }).toErrorDev( - 'ReactDOMServer.renderToStaticNodeStream() is deprecated and will be removed in an upcomingrelease of React', - {withoutStack: true}, - ); - return new Promise(resolve => { - response.once('error', () => { - resolve(); - }); - expect(response.read()).toBeNull(); - }); - }); - - it('should omit text and suspense placeholders', async () => { - let resolve = null; - const promise = new Promise(res => { - resolve = () => { - resolved = true; - res(); - }; - }); - let resolved = false; - function Suspender() { - if (resolved) { - return 'resolved'; - } - throw promise; - } - - let response; - expect(() => { - response = ReactDOMServer.renderToStaticNodeStream( -
- - - -
, - ); - }).toErrorDev( - 'ReactDOMServer.renderToStaticNodeStream() is deprecated and will be removed in an upcomingrelease of React', - {withoutStack: true}, - ); - await resolve(); - expect(response.read().toString()).toEqual('
resolved
'); - }); - }); - it('warns with a no-op when an async setState is triggered', () => { class Foo extends React.Component { UNSAFE_componentWillMount() { diff --git a/packages/react-dom/src/server/ReactDOMFizzServerBun.js b/packages/react-dom/src/server/ReactDOMFizzServerBun.js index bc0206cdc805..4cceb66e7cdf 100644 --- a/packages/react-dom/src/server/ReactDOMFizzServerBun.js +++ b/packages/react-dom/src/server/ReactDOMFizzServerBun.js @@ -146,15 +146,4 @@ function renderToReadableStream( }); } -function renderToStaticNodeStream() { - throw new Error( - 'ReactDOMServer.renderToStaticNodeStream(): The Node Stream API is not available ' + - 'in Bun. Use ReactDOMServer.renderToReadableStream() instead.', - ); -} - -export { - renderToReadableStream, - renderToStaticNodeStream, - ReactVersion as version, -}; +export {renderToReadableStream, ReactVersion as version}; diff --git a/packages/react-dom/src/server/ReactDOMLegacyServerBrowser.js b/packages/react-dom/src/server/ReactDOMLegacyServerBrowser.js index 01fdbd8d50b6..43bf22bddbdf 100644 --- a/packages/react-dom/src/server/ReactDOMLegacyServerBrowser.js +++ b/packages/react-dom/src/server/ReactDOMLegacyServerBrowser.js @@ -39,16 +39,4 @@ function renderToStaticMarkup( ); } -function renderToStaticNodeStream() { - throw new Error( - 'ReactDOMServer.renderToStaticNodeStream(): The streaming API is not available ' + - 'in the browser. Use ReactDOMServer.renderToStaticMarkup() instead.', - ); -} - -export { - renderToString, - renderToStaticMarkup, - renderToStaticNodeStream, - version, -}; +export {renderToString, renderToStaticMarkup, version}; diff --git a/packages/react-dom/src/server/ReactDOMLegacyServerNode.js b/packages/react-dom/src/server/ReactDOMLegacyServerNode.js index 07765e2b7433..681a07b41100 100644 --- a/packages/react-dom/src/server/ReactDOMLegacyServerNode.js +++ b/packages/react-dom/src/server/ReactDOMLegacyServerNode.js @@ -10,7 +10,6 @@ import type {ReactNodeList} from 'shared/ReactTypes'; import {version, renderToStringImpl} from './ReactDOMLegacyServerImpl'; -import {renderToStaticNodeStream} from './ReactDOMLegacyServerNodeStream'; type ServerOptions = { identifierPrefix?: string, @@ -40,9 +39,4 @@ function renderToStaticMarkup( ); } -export { - renderToString, - renderToStaticMarkup, - renderToStaticNodeStream, - version, -}; +export {renderToString, renderToStaticMarkup, version}; diff --git a/packages/react-dom/src/server/ReactDOMLegacyServerNodeStream.js b/packages/react-dom/src/server/ReactDOMLegacyServerNodeStream.js deleted file mode 100644 index 374a4a506883..000000000000 --- a/packages/react-dom/src/server/ReactDOMLegacyServerNodeStream.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @flow - */ - -import type {ReactNodeList} from 'shared/ReactTypes'; - -import type {Request} from 'react-server/src/ReactFizzServer'; - -import { - createRequest, - startWork, - startFlowing, - abort, -} from 'react-server/src/ReactFizzServer'; - -import { - createResumableState, - createRenderState, - createRootFormatContext, -} from 'react-dom-bindings/src/server/ReactFizzConfigDOMLegacy'; - -import {Readable} from 'stream'; - -type ServerOptions = { - identifierPrefix?: string, -}; - -class ReactMarkupReadableStream extends Readable { - request: Request; - startedFlowing: boolean; - constructor() { - // Calls the stream.Readable(options) constructor. Consider exposing built-in - // features like highWaterMark in the future. - super({}); - this.request = (null: any); - this.startedFlowing = false; - } - - // $FlowFixMe[missing-local-annot] - _destroy(err, callback) { - abort(this.request); - callback(err); - } - - // $FlowFixMe[missing-local-annot] - _read(size) { - if (this.startedFlowing) { - startFlowing(this.request, this); - } - } -} - -function onError() { - // Non-fatal errors are ignored. -} - -let didWarnAboutDeprecatedRenderToStaticNodeStream = false; - -function renderToStaticNodeStream( - children: ReactNodeList, - options?: ServerOptions, -): Readable { - if (__DEV__) { - if (!didWarnAboutDeprecatedRenderToStaticNodeStream) { - didWarnAboutDeprecatedRenderToStaticNodeStream = true; - console.error( - 'ReactDOMServer.renderToStaticNodeStream() is deprecated and will be removed in an upcoming' + - 'release of React. Use ReactDOMServer.renderToPipeableStream() and wait to `pipe` until the `onAllReady`' + - ' callback has been called to produce a document suitable for static use cases.', - ); - } - } - - function onAllReady() { - // We wait until everything has loaded before starting to write. - // That way we only end up with fully resolved HTML even if we suspend. - destination.startedFlowing = true; - startFlowing(request, destination); - } - const destination = new ReactMarkupReadableStream(); - const resumableState = createResumableState( - options ? options.identifierPrefix : undefined, - undefined, - ); - const request = createRequest( - children, - resumableState, - createRenderState(resumableState, true), - createRootFormatContext(), - Infinity, - onError, - onAllReady, - undefined, - undefined, - undefined, - ); - destination.request = request; - startWork(request); - return destination; -} - -export {renderToStaticNodeStream}; diff --git a/packages/react-dom/src/server/react-dom-server.bun.stable.js b/packages/react-dom/src/server/react-dom-server.bun.stable.js index 74f933dcfeb9..4d17773002f7 100644 --- a/packages/react-dom/src/server/react-dom-server.bun.stable.js +++ b/packages/react-dom/src/server/react-dom-server.bun.stable.js @@ -7,8 +7,4 @@ * @flow */ -export { - renderToReadableStream, - renderToStaticNodeStream, - version, -} from './ReactDOMFizzServerBun.js'; +export {renderToReadableStream, version} from './ReactDOMFizzServerBun.js';