diff --git a/packages/next/client/index.tsx b/packages/next/client/index.tsx index 9b565ebb632c6..eea7be78c20dd 100644 --- a/packages/next/client/index.tsx +++ b/packages/next/client/index.tsx @@ -30,7 +30,6 @@ import measureWebVitals from './performance-relayer' import { RouteAnnouncer } from './route-announcer' import { createRouter, makePublicRouterInstance } from './router' import { getProperError } from '../lib/is-error' -import { RefreshContext } from './streaming/refresh' import { ImageConfigContext } from '../shared/lib/image-config-context' import { ImageConfigComplete } from '../shared/lib/image-config' import { removeBasePath } from './remove-base-path' @@ -675,6 +674,7 @@ if (process.env.__NEXT_RSC) { createFromFetch, createFromReadableStream, } = require('next/dist/compiled/react-server-dom-webpack') + const { RefreshContext } = require('./streaming/refresh') const encoder = new TextEncoder() diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index e4b68b76e961c..51ded78bde145 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -105,10 +105,11 @@ function preloadDataFetchingRecord( function useFlightResponse( writable: WritableStream, - id: string, + cachePrefix: string, req: ReadableStream, serverComponentManifest: any ) { + const id = cachePrefix + ',' + (React as any).useId() let entry = rscCache.get(id) if (!entry) { const [renderStream, forwardStream] = readableStreamTee(req) @@ -180,7 +181,6 @@ function createServerComponentRenderer( const writable = transformStream.writable const ServerComponentWrapper = (props: any) => { - const id = (React as any).useId() const reqStream: ReadableStream = renderToReadableStream( , serverComponentManifest @@ -188,12 +188,11 @@ function createServerComponentRenderer( const response = useFlightResponse( writable, - cachePrefix + ',' + id, + cachePrefix, reqStream, serverComponentManifest ) const root = response.readRoot() - rscCache.delete(id) return root } diff --git a/packages/next/server/render.tsx b/packages/next/server/render.tsx index 66516148b8309..ef7f008163803 100644 --- a/packages/next/server/render.tsx +++ b/packages/next/server/render.tsx @@ -313,18 +313,19 @@ function checkRedirectValues( const rscCache = new Map() function useFlightResponse({ - id, + cachePrefix, req, pageData, inlinedDataWritable, serverComponentManifest, }: { - id: string + cachePrefix: string req: ReadableStream pageData: { current: string } | null inlinedDataWritable: WritableStream serverComponentManifest: any }) { + const id = cachePrefix + ',' + (React as any).useId() let entry = rscCache.get(id) if (!entry) { const [renderStream, forwardStream] = readableStreamTee(req) @@ -391,15 +392,13 @@ function createServerComponentRenderer( } ) { function ServerComponentWrapper({ router, ...props }: any) { - const id = (React as any).useId() - const reqStream: ReadableStream = renderToReadableStream( , serverComponentManifest ) const response = useFlightResponse({ - id: cachePrefix + ',' + id, + cachePrefix, req: reqStream, pageData, inlinedDataWritable: inlinedTransformStream.writable, @@ -407,7 +406,6 @@ function createServerComponentRenderer( }) const root = response.readRoot() - rscCache.delete(id) return root } diff --git a/test/integration/production/test/index.test.js b/test/integration/production/test/index.test.js index f4782940d05b8..6677ecbb1148d 100644 --- a/test/integration/production/test/index.test.js +++ b/test/integration/production/test/index.test.js @@ -313,7 +313,7 @@ describe('Production Usage', () => { expect(content).not.toContain('.currentScript') }) - it('should not contain useAmp in main chunk', async () => { + it('should not contain amp, rsc APIs in main chunk', async () => { const globResult = await glob('main-*.js', { cwd: join(appDir, '.next/static/chunks'), }) @@ -328,6 +328,7 @@ describe('Production Usage', () => { ) expect(content).not.toContain('useAmp') + expect(content).not.toContain('useRefreshRoot') }) describe('With basic usage', () => {