browser() — rendu navigateur uniquement

React 🟡 Mid

Définition

Nouvelle API de react-dom dans React 19.3 (9 septembre 2026). Appelée via use(browser(reason)), elle fait suspendre le composant pendant le rendu serveur (le fallback Suspense part dans le HTML) et ne fait rien dans le navigateur. C'est la réponse officielle au problème des composants dépendant de window ou localStorage en SSR, sans hack typeof window ni useEffect de montage.

Analogie

Un panneau « ouverture à l'arrivée du personnel » : le serveur laisse la vitrine vide, le navigateur ouvre la boutique.

Exemple de code

'use client';
import { use, useState, Suspense } from 'react';
import { browser } from 'react-dom';

function SavedDraft() {
  use(browser('Le brouillon est dans localStorage.'));
  const [draft, setDraft] = useState(() => localStorage.getItem('draft') ?? '');
  return <textarea value={draft} onChange={e => setDraft(e.target.value)} />;
}

export default () => (
  <Suspense fallback={<p>Chargement du brouillon…</p>}>
    <SavedDraft />
  </Suspense>
);

Cas d'usage

Widgets fuseau horaire, thème stocké côté client, éditeurs riches non SSR-compatibles.

Anti-pattern

Appeler browser() sans use() ou sans frontière Suspense au-dessus : le rendu serveur échoue.
#ssr#react19#hooks

Fiche mise à jour le 2026-09-27

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