cache() et cacheSignal

React 🔴 Senior

Définition

cache(fn) mémoïse une fonction pour la durée d'une requête serveur, uniquement dans les Server Components : deux composants qui appellent la même fonction avec les mêmes arguments partagent le résultat (dédoublonnage). Le cache est vidé à chaque requête. cacheSignal(), ajouté dans React 19.2 (1er octobre 2025), fournit un AbortSignal qui se déclenche quand la durée de vie du cache se termine, pour annuler les travaux inutiles.

Analogie

Une commande groupée au restaurant : plusieurs convives demandent le même plat, la cuisine ne le prépare qu'une fois pour ce service.

Exemple de code

// lib/data.js — définir UNE fois dans un module partagé
import { cache, cacheSignal } from 'react';

export const getUser = cache(async (id) => {
  const res = await fetch(`/api/users/${id}`, { signal: cacheSignal() });
  return res.json();
});

// Deux Server Components, un seul appel réseau par requête
async function Header({ id }) { const u = await getUser(id); /* ... */ }
async function Sidebar({ id }) { const u = await getUser(id); /* ... */ }

Cas d'usage

Éviter les requêtes BDD dupliquées quand plusieurs Server Components d'une même page ont besoin de la même donnée.

Anti-pattern

Appeler cache(fn) dans le composant (nouveau cache à chaque rendu) ou l'utiliser dans un Client Component (non supporté) ; ne pas confondre avec le 'use cache' persistant de Next.js.
#rsc#react19#performance

Fiche mise à jour le 2026-09-27

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