L'ISR (Incremental Static Regeneration) est une fonctionnalité signature de Next.js qui combine le meilleur du SSG (pages statiques servies depuis le CDN, performance maximale) et du SSR (contenu à jour). Concrètement : la première requête sert la page pré-générée au build, et après un délai paramétrable (`revalidate: 3600` par exemple), la prochaine requête déclenche une régénération en arrière-plan. Les utilisateurs suivants reçoivent la nouvelle version. Aucun rebuild complet du site n'est nécessaire.
Le cas d'usage type : un site e-commerce avec 5 000 fiches produit dont les prix bougent quelques fois par jour. En SSG pur, il faudrait redéployer 5 000 pages à chaque update — impossible. En SSR pur, chaque visiteur paye le coût CPU et le LCP en souffre. En ISR, vous servez du statique ultra-rapide avec une fraîcheur acceptable (1 h, 10 min, ce que vous voulez). Idem pour un blog actu, une marketplace, un media SEO programmatique. C'est ce qui permet à des sites comme TikTok, Hulu ou Notion de tourner sur Next.js à grande échelle.
Next.js App Router (depuis la v13) a généralisé le concept avec `revalidate` et `revalidateTag` — on peut désormais invalider une page précise quand le CMS headless la modifie, via webhook. C'est la combinaison qu'on déploie sur la majorité de nos sites sur-mesure avec Sanity ou Strapi : éditeur publie → webhook Vercel → page régénérée en 2-3 s, partout dans le monde. Performance d'un site statique, fraîcheur d'un site dynamique.
ISR en pratique : les cas où ça change tout
- E-commerce : catalogues de 1 000 à 100 000 SKU avec prix qui bougent quotidiennement.
- Media / blog : actualité publiée par l'équipe contenu, en ligne en 30 s sans attendre un build.
- SEO programmatique : 50 000 pages de longue traîne mises à jour par lot via webhook CMS headless.
- Sites multi-langues : régénération sélective des traductions au fil de l'eau, sans rebuild global.
