RSC Payload (sérialisation serveur → client)
React 🔴 SeniorDéfinition
Format streamé que le serveur envoie au client pour décrire l'arbre rendu par les Server Components : HTML rendu, références aux Client Components à charger, props sérialisées et Promises encore en cours. Seules les valeurs sérialisables traversent la frontière : primitives, objets simples, Array/Map/Set/Date, Promises, éléments JSX et Server Functions. Fonctions ordinaires, instances de classes et symboles locaux sont refusés. 'use client' marque une frontière de module, pas de composant.
Analogie
Une notice de montage IKEA : le meuble (HTML) déjà assemblé, plus la liste des pièces à visser sur place (Client Components) et leurs vis (props).
Exemple de code
// Server Component
export default async function Page() {
const user = await db.users.get(1); // objet simple : OK
const postsPromise = db.posts.byUser(1); // Promise : OK, streamée
return (
<Profile
user={user}
posts={postsPromise}
onSave={saveProfile} // Server Function ('use server') : OK
// formatter={new Intl.DateTimeFormat()} ❌ instance de classe
/>
);
}
Cas d'usage
Comprendre pourquoi une prop « ne passe pas » à un Client Component, et pourquoi le code serveur (BDD, secrets) n'atteint jamais le navigateur.
Anti-pattern
Termes liés
Fiche mise à jour le 2026-09-27