Static speed, fresh-enough data
Time-based revalidation is the App Router's flavor of Incremental Static Regeneration (ISR). Pages are pre-rendered and served from cache; after the revalidate interval, the next request triggers a background re-render. Users still get the cached version instantly — no "loading new content" spinner.
Two scopes
| Scope | Setting |
|---|---|
| Per fetch | fetch(url, { next: { revalidate: 60 } }) |
| Per route segment | export const revalidate = 60 at the top of the page or layout |
The lifecycle in one line
Fresh request → render → cache. Within revalidate window → serve cache. After window → serve stale, kick off background re-render. Next request → serve fresh.