Back to Blog
Web Development•1 min read

Partial Prerendering in Next.js: Static Speed With Dynamic Content

Scaleup Infotech Team
Scaleup Infotech Team

Custom Software & Business Automation

Next.jsPerformanceStreamingSSR

In this guide

A simple overview of Partial Prerendering in Next.js: Static Speed With Dynamic Content. Learn what it means, when it helps, and what to check first.

For years you had to choose: a fast static page, or a personalized dynamic one. Partial Prerendering (PPR) ends that trade-off by serving a static shell immediately and streaming the dynamic parts in as they're ready.

The Mental Model

Next.js prerenders everything it can at build time into a static shell. Anything wrapped in Suspense that reads dynamic data (cookies, headers, uncached fetches) becomes a 'hole' that streams in at request time.

tsx
export default function Page() {
  return (
    <main>
      {/* Static — sent instantly from the edge */}
      <Hero />
      <Features />

      {/* Dynamic — streamed in per request */}
      <Suspense fallback={<CartSkeleton />}>
        <UserCart />
      </Suspense>
    </main>
  );
}

Why It Matters

  • Time to First Byte stays static-fast because the shell is prerendered.
  • Personalized content still appears, streamed without blocking the whole page.
  • One page, one request — no client-side waterfall of fetches.

Design for the Shell

Put a good skeleton in every Suspense boundary. The static shell is what users see first, so it should feel complete even before the dynamic holes fill in.

Relevant Scaleup Infotech Services

Share this article:

Keep Reading

Ready to implement these ideas?

Discuss Your Project