Incremental Static Regeneration (ISR)
Popularized by Vercel / Next.js
js, that lets individual statically generated pages be regenerated in the background after deployment, without rebuilding the entire site.
Definition
Incremental Static Regeneration (ISR) is a rendering technique, popularized by Next.js, that lets individual statically generated pages be regenerated in the background after deployment, without rebuilding the entire site.
Overview
ISR addresses the central trade-off of Static Site Generation (SSG): fully static pages are fast and cheap, but updating their content normally requires rebuilding the whole site. ISR lets a developer specify a revalidation interval (or trigger it on demand) for a given page; the first request after that interval still serves the existing cached static HTML instantly, while the server regenerates a fresh version in the background and swaps it in for subsequent requests. This gives teams much of SSG's performance and cost profile — pages are served from a cache or CDN most of the time — while approaching the freshness of Server-Side Rendering (SSR) for content that changes periodically, such as product pages with updated pricing or inventory, or news articles that get occasional edits after publishing. ISR is most associated with Next.js, which introduced the pattern and popularized the term, though similar background-regeneration concepts have since appeared in other meta-frameworks under different names. It is particularly valuable for sites with too many pages to rebuild quickly on every content change (e.g., e-commerce catalogs with thousands of products).
Key Concepts
- Individual pages regenerate on a time interval or on-demand trigger
- Stale content is served instantly while fresh content regenerates in the background
- Avoids full-site rebuilds for large sites with frequent, isolated content changes
- Combines SSG's performance with closer-to-real-time content freshness
- Popularized by and most closely associated with Next.js
Use Cases
Frequently Asked Questions
From the Blog
Why dbt incremental models lose rows, and how to prove yours does not
Missing rows in a dbt incremental model nearly always trace to two things: an is_incremental filter on an event timestamp that arrives late, and a unique key that is not actually unique. Add a lookback window, choose merge or insert-overwrite deliberately, and reconcile against a periodic full refresh.
Read More ProgrammingTypeScript for Beginners: JavaScript with a Safety Net
TypeScript adds optional static types to JavaScript, catching bugs before your code runs. This guide explains types, interfaces, generics, and the compile step clearly — with practical examples that show exactly why TypeScript makes large codebases easier to maintain.
Read More AI & TechnologyDiffusion Models: How AI Generates Images
Diffusion models generate images by learning to reverse a step-by-step noising process, turning random static into a picture. Here is how that works.
Read More ProgrammingTypeScript for Beginners: Why and How
TypeScript adds static types to JavaScript so errors surface while you code, not in production. Learn why teams adopt it and how to start using it today.
Read More