---
title: "ISR (Incremental Static Regeneration)"
slug: "isr"
category: "glossary"
tags: ["glossary", "frontend", "rendering", "nextjs", "performance", "caching"]
status: "stable"
last_updated: 2026-05-14
summary: "ISR regenerates individual static pages in the background after a revalidation window expires, combining CDN-speed delivery with near-fresh data."
related:
  [
    "[[frontend/nextjs]]",
    "[[glossary/ssg]]",
    "[[glossary/ssr]]",
    "[[glossary/csr]]",
    "[[glossary/web-vitals]]",
    "[[glossary/hydration]]",
  ]
---

## Overview

This page is the atomic definition. Next.js data-fetching strategy guidance lives at [[frontend/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 [[glossary/ssg]] (build-time only, never stale during a build cycle) and [[glossary/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 [[glossary/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

- [[glossary/ssg]] - ISR extends SSG by adding background regeneration.
- [[glossary/ssr]] - renders on every request; use when staleness is unacceptable.
- [[glossary/csr]] - fetches data client-side; no server rendering at all.
- [[glossary/web-vitals]] - ISR preserves SSG's LCP advantage while reducing data staleness.
- [[frontend/nextjs]] - the only major framework with native ISR support.

## Citing this term

> See [[glossary/isr|ISR]] (llmbestpractices.com/glossary/isr).

## Related

- [[frontend/nextjs]]
- [[glossary/ssg]]
- [[glossary/ssr]]
- [[glossary/csr]]
- [[glossary/web-vitals]]
- [[glossary/hydration]]
