dillon1000/react

Commit

Split out Edge and Node implementations of the Flight Client (#26187)

This splits out the Edge and Node implementations of Flight Client into
their own implementations. The Node implementation now takes a Node
Stream as input.

I removed the bundler config from the Browser variant because you're
never supposed to use that in the browser since it's only for SSR.
Similarly, it's required on the server. This also enables generating a
SSR manifest from the Webpack plugin. This is necessary for SSR so that
you can reverse look up what a client module is called on the server.

I also removed the option to pass a callServer from the server. We might
want to add it back in the future but basically, we don't recommend
calling Server Functions from render for initial render because if that
happened client-side it would be a client-side waterfall. If it's never
called in initial render, then it also shouldn't ever happen during SSR.
This might be considered too restrictive.

~This also compiles the unbundled packages as ESM. This isn't strictly
necessary because we only need access to dynamic import to load the
modules but we don't have any other build options that leave
`import(...)` intact, and seems appropriate that this would also be an
ESM module.~ Went with `import(...)` in CJS instead.
Browse files
Changed paths28 files
First-parent comparison
M fixtures/flight/loader/index.js ModifiedM fixtures/flight/server/handler.js ModifiedA packages/react-client/src/ReactFlightClientHostConfigNode.js AddedM packages/react-client/src/forks/ReactFlightClientHostConfig.dom-node-webpack.js ModifiedM packages/react-client/src/forks/ReactFlightClientHostConfig.dom-node.js ModifiedM packages/react-server-dom-webpack/client.browser.js ModifiedM packages/react-server-dom-webpack/client.edge.js ModifiedM packages/react-server-dom-webpack/client.node.js ModifiedM packages/react-server-dom-webpack/client.node.unbundled.js ModifiedR packages/react-server-dom-webpack/esm/react-server-dom-webpack-node-loader.js →packages/react-server-dom-webpack/esm/react-server-dom-webpack-node-loader.production.min.js RenamedM packages/react-server-dom-webpack/package.json ModifiedA packages/react-server-dom-webpack/src/ReactFlightClientNodeBundlerConfig.js AddedR packages/react-server-dom-webpack/src/ReactFlightDOMClient.js →packages/react-server-dom-webpack/src/ReactFlightDOMClientBrowser.js RenamedA packages/react-server-dom-webpack/src/ReactFlightDOMClientEdge.js AddedA packages/react-server-dom-webpack/src/ReactFlightDOMClientNode.js AddedM packages/react-server-dom-webpack/src/ReactFlightWebpackPlugin.js ModifiedM packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js ModifiedA packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js AddedA packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js AddedM scripts/flow/environment.js ModifiedM scripts/rollup/build.js ModifiedM scripts/rollup/bundles.js ModifiedM scripts/rollup/packaging.js ModifiedA scripts/rollup/plugins/dynamic-imports.js AddedM scripts/rollup/validate/eslintrc.cjs.js ModifiedM scripts/rollup/validate/eslintrc.esm.js ModifiedM scripts/rollup/wrappers.js ModifiedM scripts/shared/inlinedHostConfigs.js Modified
Patch

Files changed

Rendering syntax-highlighted changes…