Next.js ISR (Incremental Static Regeneration) in 2026: App Router + Pages Router Guide
Fresh content matters. Incremental Static Regeneration lets you update static pages without rebuilding your entire Next.js application. It combines the performance of static delivery with controlled content freshness and is widely used for content-driven and ecommerce platforms.

What is Incremental Static Regeneration (ISR) in Next.js?
Incremental Static Regeneration is a Next.js rendering and caching model rooted in the Jamstack approach, where pages are served statically and regenerated in the background when content becomes stale.
Use ISR when performance, SEO, and controlled content freshness matter, and when you want to avoid full rebuilds. It builds on core Next.js benefits such as static delivery, scalable caching, and predictable rendering for content-driven and ecommerce platforms.
When Should You Use ISR vs SSG vs SSR in Next.js?
Static Site Generation (SSG)
Pages are generated at build time and served as static assets. Updates require a full rebuild and redeploy. Best suited for content that rarely changes.
Server-Side Rendering (SSR)
Pages are rendered on every request. Content is always fresh but response times and infrastructure costs are higher. Used for highly dynamic or personalized pages.
Incremental Static Regeneration (ISR)
Pages are served from cache as static files and regenerated in the background when stale. Updates do not require rebuilding the entire application. Suitable for content that changes regularly but does not require per-request rendering.

Planning a scalable Next.js architecture?
We help teams select the right rendering model, define caching and revalidation strategies, and estimate effort upfront to avoid performance, SEO, and content workflow issues later.
How Does Next.js ISR Work Step by Step?
Incremental Static Regeneration follows a stale-while-revalidate flow: Next.js serves cached content first, then regenerates in the background when the cache is stale.
1. A page is generated and cached
The first version is produced during build or on first request, depending on the route and data strategy, and then stored as the cached response.
2. Requests are served from cache
Users get the cached HTML immediately, with static delivery characteristics.
3. The cache becomes stale
Staleness is triggered by either:
a time-based revalidation interval, or
an on-demand invalidation signal (path or tag).
4. The next request receives the stale cached response
Next.js continues to serve the cached version to keep latency stable.
5. Regeneration starts in the background
In parallel, Next.js regenerates the page or the cached data and prepares an updated version without blocking the user response.
6. Cache is updated and subsequent requests get the new version
Once regeneration succeeds, the cache is updated and future requests receive the refreshed output.

Default caching behavior (source: nextjs.org)
How is ISR implemented in the Next.js App Router?
In the App Router, ISR is implemented through data fetching and caching configuration rather than page-level lifecycle functions. This approach provides finer control over caching and revalidation and aligns with how modern Next.js applications manage data and rendering.
How does time-based revalidation work in the App Router?
Time-based revalidation defines how long cached data remains fresh.
Data is cached and reused across requests. After the specified interval, the cache becomes stale. The next request is served from cache, while regeneration happens in the background.
This approach works well for content that changes on a predictable schedule, such as blog posts, documentation, marketing pages, and ecommerce product or category pages built with Next.js.
How does on-demand revalidation work in the App Router?
On-demand revalidation invalidates cached output explicitly.
In the App Router, this is handled using:
revalidatePath to invalidate a specific route
revalidateTag to invalidate all cached data associated with a tag
Tag-based revalidation is typically used in larger applications, where content updates need to affect multiple pages without tracking individual URLs. This pattern is common in headless CMS setups and ecommerce platforms such as Shopify-based storefronts built with Next.js.
Nerdy Banana’s manual order processing hindered their efficiency and customer experience. Happily, we helped them increase conversion rates, delivery times, and sales.
3x
Quicker delivery times
95%
Production lead time saved
98%
Faster file preparation time

How Does ISR Work in the Pages Router?
Incremental Static Regeneration is available in the Pages Router and continues to be supported in existing Next.js projects. It relies on page-level data fetching during build and serves statically generated pages that are refreshed when revalidation is triggered.
Time-based revalidation with getStaticProps
Time-based revalidation is configured using getStaticProps and the revalidate property.
A page is generated at build time and served as a static asset. After the revalidation interval expires, the next request triggers background regeneration while the cached version continues to be served.
This approach is commonly used in Pages Router projects with editorial content, marketing pages, or product listings that do not require request-level personalization.
On-demand revalidation with res.revalidate
On-demand revalidation allows cached pages to be regenerated explicitly.
This is handled through API routes using res.revalidate(). External systems such as headless CMS platforms or ecommerce backends can trigger revalidation when content changes.
This pattern is often used to refresh product pages, category pages, or landing pages without rebuilding the entire application.

Planning the next phase of your Next.js platform?
Get expert input on rendering strategy, caching and revalidation, and migration planning to avoid performance and content issues as your platform scales.
How to Choose Revalidation Times in Next.js
Revalidation intervals should reflect how often content changes and how critical freshness is to users and the business.
Short intervals reduce the risk of stale content but increase regeneration frequency. Longer intervals reduce regeneration cost but delay updates. In practice, time-based revalidation is often combined with on-demand invalidation.
Practical revalidation intervals for typical page types
Editorial content and blogsLonger intervals are usually sufficient, as content changes infrequently after publication.
Marketing and campaign pagesModerate intervals work well, often combined with on-demand revalidation when content is updated.
Ecommerce product and category pagesShort intervals or on-demand revalidation are commonly used for pricing, availability, and promotion changes.
High-traffic landing pagesConservative intervals help maintain performance during traffic spikes, with explicit revalidation for critical updates.
Revalidation decisions should balance how fresh content needs to be with performance impact and operational cost.
n8n sought a scalable web solution for automated API-rich content creation in huge page volumes. The rapid website we created boosted their visibility and product usage while saving tons of time.
5/5
Clutch review
300k
API-driven dynamic pages generated
900%
More Top 10 keywords in 1 year

