Why streaming matters
Traditional SSR waits for the entire page to compute before sending a single byte. If the page depends on a slow database query, the browser waits — and the user sees a blank screen. Streaming SSR sends the page in chunks as they're ready: head first, then hero, then the rest. The browser starts rendering immediately and the user perceives the page as faster, even when total load time is identical.
The TTFB advantage
Streaming cuts TTFB by an order of magnitude. Instead of TTFB = time-to-compute-entire-page, TTFB = time-to-compute-first-chunk. For pages with a fast shell and slow content, this is a 200-400ms TTFB improvement — which translates directly to better LCP and better Core Web Vitals at the 75th percentile.
The framework support
React Server Components support streaming natively in Next.js 14+ and via the new APIs in Remix. TanStack Start supports streaming via Suspense boundaries. Astro has streaming SSR for partial hydration. SvelteKit supports streaming via the streaming response pattern. Pick a framework that ships streaming — building it yourself is harder than it looks.
The Suspense pattern
Wrap slow components in Suspense with a fallback. The framework sends the fallback in the initial response and streams the real content when it's ready. The HTML response looks like a single document to the browser, but it arrives in chunks. The user sees something instantly and the real content fills in as it loads.
What to stream and what to inline
Critical content (h1, hero text, primary navigation) should be in the initial response, not behind Suspense. Streaming the h1 is bad SEO — Googlebot might not wait for it. Stream secondary content (product reviews, related articles, comments) where the user benefit is high and the SEO cost is low.
The order matters
The order in which chunks arrive determines what the user sees first. Put the slow chunks at the bottom of the tree so the fast chunks render first. If a slow chunk is in the middle of the layout, the browser holds off rendering the rest until the slow chunk arrives — even with streaming.
Browser support and edge cases
All evergreen browsers support streaming. Some CDNs and reverse proxies buffer responses by default, defeating streaming. Test in production, not just locally — your dev environment likely doesn't reproduce CDN buffering. If you see streaming working in dev and failing in prod, check your CDN configuration first.