@samitouri / QOS-React / commits / a5110b22f0

[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',