[Flight] Add a Node.js Web Streams bundle for unbundled client/server for Webpack (#33442)
Like #33441 but for Flight. This is just one of the many combinations needed. I'm just starting with one.
Sebastian Markbåge committed
Jun 5, 2025 at 14:29 UTC
a5110b22f0a02cb87cd2bca5dc4527c73e2f281b
11 files changed
+167
-13
packages/react-client/src/forks/ReactFlightClientConfig.dom-node-webstreams.js
new
+18
@@ -0,0 +1,18 @@
1
+/**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+export {default as rendererVersion} from 'shared/ReactVersion';
11
+export const rendererPackageName = 'react-server-dom-webpack';
12
+
13
+export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
14
+export * from 'react-client/src/ReactClientConsoleConfigServer';
15
+export * from 'react-server-dom-webpack/src/client/ReactFlightClientConfigBundlerNode';
16
+export * from 'react-server-dom-webpack/src/client/ReactFlightClientConfigTargetWebpackServer';
17
+export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';
18
+export const usedWithSSR = true;
packages/react-server-dom-webpack/npm/client.node.unbundled.js
+23
-2
@@ -1,7 +1,28 @@
1
'use strict';
2
3
+var n, w;
4
if (process.env.NODE_ENV === 'production') {
4
- module.exports = require('./cjs/react-server-dom-webpack-client.node.unbundled.production.js');
5
+ n = require('./cjs/react-server-dom-webpack-client.node.unbundled.production.js');
6
+ w = require('./cjs/react-server-dom-webpack-client.node-webstreams.unbundled.production.js');
7
} else {
6
- module.exports = require('./cjs/react-server-dom-webpack-client.node.unbundled.development.js');
8
+ n = require('./cjs/react-server-dom-webpack-client.node.unbundled.development.js');
9
+ w = require('./cjs/react-server-dom-webpack-client.node-webstreams.unbundled.development.js');
10
}
11
+
12
+exports.registerServerReference = function (r, i, e) {
13
+ return w.registerServerReference(n.registerServerReference(r, i, e), i, e);
14
+};
15
+exports.createServerReference = function (i, c, e, d, f) {
16
+ return w.registerServerReference(
17
+ n.createServerReference(i, c, e, d, f),
18
+ i,
19
+ e
20
+ );
21
+};
22
+
23
+exports.createFromNodeStream = n.createFromNodeStream;
24
+exports.createFromFetch = w.createFromFetch;
25
+exports.createFromReadableStream = w.createFromReadableStream;
26
+
27
+exports.createTemporaryReferenceSet = w.createTemporaryReferenceSet;
28
+exports.encodeReply = w.encodeReply;
packages/react-server-dom-webpack/npm/server.node.unbundled.js
+6
-1
@@ -1,10 +1,12 @@
1
'use strict';
2
3
-var s;
3
+var s, w;
4
if (process.env.NODE_ENV === 'production') {
5
s = require('./cjs/react-server-dom-webpack-server.node.unbundled.production.js');
6
+ w = require('./cjs/react-server-dom-webpack-server.node-webstreams.unbundled.production.js');
7
} else {
8
s = require('./cjs/react-server-dom-webpack-server.node.unbundled.development.js');
9
+ w = require('./cjs/react-server-dom-webpack-server.node-webstreams.unbundled.development.js');
10
}
11
12
exports.renderToPipeableStream = s.renderToPipeableStream;
@@ -16,3 +18,6 @@ exports.registerServerReference = s.registerServerReference;
18
exports.registerClientReference = s.registerClientReference;
19
exports.createClientModuleProxy = s.createClientModuleProxy;
20
exports.createTemporaryReferenceSet = s.createTemporaryReferenceSet;
21
+
22
+exports.renderToReadableStream = w.renderToReadableStream;
23
+exports.decodeReplyFromAsyncIterable = w.decodeReplyFromAsyncIterable;
packages/react-server-dom-webpack/src/client/react-flight-dom-client.browser.js
new
+10
@@ -0,0 +1,10 @@
1
+/**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+export * from './ReactFlightDOMClientBrowser';
packages/react-server-dom-webpack/src/client/react-flight-dom-client.edge.js
new
+10
@@ -0,0 +1,10 @@
1
+/**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+export * from './ReactFlightDOMClientEdge';
packages/react-server-dom-webpack/src/client/react-flight-dom-client.node-webstreams.unbundled.js
new
+10
@@ -0,0 +1,10 @@
1
+/**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+export * from './ReactFlightDOMClientEdge';
packages/react-server-dom-webpack/src/client/react-flight-dom-client.node.js
new
+10
@@ -0,0 +1,10 @@
1
+/**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+export * from './ReactFlightDOMClientNode';
packages/react-server-dom-webpack/src/client/react-flight-dom-client.node.unbundled.js
new
+10
@@ -0,0 +1,10 @@
1
+/**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+export * from './ReactFlightDOMClientNode';
packages/react-server-dom-webpack/src/server/react-flight-dom-server.node-webstreams.unbundled.js
new
+21
@@ -0,0 +1,21 @@
1
+/**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+export {
11
+ renderToReadableStream,
12
+ prerender as unstable_prerender,
13
+ decodeReply,
14
+ decodeReplyFromAsyncIterable,
15
+ decodeAction,
16
+ decodeFormState,
17
+ registerServerReference,
18
+ registerClientReference,
19
+ createClientModuleProxy,
20
+ createTemporaryReferenceSet,
21
+} from './ReactFlightDOMServerEdge';
scripts/rollup/bundles.js
+33
-4
@@ -484,6 +484,18 @@ const bundles = [
484
wrapWithModuleBoundaries: false,
485
externals: ['react', 'util', 'crypto', 'async_hooks', 'react-dom'],
486
},
487
+ {
488
+ bundleTypes: [NODE_DEV, NODE_PROD],
489
+ moduleType: RENDERER,
490
+ entry:
491
+ 'react-server-dom-webpack/src/server/react-flight-dom-server.node-webstreams.unbundled',
492
+ name: 'react-server-dom-webpack-server.node-webstreams.unbundled',
493
+ condition: 'react-server',
494
+ global: 'ReactServerDOMServer',
495
+ minifyWithProdErrorCodes: false,
496
+ wrapWithModuleBoundaries: false,
497
+ externals: ['react', 'util', 'crypto', 'async_hooks', 'react-dom'],
498
+ },
499
{
500
bundleTypes: [NODE_DEV, NODE_PROD],
501
moduleType: RENDERER,
@@ -500,7 +512,9 @@ const bundles = [
512
{
513
bundleTypes: [NODE_DEV, NODE_PROD],
514
moduleType: RENDERER,
503
- entry: 'react-server-dom-webpack/client.browser',
515
+ entry:
516
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.browser',
517
+ name: 'react-server-dom-webpack-client.browser',
518
global: 'ReactServerDOMClient',
519
minifyWithProdErrorCodes: false,
520
wrapWithModuleBoundaries: false,
@@ -509,7 +523,8 @@ const bundles = [
523
{
524
bundleTypes: [NODE_DEV, NODE_PROD],
525
moduleType: RENDERER,
512
- entry: 'react-server-dom-webpack/client.node',
526
+ entry: 'react-server-dom-webpack/src/client/react-flight-dom-client.node',
527
+ name: 'react-server-dom-webpack-client.node',
528
global: 'ReactServerDOMClient',
529
minifyWithProdErrorCodes: false,
530
wrapWithModuleBoundaries: false,
@@ -518,7 +533,20 @@ const bundles = [
533
{
534
bundleTypes: [NODE_DEV, NODE_PROD],
535
moduleType: RENDERER,
521
- entry: 'react-server-dom-webpack/client.node.unbundled',
536
+ entry:
537
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.node.unbundled',
538
+ name: 'react-server-dom-webpack-client.node.unbundled',
539
+ global: 'ReactServerDOMClient',
540
+ minifyWithProdErrorCodes: false,
541
+ wrapWithModuleBoundaries: false,
542
+ externals: ['react', 'react-dom', 'util', 'crypto'],
543
+ },
544
+ {
545
+ bundleTypes: [NODE_DEV, NODE_PROD],
546
+ moduleType: RENDERER,
547
+ entry:
548
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.node-webstreams.unbundled',
549
+ name: 'react-server-dom-webpack-client.node-webstreams.unbundled',
550
global: 'ReactServerDOMClient',
551
minifyWithProdErrorCodes: false,
552
wrapWithModuleBoundaries: false,
@@ -527,7 +555,8 @@ const bundles = [
555
{
556
bundleTypes: [NODE_DEV, NODE_PROD],
557
moduleType: RENDERER,
530
- entry: 'react-server-dom-webpack/client.edge',
558
+ entry: 'react-server-dom-webpack/src/client/react-flight-dom-client.edge',
559
+ name: 'react-server-dom-webpack-client.edge',
560
global: 'ReactServerDOMClient',
561
minifyWithProdErrorCodes: false,
562
wrapWithModuleBoundaries: false,
scripts/shared/inlinedHostConfigs.js
+16
-6
@@ -17,7 +17,7 @@ module.exports = [
17
'react-dom/src/server/react-dom-server.browser.js',
18
'react-dom/static.browser',
19
'react-dom/unstable_server-external-runtime',
20
- 'react-server-dom-webpack/client.browser',
20
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.browser',
21
'react-server-dom-webpack/src/server/react-flight-dom-server.browser',
22
],
23
paths: [
@@ -43,6 +43,7 @@ module.exports = [
43
'react-server-dom-webpack/src/client/ReactFlightDOMClientBrowser.js', // react-server-dom-webpack/client.browser
44
'react-server-dom-webpack/src/client/ReactFlightClientConfigBundlerWebpack.js',
45
'react-server-dom-webpack/src/client/ReactFlightClientConfigBundlerWebpackBrowser.js',
46
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.browser',
47
'react-server-dom-webpack/src/server/react-flight-dom-server.browser',
48
'react-server-dom-webpack/src/server/ReactFlightDOMServerBrowser.js', // react-server-dom-webpack/src/server/react-flight-dom-server.browser
49
'react-devtools',
@@ -62,7 +63,7 @@ module.exports = [
63
'react-dom/src/server/react-dom-server.node.js',
64
'react-dom/test-utils',
65
'react-dom/unstable_server-external-runtime',
65
- 'react-server-dom-webpack/client.node.unbundled',
66
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.node.unbundled',
67
'react-server-dom-webpack/src/server/react-flight-dom-server.node.unbundled',
68
],
69
paths: [
@@ -90,6 +91,7 @@ module.exports = [
91
'react-server-dom-webpack/static.node.unbundled',
92
'react-server-dom-webpack/src/client/ReactFlightDOMClientNode.js', // react-server-dom-webpack/client.node
93
'react-server-dom-webpack/src/client/ReactFlightClientConfigBundlerNode.js',
94
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.node.unbundled',
95
'react-server-dom-webpack/src/server/react-flight-dom-server.node.unbundled',
96
'react-server-dom-webpack/src/server/ReactFlightDOMServerNode.js', // react-server-dom-webpack/src/server/react-flight-dom-server.node
97
'react-devtools',
@@ -104,7 +106,11 @@ module.exports = [
106
},
107
{
108
shortName: 'dom-node-webstreams',
107
- entryPoints: ['react-dom/src/server/react-dom-server.node-webstreams.js'],
109
+ entryPoints: [
110
+ 'react-dom/src/server/react-dom-server.node-webstreams.js',
111
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.node-webstreams.unbundled',
112
+ 'react-server-dom-webpack/src/server/react-flight-dom-server.node-webstreams.unbundled',
113
+ ],
114
paths: [
115
'react-dom',
116
'react-dom/src/ReactDOMReactServer.js',
@@ -130,7 +136,8 @@ module.exports = [
136
'react-server-dom-webpack/static.node.unbundled',
137
'react-server-dom-webpack/src/client/ReactFlightDOMClientEdge.js', // react-server-dom-webpack/client.node
138
'react-server-dom-webpack/src/client/ReactFlightClientConfigBundlerNode.js',
133
- 'react-server-dom-webpack/src/server/react-flight-dom-server.node.unbundled',
139
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.node-webstreams.unbundled',
140
+ 'react-server-dom-webpack/src/server/react-flight-dom-server.node-webstreams.unbundled',
141
'react-server-dom-webpack/src/server/ReactFlightDOMServerEdge.js', // react-server-dom-webpack/src/server/react-flight-dom-server.node
142
'shared/ReactDOMSharedInternals',
143
'react-server/src/ReactFlightServerConfigDebugNode.js',
@@ -141,7 +148,7 @@ module.exports = [
148
{
149
shortName: 'dom-node-webpack',
150
entryPoints: [
144
- 'react-server-dom-webpack/client.node',
151
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.node',
152
'react-server-dom-webpack/src/server/react-flight-dom-server.node',
153
],
154
paths: [
@@ -165,8 +172,10 @@ module.exports = [
172
'react-server-dom-webpack/server.node',
173
'react-server-dom-webpack/static',
174
'react-server-dom-webpack/static.node',
175
+ 'react-server-dom-webpack/src/client/ReactFlightDOMClientNode.js', // react-server-dom-turbopack/client.node
176
'react-server-dom-webpack/src/client/ReactFlightClientConfigBundlerWebpack.js',
177
'react-server-dom-webpack/src/client/ReactFlightClientConfigBundlerWebpackServer.js',
178
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.node',
179
'react-server-dom-webpack/src/server/react-flight-dom-server.node',
180
'react-server-dom-webpack/src/server/ReactFlightDOMServerNode.js', // react-server-dom-webpack/src/server/react-flight-dom-server.node
181
'react-server-dom-webpack/node-register',
@@ -390,7 +399,7 @@ module.exports = [
399
entryPoints: [
400
'react-dom/src/server/react-dom-server.edge.js',
401
'react-dom/static.edge',
393
- 'react-server-dom-webpack/client.edge',
402
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.edge',
403
'react-server-dom-webpack/src/server/react-flight-dom-server.edge',
404
],
405
paths: [
@@ -415,6 +424,7 @@ module.exports = [
424
'react-server-dom-webpack/src/client/ReactFlightDOMClientEdge.js', // react-server-dom-webpack/client.edge
425
'react-server-dom-webpack/src/client/ReactFlightClientConfigBundlerWebpack.js',
426
'react-server-dom-webpack/src/client/ReactFlightClientConfigBundlerWebpackServer.js',
427
+ 'react-server-dom-webpack/src/client/react-flight-dom-client.edge',
428
'react-server-dom-webpack/src/server/react-flight-dom-server.edge',
429
'react-server-dom-webpack/src/server/ReactFlightDOMServerEdge.js', // react-server-dom-webpack/src/server/react-flight-dom-server.edge
430
'react-devtools',