Rendering Performance in Next.js: Streaming and Suspense Explained

Streaming lets slow parts of a page render without blocking the whole response. Learn how Suspense boundaries improve perceived performance in Next.js.

Streaming data on a screen

When a page has one slow data fetch, a traditional server render blocks the whole page on it. Streaming breaks that dependency: the fast parts render first, and slow sections fill in as their data arrives.

Next.js App Router streams by default when pages are dynamic. Suspense boundaries let you control which parts stream and when.

How Suspense works

Wrap a slow component in <Suspense> with a fallback. The page renders instantly, the fallback shows, and the real content swaps in when ready.

  • Instant first paint and faster time-to-interactive.
  • Slow sections no longer block critical content.
  • Search engines index the fully streamed HTML.
Streaming is not only about speed — it is about showing the most important content first, which also improves SEO signals like LCP.

Where it helps most

Use it for slow databases, external APIs, heavy computations, or third-party embeds. Keep your hero, nav and primary content outside the slow boundary.

The trade-off

Streamed pages are dynamic, so they cannot be statically cached the same way. For public content that changes rarely, prefer ISR; use streaming for the personalized or slow parts.

import { Suspense } from 'react'

export default function ArticlePage() {
  return (
    <main>
      {/* This renders immediately */}
      <ArticleHeader />
      {/* This streams in when the slow fetch resolves */}
      <Suspense fallback={<CommentsSkeleton />}>
        <Comments />
      </Suspense>
    </main>
  )
}

Streaming FAQ

Does streaming hurt SEO?

No. Search engines receive the complete HTML once streaming finishes, and the faster LCP helps your Core Web Vitals signals.

When should I not stream?

When a page is fully static and cacheable, ISR is better. Streaming is for dynamic content that must be fresh on every request.