Skip to content

Partial Prerendering (experimental)

Partial Prerendering is an experimental feature and subject to change.

Partial Prerendering is an experimental feature that allows static portions of a route to be prerendered and served from the cache with dynamic holes streamed in, all in a single HTTP request.

Incremental support is available in Next.js 15, allowing you to opt-in to Partial Prerendering for specific routes and layouts.

To enable Partial Prerendering, set the experimental ppr flag to incremental:

next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
  experimental: {
    ppr: 'incremental',
  },
}
 
module.exports = nextConfig

Options

  • incremental: Allows you to incrementally opt-in layouts and pages, and should be used with the experimental_ppr route config option.
  • true: Enables Partial Prerendering for all routes in your application.

We recommend using incremental first. Once all the routes in your application have PPR enabled, it’ll be considered safe for you to set the ppr value to true, and enable it for the entire app and all future routes.

Good to know:

  • When using incremental, routes that don't have experimental_ppr will default to false and will not be prerendered using Partial Prerendering. You need to explicitly opt-in to Partial Prerendering for each route.
  • Partial Prerendering does not yet apply to client-side navigations. We are actively working on this.
  • Partial Prerendering is designed for the Node.js runtime only. Using the Edge Runtime is not needed when you can instantly serve the static shell.

Learn more about Partial Prerendering in the Next.js Learn course.