From 0c8016701cf9e470e1c7ee84602e5b0e2d0097b9 Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Fri, 16 May 2025 14:18:40 -0400 Subject: [PATCH] Should be considered complete inside onShellReady callback --- .../src/__tests__/ReactDOMFizzServerNode-test.js | 15 +++++++++++++++ packages/react-server/src/ReactFizzServer.js | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js index d4f3486a1dbed..198ccb4f8f6a5 100644 --- a/packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js @@ -67,6 +67,21 @@ describe('ReactDOMFizzServerNode', () => { expect(output.result).toMatchInlineSnapshot(`"
hello world
"`); }); + it('flush fully if piping in on onShellReady', async () => { + const {writable, output} = getTestWritable(); + await act(() => { + const {pipe} = ReactDOMFizzServer.renderToPipeableStream( +
hello world
, + { + onShellReady() { + pipe(writable); + }, + }, + ); + }); + expect(output.result).toMatchInlineSnapshot(`"
hello world
"`); + }); + it('should emit DOCTYPE at the root of the document', async () => { const {writable, output} = getTestWritable(); await act(() => { diff --git a/packages/react-server/src/ReactFizzServer.js b/packages/react-server/src/ReactFizzServer.js index a0388968e8244..a159771421b7d 100644 --- a/packages/react-server/src/ReactFizzServer.js +++ b/packages/react-server/src/ReactFizzServer.js @@ -4335,6 +4335,7 @@ function finishedTask( boundary: Root | SuspenseBoundary, segment: null | Segment, ) { + request.allPendingTasks--; if (boundary === null) { if (segment !== null && segment.parentFlushed) { if (request.completedRootSegment !== null) { @@ -4417,7 +4418,6 @@ function finishedTask( } } - request.allPendingTasks--; if (request.allPendingTasks === 0) { completeAll(request); }