Why ISR “Works in Dev” But Fails in Production
Incremental Static Regeneration works reliably when its constraints are understood upfront. Problems usually appear when assumptions made during development no longer hold in production.
Static export limitations
ISR often looks correct during development, but issues surface after deployment when static export is enabled. In this setup, pages are generated once and shipped as static files. Without a runtime to handle regeneration, updates never occur. This typically becomes visible only when content changes fail to appear after launch.
Runtime considerations
Revalidation depends on a runtime capable of executing background work. When an incompatible or overly restricted runtime is selected, regeneration requests may succeed silently without updating cached output. These failures are easy to miss unless revalidation behavior is explicitly tested in production-like conditions.
Cache consistency across regions
In globally distributed environments, regeneration does not happen everywhere at the same moment. Some users may briefly receive updated content while others see an older version. This is expected behavior, but it can be misinterpreted as a caching error if regional propagation is not accounted for during planning.
Most ISR-related issues are not caused by incorrect code, but by mismatches between rendering strategy, runtime capabilities, and deployment architecture. Addressing these constraints early prevents difficult-to-debug behavior later.
How Does ISR Work with Headless CMS Webhooks?
Incremental Static Regeneration is commonly paired with headless CMS platforms to support frequent content updates without rebuilding the entire application.
In this pattern, content is managed in a headless CMS and delivered to a Next.js application as statically cached pages. When content is published or updated, the CMS triggers a webhook that initiates on-demand revalidation. This approach works across different CMS options used with Next.js and React-based platforms.
Webhooks typically invalidate cached content by path or tag, so only affected pages are regenerated. Updates remain fast and predictable, even on large sites with thousands of pages. This setup lets content teams publish changes independently while engineering teams retain control over performance, caching, and operational stability.
Next.js ISR in Practice
Incremental Static Regeneration is a core part of how modern Next.js applications balance performance, scalability, and content freshness. Cached pages serve users immediately, while background regeneration updates content without the operational cost of full rebuilds or per-request rendering.
Effective use of ISR depends on clear decisions around rendering strategy, revalidation timing, runtime setup, and content workflows. App Router–based ISR, on-demand revalidation, and CMS webhooks make it possible to scale content and traffic with predictable performance.
If you are planning a new Next.js build, evolving an existing platform, or revisiting rendering and caching decisions, write to us to discuss the right approach and define revalidation patterns that support performance and content operations.
FAQ
ISR Explained
ISR is a caching and regeneration model that serves a cached static response first. When the cached version becomes stale (time-based or on-demand), the next request still receives the cached response, and Next.js regenerates the page or data in the background. Subsequent requests receive the updated version.
SSG: content rarely changes and rebuilds are acceptable.
ISR: content changes regularly, performance and SEO matter, and you want updates without full rebuilds.
SSR: content is request-specific (personalization, auth-gated data, per-request pricing) and must be computed on every request.
Use fetch(..., { next: { revalidate: <seconds> } }) for time-based revalidation of cached data. This sets a revalidation window in seconds for that request’s cached result.
App Router: call revalidatePath() to invalidate a route, or revalidateTag() to invalidate all cached entries associated with a tag. These calls must run server-side (Server Actions or Route Handlers).
Pages Router: expose an API route and call res.revalidate('/path') when a trusted trigger fires (for example, a CMS webhook).
revalidatePath: invalidates a specific page or layout path.
revalidateTag: marks all cached data with a given tag as stale across all routes that use it.
Use revalidateTag when one content change affects multiple pages (for example, a product used on listings and recommendations).
Yes. A common pattern is CMS publish event → webhook → Next.js Route Handler/API route → revalidateTag or revalidatePath (App Router) or res.revalidate (Pages Router).
Static export (output: export): ISR is not supported.
Runtime: ISR requires a runtime that can execute regeneration and maintain cache behavior. In Pages Router, the official ISR guide states ISR is supported only with the Node.js runtime (default).
Caching consistency: invalidation and regeneration can be traffic-driven and distributed, so updates may not appear everywhere at the exact same moment in multi-region setups.
For editorial sites, media platforms, and content-heavy company blogs, longer revalidation intervals are usually sufficient, combined with on-demand revalidation when content is published or updated.
For ecommerce, retail, and marketplace platforms, on-demand revalidation is commonly used for pricing, availability, and promotional changes, with a short time-based interval as a fallback.
For real estate, fintech, and SaaS platforms, revalidation strategies often vary by page type, with static marketing content regenerated infrequently and business-critical data refreshed on demand.
Scaling a content or commerce platform?
Discuss your Next.js architecture with us and get clear guidance on rendering and caching decisions that affect performance and long-term maintainability.



