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 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.
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 cacheHIT
ratio. With onlycache-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 300 ms
- 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.