From f7bb0201d73ce0acf8e9cf17e2f487f8b3195c54 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 24 Jan 2026 21:20:22 +0100 Subject: [PATCH] fix: streaming race condition --- packages/router-core/src/ssr/transformStreamWithRouter.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/router-core/src/ssr/transformStreamWithRouter.ts b/packages/router-core/src/ssr/transformStreamWithRouter.ts index ef893bfa9e2..f7d856d7622 100644 --- a/packages/router-core/src/ssr/transformStreamWithRouter.ts +++ b/packages/router-core/src/ssr/transformStreamWithRouter.ts @@ -271,11 +271,13 @@ export function transformStreamWithRouter( const html = router.serverSsr?.takeBufferedHtml() if (!html) return - if (isAppRendering) { - // Buffer for insertion at next valid position + if (isAppRendering || leftover) { + // Buffer when app is still rendering OR when there's leftover content + // that hasn't been flushed yet. This prevents race conditions where + // injected HTML appears before buffered app content pendingRouterHtmlParts.push(html) } else { - // App is done rendering, write directly to output + // App done rendering and no leftover - safe to write directly for better streaming safeEnqueue(html) } })