Overview
This page is the atomic definition. Next.js data-fetching strategy guidance lives at nextjs.
Definition
Incremental Static Regeneration (ISR) is a Next.js feature that lets a statically generated page declare a revalidate interval in seconds. When the interval elapses and a new request arrives, Next.js serves the existing cached HTML immediately (stale-while-revalidate), then triggers a background rebuild of just that page. The next request gets the refreshed HTML. ISR splits the difference between ssg (build-time only, never stale during a build cycle) and ssr (always fresh, always server-computed). Because only the visited pages regenerate, a 50,000-page site can deploy in seconds; rarely-visited pages regenerate lazily. ISR requires a Node.js server or a platform that supports it (Vercel, self-hosted Next.js). It does not work with purely static exports (next export). On-demand ISR, available since Next.js 12.2, lets you trigger regeneration via an API route rather than waiting for the time window.
When it applies
Use ISR for product catalog pages, blog posts, and public content that changes a few times per day and can tolerate staleness of seconds to minutes. Use ssr when data must be fresh on every single request (user-specific data, live inventory).
Example
A news article sets revalidate: 60. The page serves from CDN for up to 60 seconds. After a minute, the next visitor gets the cached version while Next.js fetches a fresh version in the background. The following visitor sees the updated article.
Related concepts
- ssg - ISR extends SSG by adding background regeneration.
- ssr - renders on every request; use when staleness is unacceptable.
- csr - fetches data client-side; no server rendering at all.
- web-vitals - ISR preserves SSG’s LCP advantage while reducing data staleness.
- nextjs - the only major framework with native ISR support.
Citing this term
See ISR (llmbestpractices.com/glossary/isr).