diff --git a/packages/next/client/app-index.tsx b/packages/next/client/app-index.tsx index 597258c195bd5b3..f9dc21c51b5b493 100644 --- a/packages/next/client/app-index.tsx +++ b/packages/next/client/app-index.tsx @@ -30,10 +30,23 @@ __webpack_require__.u = (chunkId: any) => { // Ignore the module ID transform in client. // eslint-disable-next-line no-undef // @ts-expect-error TODO: fix type -self.__next_require__ = (id: string) => { - const modId = id.replace(/\?.+$/, '') - return __webpack_require__(modId) -} +self.__next_require__ = + process.env.NODE_ENV !== 'production' + ? (id: string) => { + const mod = __webpack_require__(id) + if (typeof mod === 'object') { + // Return a proxy to flight client to make sure it's always getting + // the latest module, instead of being cached. + return new Proxy(mod, { + get(_target, prop) { + return __webpack_require__(id)[prop] + }, + }) + } + + return mod + } + : __webpack_require__ // eslint-disable-next-line no-undef ;(self as any).__next_chunk_load__ = (chunk: string) => { diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index c126356e50219c0..472103a98c97497 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -1601,35 +1601,11 @@ export async function renderToHTMLOrFlight( ).slice(1), ] - const serverComponentManifestWithHMR = dev - ? new Proxy(serverComponentManifest, { - get: (target, prop) => { - if ( - typeof prop === 'string' && - !prop.startsWith('_') && - target[prop] - ) { - // Attach TS (timestamp) query param to IDs to get rid of flight client's module cache on HMR. - const namedExports: any = {} - const ts = Date.now() - for (let key in target[prop]) { - namedExports[key] = { - ...target[prop][key], - id: `${target[prop][key].id}?ts=${ts}`, - } - } - return namedExports - } - return target[prop] - }, - }) - : serverComponentManifest - // For app dir, use the bundled version of Fizz renderer (renderToReadableStream) // which contains the subset React. const readable = ComponentMod.renderToReadableStream( flightData, - serverComponentManifestWithHMR, + serverComponentManifest, { context: serverContexts, onError: flightDataRendererErrorHandler,