dillon1000/react

Commit

[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
Browse files
Changed paths8 files
First-parent comparison
M packages/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 Modified
Patch

Files changed

Rendering syntax-highlighted changes…