ISR — statically generated page обновляется в фоне после deploy без rebuild: stale-while-revalidate, первый visitor после expiry триггерит regeneration, текущий получает stale мгновенно.
Разбор
SSG — CDN-speed, но data frozen на build. SSR — fresh data, render каждый request. ISR — middle path: build once, serve stale, regenerate lazily.
Каждый route — cached document с expiry. До expiry — cache hit. После — первый request всё ещё stale copy сразу, Next kick off background re-render; следующий visitor — fresh cache.
В App Router ISR — не отдельная фича, а Full Route Cache + revalidate timer + on-demand revalidateTag/revalidatePath.
Что сказать
ISR = stale-while-revalidate для целых страниц. Trade-off: bounded staleness vs near-zero latency и server cost. Вопрос: «насколько stale ок» и «нужна ли on-demand invalidation».
Итог
ISR — кэшированный HTML/RSC с таймером и фоновым обновлением; пользователь, тригнувший revalidate, stale не ждёт.