Maxpaths
Modes de RenduInteractif

SSR, SSG, ISR, CSR et Streaming comparés en temps réel

Visualisez les différences entre les 5 modes de rendering Next.js sur un scénario de page produit e-commerce. Observez comment chaque mode charge, affiche et rend interactive la même page.

Simulation pédagogique basée sur des données de référence

Les timings affichés illustrent les proportions relatives entre les modes de rendering, basés sur des benchmarks documentés (Vercel, Core Web Vitals). Les performances réelles varient selon l'infrastructure et la configuration.

Simulateur de Rendering

Comparez visuellement les 5 modes de rendering Next.js

Réseau
SSR
Requete
20ms - Requete envoyee au serveur
Serveur + Fetch
Serveur + Fetch
430ms - Execution du composant React + fetch des donnees
Transfert HTML
50ms - HTML complet envoye au navigateur
Parse + Paint
Parse + Paint
100ms - Le navigateur parse le HTML et affiche le contenu
Hydration
Hydration
150ms - React attache les event listeners au HTML existant
SSG
CDN
30ms - Le CDN sert le HTML pre-genere instantanement
Parse + Paint
50ms - Le navigateur parse et affiche le HTML
Hydration
Hydration
150ms - React hydrate le HTML statique
ISR
CDN (cache)
30ms - Le CDN sert la page cachee
Parse + Paint
50ms - Le navigateur parse et affiche le HTML
Hydration
Hydration
150ms - React hydrate le HTML cache
CSR
HTML minimal
20ms - Serveur envoie un HTML quasi-vide avec <div id="root">
JS Download
JS Download
300ms - Le navigateur telecharge le bundle JavaScript (~200KB)
JS Execute
JS Execute
200ms - Le navigateur parse et execute le JavaScript
Fetch API
Fetch API
400ms - React fait les appels API pour recuperer les donnees
Render final
50ms - React rend le composant avec les donnees
Streaming
Requete
20ms - Requete envoyee au serveur
Shell HTML
Shell HTML
80ms - Le serveur envoie immediatement le shell (header, nav, skeletons)
Parse shell
50ms - Le navigateur affiche le shell avec les placeholders
Chunk : Produit
Chunk : Produit
150ms - Les infos produit arrivent (fetch rapide ~150ms)
Chunk : Prix
Chunk : Prix
200ms - Prix et stock arrivent (fetch moyen ~200ms)
Chunk : Avis
Chunk : Avis
250ms - Les avis utilisateurs arrivent (fetch lent ~250ms)
Hydration
Hydration
100ms - Hydration selective de chaque chunk

Code Next.js de chaque mode

app/product/[id]/page.tsxtypescript
1// Server Component par defaut (pas de 'use client')
2// Execute sur le serveur A CHAQUE requete
3
4export default async function ProductPage({
5 params,
6}: {
7 params: { id: string };
8}) {
9 // fetch() sans cache = SSR dynamique
10 const product = await fetch(
11 `https://api.store.com/products/${params.id}`,
12 { cache: 'no-store' }
13 ).then(res => res.json());
14
15 const reviews = await fetch(
16 `https://api.store.com/reviews/${params.id}`,
17 { cache: 'no-store' }
18 ).then(res => res.json());
19
20 return (
21 <main>
22 <h1>{product.name}</h1>
23 <p>{product.price} EUR</p>
24 <p>Stock : {product.stock} unites</p>
25
26 <section>
27 <h2>{reviews.length} avis</h2>
28 {reviews.map(review => (
29 <ReviewCard key={review.id} review={review} />
30 ))}
31 </section>
32 </main>
33 );
34}
35
36// Le serveur attend TOUTES les donnees
37// avant d'envoyer le HTML complet au client.
38// TTFB eleve, mais SEO excellent.