dillon1000/react
Commit
Browse files [Flight] Respect `async` flag in client manifest (#30959)
In #26624, the ability to mark a client reference module as `async` in the React client manifest was removed because it was not utilized by Webpack, neither in `ReactFlightWebpackPlugin` nor in Next.js. However, some bundlers and frameworks are sophisticated enough to properly handle and identify async ESM modules (e.g., client component modules with top-level `await`), most notably Turbopack in Next.js. Therefore, we need to consider the `async` flag in the client manifest when resolving the client reference metadata on the server. The SSR manifest cannot override this flag, meaning that if a module is async, it must remain async in all client environments. x-ref: https://github.com/vercel/next.js/pull/70022
Changed paths8 files
First-parent comparisonpackages/react-server-dom-turbopack/src/__tests__/ReactFlightTurbopackDOM-test.js ModifiedM packages/react-server-dom-turbopack/src/__tests__/utils/TurbopackMock.js ModifiedM packages/react-server-dom-turbopack/src/server/ReactFlightServerConfigTurbopackBundler.js ModifiedM packages/react-server-dom-turbopack/src/shared/ReactFlightImportMetadata.js ModifiedM packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js ModifiedM packages/react-server-dom-webpack/src/__tests__/utils/WebpackMock.js ModifiedM packages/react-server-dom-webpack/src/server/ReactFlightServerConfigWebpackBundler.js ModifiedM packages/react-server-dom-webpack/src/shared/ReactFlightImportMetadata.js ModifiedPatch
Files changed
Rendering syntax-highlighted changes…