Dmytro Morar
Next.js

Suspense & Streaming

Suspense boundaries allow parts of the UI to stream independently in App Router.

Suspense with RSC

  • Server streams ready parts of the tree as they finish.
  • Slow components or fetches show fallbacks.
  • RSC payload arrives in steps.

Automatic boundaries

  • Around segments with loading.js.
  • Around nested layouts and dynamic segments.
  • Enables partial UI while slower parts load.

Streaming behavior

  • Server sends HTML and RSC in chunks.
  • Client renders minimal HTML first, then updates with fragments.

Suspense in Client Components

Suspense works on the client but without RSC streaming.

<Suspense fallback={<Spinner />}>
  <Chart />
</Suspense>

Why it matters

  • Faster perceived load.
  • Parallel rendering for large layout trees.

On this page