diff --git a/packages/next/server/node-web-streams-helper.ts b/packages/next/server/node-web-streams-helper.ts index 04de9e57295dd6e..9bd2f6a72fa3142 100644 --- a/packages/next/server/node-web-streams-helper.ts +++ b/packages/next/server/node-web-streams-helper.ts @@ -305,28 +305,14 @@ export async function renderToStream({ generateStaticHTML: boolean flushEffectHandler?: () => Promise }): Promise> { - const closeTag = '' - const suffixUnclosed = suffix ? suffix.split(closeTag)[0] : null - const renderStream: ReadableStream & { - allReady?: Promise - } = await (ReactDOMServer as any).renderToReadableStream(element) - - if (generateStaticHTML) { - await renderStream.allReady - } - - const transforms: Array> = [ - createBufferedTransformStream(), - flushEffectHandler ? createFlushEffectStream(flushEffectHandler) : null, - suffixUnclosed != null ? createPrefixStream(suffixUnclosed) : null, - dataStream ? createInlineDataStream(dataStream) : null, - suffixUnclosed != null ? createSuffixStream(closeTag) : null, - ].filter(Boolean) as any - - return transforms.reduce( - (readable, transform) => pipeThrough(readable, transform), - renderStream - ) + const renderStream = await renderToInitialStream({ ReactDOMServer, element }) + return continueFromInitialStream({ + suffix, + dataStream, + generateStaticHTML, + flushEffectHandler, + renderStream, + }) } export function createSuffixStream( diff --git a/packages/next/server/render.tsx b/packages/next/server/render.tsx index 10140189b685612..337b07ed618589a 100644 --- a/packages/next/server/render.tsx +++ b/packages/next/server/render.tsx @@ -1424,19 +1424,15 @@ export async function renderToHTML( } } } else { - let bodyResult - - let renderStream: any - // We start rendering the shell earlier, before returning the head tags // to `documentResult`. const content = renderContent() - renderStream = await renderToInitialStream({ + const renderStream = await renderToInitialStream({ ReactDOMServer, element: content, }) - bodyResult = async (suffix: string) => { + const bodyResult = async (suffix: string) => { // this must be called inside bodyResult so appWrappers is // up to date when getWrappedApp is called