diff --git a/packages/next/bin/next.ts b/packages/next/bin/next.ts index bb99c8ad6471..ad8597d91797 100755 --- a/packages/next/bin/next.ts +++ b/packages/next/bin/next.ts @@ -43,8 +43,7 @@ const args = arg( ) // Detect if react-dom is enabled streaming rendering mode -const shouldUseReactRoot = !!require('react-dom/server.browser') - .renderToReadableStream +const shouldUseReactRoot = !!require('react-dom/server').renderToPipeableStream // Version is inlined into the file using taskr build pipeline if (args['--version']) { diff --git a/packages/next/server/next.ts b/packages/next/server/next.ts index f2d46252a9a6..8469bf1b8bc1 100644 --- a/packages/next/server/next.ts +++ b/packages/next/server/next.ts @@ -185,8 +185,8 @@ function createServer(options: NextServerOptions): NextServer { // Make sure env of custom server is overridden. // Use dynamic require to make sure it's executed in it's own context. - const ReactDOMServer = require('react-dom/server.browser') - const shouldUseReactRoot = !!ReactDOMServer.renderToReadableStream + const ReactDOMServer = require('react-dom/server') + const shouldUseReactRoot = !!ReactDOMServer.renderToPipeableStream if (shouldUseReactRoot) { ;(process.env as any).__NEXT_REACT_ROOT = 'true' } diff --git a/packages/next/server/view-render.tsx b/packages/next/server/view-render.tsx index 827e1a2a92e0..ad8f2b1f52ff 100644 --- a/packages/next/server/view-render.tsx +++ b/packages/next/server/view-render.tsx @@ -17,12 +17,14 @@ import { continueFromInitialStream, } from './node-web-streams-helper' import { FlushEffectsContext } from '../shared/lib/flush-effects' -// @ts-ignore react-dom/client exists when using React 18 -import ReactDOMServer from 'react-dom/server.browser' import { isDynamicRoute } from '../shared/lib/router/utils' import { tryGetPreviewData } from './api-utils/node' import DefaultRootLayout from '../lib/views-layout' +const ReactDOMServer = process.env.__NEXT_REACT_ROOT + ? require('react-dom/server.browser') + : require('react-dom/server') + export type RenderOptsPartial = { err?: Error | null dev?: boolean