dillon1000/react

Commit

[Flight][Float] Preinitialize module imports during SSR (#27314)

Currently when we SSR a Flight response we do not emit any resources for
module imports. This means that when the client hydrates it won't have
already loaded the necessary scripts to satisfy the Imports defined in
the Flight payload which will lead to a delay in hydration completing.

This change updates `react-server-dom-webpack` and
`react-server-dom-esm` to emit async script tags in the head when we
encounter a modules in the flight response.

To support this we need some additional server configuration. We need to
know the path prefix for chunk loading and whether the chunks will load
with CORS or not (and if so with what configuration).
Browse files
Changed paths48 files
First-parent comparison
A fixtures/flight-esm/.nvmrc AddedM fixtures/flight-esm/server/global.js ModifiedM fixtures/flight-esm/src/App.js ModifiedM fixtures/flight-esm/yarn.lock ModifiedA fixtures/flight/.nvmrc AddedM fixtures/flight/server/global.js ModifiedM packages/react-client/src/ReactFlightClient.js ModifiedM packages/react-client/src/forks/ReactFlightClientConfig.custom.js ModifiedM packages/react-client/src/forks/ReactFlightClientConfig.dom-browser-esm.js ModifiedM packages/react-client/src/forks/ReactFlightClientConfig.dom-browser.js ModifiedM packages/react-client/src/forks/ReactFlightClientConfig.dom-bun.js ModifiedM packages/react-client/src/forks/ReactFlightClientConfig.dom-edge-webpack.js ModifiedM packages/react-client/src/forks/ReactFlightClientConfig.dom-legacy.js ModifiedM packages/react-client/src/forks/ReactFlightClientConfig.dom-node-esm.js ModifiedM packages/react-client/src/forks/ReactFlightClientConfig.dom-node-webpack.js ModifiedM packages/react-client/src/forks/ReactFlightClientConfig.dom-node.js ModifiedM packages/react-dom-bindings/src/shared/ReactFlightClientConfigDOM.js ModifiedA packages/react-dom-bindings/src/shared/crossOriginStrings.js AddedM packages/react-dom/src/shared/ReactDOMFloat.js ModifiedM packages/react-dom/src/shared/ReactDOMTypes.js ModifiedM packages/react-noop-renderer/src/ReactNoopFlightClient.js ModifiedR packages/react-server-dom-esm/src/ReactFlightClientConfigESMBundler.js →packages/react-server-dom-esm/src/ReactFlightClientConfigBundlerESM.js RenamedA packages/react-server-dom-esm/src/ReactFlightClientConfigTargetESMBrowser.js AddedA packages/react-server-dom-esm/src/ReactFlightClientConfigTargetESMServer.js AddedM packages/react-server-dom-esm/src/ReactFlightDOMClientBrowser.js ModifiedM packages/react-server-dom-esm/src/ReactFlightDOMClientNode.js ModifiedR packages/react-server-dom-webpack/src/ReactFlightClientConfigNodeBundler.js →packages/react-server-dom-webpack/src/ReactFlightClientConfigBundlerNode.js RenamedR packages/react-server-dom-webpack/src/ReactFlightClientConfigWebpackBundler.js →packages/react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpack.js RenamedA packages/react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpackBrowser.js AddedA packages/react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpackServer.js AddedA packages/react-server-dom-webpack/src/ReactFlightClientConfigTargetWebpackBrowser.js AddedA packages/react-server-dom-webpack/src/ReactFlightClientConfigTargetWebpackServer.js AddedM packages/react-server-dom-webpack/src/ReactFlightDOMClientBrowser.js ModifiedM packages/react-server-dom-webpack/src/ReactFlightDOMClientEdge.js ModifiedM packages/react-server-dom-webpack/src/ReactFlightDOMClientNode.js ModifiedM packages/react-server-dom-webpack/src/ReactFlightServerConfigWebpackBundler.js ModifiedM packages/react-server-dom-webpack/src/ReactFlightWebpackPlugin.js ModifiedM packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js ModifiedM packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js ModifiedM packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMForm-test.js ModifiedM packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js ModifiedM packages/react-server-dom-webpack/src/__tests__/utils/WebpackMock.js ModifiedA packages/react-server-dom-webpack/src/shared/ReactFlightImportMetadata.js AddedM packages/react/src/__tests__/ReactFetch-test.js ModifiedM packages/react/src/__tests__/ReactFetchEdge-test.js ModifiedM scripts/flow/environment.js ModifiedM scripts/jest/setupHostConfigs.js ModifiedM scripts/shared/inlinedHostConfigs.js Modified
Patch

Files changed

Rendering syntax-highlighted changes…