diff --git a/packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js b/packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js index 371a1dd229430..a54a623bb3954 100644 --- a/packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js +++ b/packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js @@ -5089,15 +5089,10 @@ export function writePreambleStart( destination: Destination, resumableState: ResumableState, renderState: RenderState, - willFlushAllSegments: boolean, skipExpect?: boolean, // Used as an override by ReactFizzConfigMarkup ): void { // This function must be called exactly once on every request - if ( - enableFizzExternalRuntime && - !willFlushAllSegments && - renderState.externalRuntimeScript - ) { + if (enableFizzExternalRuntime && renderState.externalRuntimeScript) { // If the root segment is incomplete due to suspended tasks // (e.g. willFlushAllSegments = false) and we are using data // streaming format, ensure the external runtime is sent. diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js index 7f4300f687606..1be040bfe36c9 100644 --- a/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js @@ -3587,6 +3587,9 @@ describe('ReactDOMFizzServer', () => { '' + + (gate(flags => flags.shouldUseFizzExternalRuntime) + ? '' + : '') + '', ); }); @@ -4501,7 +4504,8 @@ describe('ReactDOMFizzServer', () => { expect(document.getElementsByTagName('script').length).toEqual(1); }); - it('does not send the external runtime for static pages', async () => { + // @gate shouldUseFizzExternalRuntime + it('does (unfortunately) send the external runtime for static pages', async () => { await act(() => { const {pipe} = renderToPipeableStream( @@ -4515,11 +4519,11 @@ describe('ReactDOMFizzServer', () => { }); // no scripts should be sent - expect(document.getElementsByTagName('script').length).toEqual(0); + expect(document.getElementsByTagName('script').length).toEqual(1); // the html should be as-is expect(document.documentElement.innerHTML).toEqual( - '

hello world!

', + '

hello world!

', ); }); @@ -5317,7 +5321,9 @@ describe('ReactDOMFizzServer', () => { }); expect(container.innerHTML).toEqual( - '
helloworld, Foo!
', + (gate(flags => flags.shouldUseFizzExternalRuntime) + ? '' + : '') + '
helloworld, Foo!
', ); const errors = []; ReactDOMClient.hydrateRoot(container, , { @@ -5518,7 +5524,7 @@ describe('ReactDOMFizzServer', () => { pipe(writable); }); - expect(container.firstElementChild.outerHTML).toEqual( + expect(container.lastElementChild.outerHTML).toEqual( '
helloworld
', ); @@ -5556,7 +5562,7 @@ describe('ReactDOMFizzServer', () => { pipe(writable); }); - expect(container.firstElementChild.outerHTML).toEqual( + expect(container.lastElementChild.outerHTML).toEqual( '
helloworld
', ); @@ -5696,7 +5702,10 @@ describe('ReactDOMFizzServer', () => { }); expect(container.innerHTML).toEqual( - '
helloworldworldhelloworld
world
', + (gate(flags => flags.shouldUseFizzExternalRuntime) + ? '' + : '') + + '
helloworldworldhelloworld
world
', ); const errors = []; @@ -6499,7 +6508,11 @@ describe('ReactDOMFizzServer', () => { }); expect(document.documentElement.outerHTML).toEqual( - '', + '' + + (gate(flags => flags.shouldUseFizzExternalRuntime) + ? '' + : '') + + '', ); }); diff --git a/packages/react-dom/src/__tests__/ReactDOMFloat-test.js b/packages/react-dom/src/__tests__/ReactDOMFloat-test.js index 2b7a71b7c7b14..b7f42bcf8dbef 100644 --- a/packages/react-dom/src/__tests__/ReactDOMFloat-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMFloat-test.js @@ -701,6 +701,9 @@ describe('ReactDOMFloat', () => { }); expect(chunks).toEqual([ '' + + (gate(flags => flags.shouldUseFizzExternalRuntime) + ? '' + : '') + 'foo' + 'bar', '', diff --git a/packages/react-markup/src/ReactFizzConfigMarkup.js b/packages/react-markup/src/ReactFizzConfigMarkup.js index 800dd46e0ad77..7d14ccd628de2 100644 --- a/packages/react-markup/src/ReactFizzConfigMarkup.js +++ b/packages/react-markup/src/ReactFizzConfigMarkup.js @@ -208,14 +208,12 @@ export function writePreambleStart( destination: Destination, resumableState: ResumableState, renderState: RenderState, - willFlushAllSegments: boolean, skipExpect?: boolean, // Used as an override by ReactFizzConfigMarkup ): void { return writePreambleStartImpl( destination, resumableState, renderState, - willFlushAllSegments, true, // skipExpect ); } diff --git a/packages/react-server/src/ReactFizzServer.js b/packages/react-server/src/ReactFizzServer.js index 65efe7c7e8935..155bb7fe3ff3a 100644 --- a/packages/react-server/src/ReactFizzServer.js +++ b/packages/react-server/src/ReactFizzServer.js @@ -4835,14 +4835,7 @@ function flushPreamble( preambleSegments: Array>, ) { // The preamble is ready. - const willFlushAllSegments = - request.allPendingTasks === 0 && request.trackedPostpones === null; - writePreambleStart( - destination, - request.resumableState, - request.renderState, - willFlushAllSegments, - ); + writePreambleStart(destination, request.resumableState, request.renderState); for (let i = 0; i < preambleSegments.length; i++) { const segments = preambleSegments[i]; for (let j = 0; j < segments.length; j++) {