Skip to content

Commit 47554da

Browse files
committed
Use react-dom/server.edge instead of .browser in Edge Runtime
1 parent f085c7a commit 47554da

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

packages/next/src/build/create-compiler-aliases.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ export function createWebpackAliases({
118118
}
119119
: undefined),
120120

121+
'react-dom/server.browser$': isEdgeServer
122+
? // This is masking userspace errors where .browser is imported in the Edge runtime
123+
// But we're also making that mistake so maybe it's good to fix for everybody?
124+
'react-dom/server.edge'
125+
: 'react-dom/server.browser',
126+
121127
'styled-jsx/style$': defaultOverrides['styled-jsx/style'],
122128
'styled-jsx$': defaultOverrides['styled-jsx'],
123129

@@ -292,6 +298,9 @@ export function createRSCAliases(
292298
'react/compiler-runtime$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-compiler-runtime`,
293299
react$: `next/dist/server/route-modules/app-page/vendored/${layer}/react`,
294300
'react-dom$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-dom`,
301+
// FIXME(NEXT-3539): react-dom/server should be aliased to react-dom/server.react-server
302+
// optimizations to ignore the legacy build of react-dom/server in `server.browser` build
303+
// 'react-dom/server$': `next/dist/compiled/react-dom${bundledReactChannel}/server.react-server.js`,
295304
'react-server-dom-webpack/server.edge$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-server-dom-webpack-server-edge`,
296305
'react-server-dom-webpack/server.node$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-server-dom-webpack-server-node`,
297306
})
@@ -312,6 +321,9 @@ export function createRSCAliases(
312321
'next/dist/compiled/react/jsx-dev-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-dev-runtime.react-server`,
313322
'next/dist/compiled/react-experimental/jsx-dev-runtime$': `next/dist/compiled/react-experimental/jsx-dev-runtime.react-server`,
314323
'react-dom$': `next/dist/compiled/react-dom${bundledReactChannel}/react-dom.react-server`,
324+
// FIXME(NEXT-3539): react-dom/server should be aliased to react-dom/server.react-server
325+
// optimizations to ignore the legacy build of react-dom/server in `server.browser` build
326+
// 'react-dom/server$': `next/dist/compiled/react-dom${bundledReactChannel}/server.react-server.js`,
315327
'next/dist/compiled/react-dom$': `next/dist/compiled/react-dom${bundledReactChannel}/react-dom.react-server`,
316328
'next/dist/compiled/react-dom-experimental$': `next/dist/compiled/react-dom-experimental/react-dom.react-server`,
317329
})

packages/next/src/server/render.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import type { Revalidate, SwrDelta } from './lib/revalidate'
4141
import type { COMPILER_NAMES } from '../shared/lib/constants'
4242

4343
import React, { type JSX } from 'react'
44+
// This is actually aliased to `react-dom/server.edge` in Edge Runtime
4445
import ReactDOMServer from 'react-dom/server.browser'
4546
import { StyleRegistry, createStyleRegistry } from 'styled-jsx'
4647
import {

packages/next/src/server/stream-utils/node-web-streams-helper.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,11 @@ export function renderToInitialFizzStream({
188188
element,
189189
streamOptions,
190190
}: {
191-
ReactDOMServer: typeof import('react-dom/server.edge')
191+
ReactDOMServer: Pick<
192+
// TODO: Should be a union with typeof import('react-dom/server.browser') but .browser is not typed at all.
193+
typeof import('react-dom/server.edge'),
194+
'renderToReadableStream'
195+
>
192196
element: React.ReactElement
193197
streamOptions?: any
194198
}): Promise<ReactReadableStream> {

0 commit comments

Comments
 (0)