Next.js Partial Prerendering combines static edge delivery with dynamic streaming content within a single page. Master vocabulary for static shell generation, Suspense-boundary splitting, dynamic API detection (cookies/headers/searchParams), incremental PPR opt-in configuration, and comparison with ISR.
0 / 5 completed
1 / 5
Next.js Partial Prerendering (PPR) combines static and dynamic content. What determines which parts of a page are rendered statically vs dynamically?
PPR uses Suspense boundaries as the split point: everything outside a Suspense boundary is rendered statically at build time (the static shell). Content inside Suspense boundaries is rendered dynamically at request time, streamed in after the initial static response. The static shell is served from edge cache with minimal TTFB.
2 / 5
A page uses PPR with a dynamic Suspense island for user-specific data. The user navigates to the page. What is the sequence of events?
With PPR, the static shell is served immediately from edge cache (near-instant TTFB). The response uses HTTP streaming: dynamic Suspense boundaries are sent as additional chunks from the origin server as their data resolves. This combines CDN-speed static delivery with fresh dynamic content without client-side waterfalls.
3 / 5
Which Next.js configuration enables PPR for a project (as of Next.js 15)?
PPR is enabled via experimental: { ppr: 'incremental' } (or true for all routes) in next.config.js. It is still experimental in Next.js 15 and must be explicitly opted into. Individual routes can then opt in with export const experimental_ppr = true when using incremental mode.
4 / 5
A developer wraps a data-fetching component in Suspense for PPR. The component calls cookies() from next/headers. How does PPR handle this?
When a component inside a Suspense boundary uses dynamic APIs like cookies(), headers(), or searchParams, Next.js automatically renders that boundary dynamically at request time. This is how PPR achieves automatic static/dynamic splitting — dynamic APIs are the signal that a subtree requires request-time rendering.
5 / 5
What is the primary advantage of PPR over traditional ISR (Incremental Static Regeneration)?
ISR revalidates entire pages on a time-based or on-demand basis — the whole page is either stale-static or freshly generated. PPR allows granular mixing within a single page: the static shell is always instantly served from cache while only specific Suspense islands are dynamic. This eliminates the ISR stale-window problem for personalized content.