prerender() / resume() (react-dom/static)

React 🔴 Senior

Définition

prerender() (React 19, 5 décembre 2024) génère du HTML statique en attendant la résolution de toutes les frontières Suspense, et retourne { prélude, postponed }. Depuis React 19.2 (1er octobre 2025), résume() reprend un pré-rendu interrompu (via AbortSignal) pour terminer le rendu à la requête, et resumeAndPrerender() reprend vers du statique : c'est la brique React du Partial Prerendering. Ces API fonctionnent en Web Streams, y compris sous Node.js depuis 19.2.

Analogie

Une pâte à pizza précuite : la base est prête à l'avance, on n'ajoute la garniture fraîche qu'à la commande.

Exemple de code

import { prerender } from 'react-dom/static';
import { resume } from 'react-dom/server';

// Au build : coquille statique, arrêt après 10 s
const ctrl = new AbortController();
setTimeout(() => ctrl.abort(), 10_000);
const { prelude, postponed } = await prerender(<App />, {
  signal: ctrl.signal, bootstrapScripts: ['/main.js'],
});
await saveToCDN(prelude, postponed);

// À la requête : on reprend là où le pré-rendu s'est arrêté
const stream = await resume(<App />, postponed);

Cas d'usage

SSG classique (prerender seul) ou PPR maison hors Next.js ; comprendre ce que Next.js Cache Components fait sous le capot.

Anti-pattern

Utiliser renderToString pour du statique : il n'attend pas Suspense et ne produit pas de postponed.
#ssr#react19#rendering

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre