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); }