Skip to content
Last updated on February 6, 2023
3 min read

Incremental Static Regeneration (ISR) allows you to create or update content without redeploying your site. ISR has three main benefits for developers: better performance, improved security, and faster build times.

  • Better Performance: Static pages can be consistently fast by caching generated pages in every region on Vercel's Edge Network and persisting files into durable storage
  • Improved Security: ISR Render Functions are used to generate pages and do not have access to the incoming request, which prevents accidental caching of user data for increased security
  • Faster Builds: Pages can defer generation on request or through an API instead of during the build, helping keep build times fast as your application grows

When you deploy a Next.js application (or a custom solution with the Build Output API), you can define an ISR Render Function (either Serverless or Edge) which is able to create or update a static page.

Next.js will automatically create an ISR Render Function on Vercel when you use getStaticProps with revalidate. When using the Build Output API, this is called a Prerender Function. These functions do not have access to the incoming request, which prevents accidental caching of user data for increased security.

Note: This function incurs usage when it is invoked as well as for the bandwidth used. Explore your usage top paths to better under ISR usage.

Both ISR and Cache-Control headers (including s-maxage and stale-with-error) help reduce backend load by making fewer requests to your data source. However, there are key architectural differences between the two.

  • Shared Global Cache: The cache for the ISR Render Function output is distributed globally. In the case of a cache MISS, it looks up the value in a single, global bucket. This means ISR has “cache shielding” built-in automatically, which helps improve the cache HIT ratio. With only cache-control headers, caches expire (by design) and are not shared across regions
  • 300ms Global Purges: When a regeneration is triggered (either on-demand or in the background), the ISR Render Function is re-run, and all regions globally are brought up to date with the newest content within 300ms
  • Instant Rollbacks: ISR will persist your generated pages between deployments. This means you are able to roll back instantly and not lose your previously generated pages

ISR abstracts common issues with HTTP-based caching implementations, adds additional features for availability and global performance, and provides a better developer experience for implementation.

Incremental Static Regeneration QuickstartGet started using ISR on Vercel with Next.js or the Build Output API.