React 19 est sorti stable en décembre 2024. Un an et demi plus tard, qu'est-ce qu'on en pense en agence après 5 projets clients migrés ? Server Components, Actions, hooks `use()`, optimizations automatiques : il y a du génie et il y a des frottements. Cet article fait le bilan honnête, sans hype et sans bashing, après 1 an et demi d'usage en production sur des projets PME et SaaS.
01Server Components : la feature qui change tout (ou presque)
Les Server Components sont, sans exagération, la feature React la plus impactante depuis l'introduction des hooks en 2018. Sur nos projets, on observe : -30 à -60% de JS bundle envoyé au client (selon le pourcentage de composants qu'on peut basculer en RSC), Lighthouse 95+ accessible par défaut, possibilité d'utiliser Prisma / fetch / fs directement dans les composants sans backend séparé. Le mental model demande un ajustement : par défaut tout est Server Component, on opt-in avec `"use client"` quand on a besoin d'interactivité, d'état, ou d'effets. Voir [notre article dédié](/blog/react-19-server-components-pratique).
02Actions + useFormState : adieu les API routes pour 80% des cas
Les Server Actions (`"use server"`) couplées au hook `useFormState` éliminent une grosse partie du code boilerplate API + fetch + state management côté client. Pour les formulaires CRUD typiques (contact form, signup, update profile), on passe de ~80 lignes de code à ~30. Trade-off : c'est lié au framework (Next.js), pas portable, et le debug est plus complexe car le code s'exécute côté serveur sans logs JS classique. Notre règle : Actions pour les workflows simples form-driven, API routes classiques quand on a besoin d'un endpoint public ou consommé par mobile/external.
03Suspense : enfin mature pour le streaming
Suspense existait depuis React 16 mais n'était vraiment utilisable que depuis 18+ pour le streaming SSR. En React 19, c'est polished : on peut wrap n'importe quel composant async dans `<Suspense fallback={<Skeleton />}>` et le contenu se révèle progressivement. Combiné avec les RSC, ça permet de servir le shell de page (header, nav, sidebar) instantanément, puis de stream le contenu lourd (dashboards, listes paginées) à mesure qu'il arrive. Sur un SaaS B2B qu'on a migré, le LCP est passé de 2.8s à 1.1s grâce à Suspense streaming.
04useOptimistic + form transitions : UX premium accessible
Le hook `useOptimistic` permet de simuler instantanément la réponse serveur (optimistic update) et de gérer le rollback proprement si l'opération échoue. Combiné avec `useTransition` pour les loading states, on obtient une UX premium type Linear/Notion sans bibliothèque tierce (vs SWR mutation ou TanStack Query optimistic). Cas d'usage typique : like button, ajout au panier, toggle d'état. Avant React 19, ça demandait 30-50 lignes de gestion d'état manuelle ; maintenant 10 lignes.
05Les frictions : debug RSC + écosystème qui rattrape
Tout n'est pas rose. (1) Le debug des Server Components est plus dur : pas de DevTools React côté serveur, console.log dans le terminal Next.js, pas dans le browser. Demande une discipline particulière. (2) L'écosystème React (libraries tierces) met du temps à supporter RSC. Beaucoup de bibliothèques (charts, animations, formulaires complexes) sont encore Client-Component-only. (3) Le tooling TypeScript autour des Server Actions a quelques rough edges (types des arguments / retour à expliciter manuellement). (4) Les patterns émergents (data fetching, mutations, caching) ne sont pas encore standardisés — chaque projet réinvente un peu sa stack.
06Migration depuis React 18 : combien ça coûte ?
Pour un projet existant React 18 + Next.js Pages Router, la migration vers React 19 + App Router est un chantier sérieux. Notre expérience sur 3 migrations clients : 4-8 semaines selon la taille du projet, refactor de 30-60% du code (composants en Server Components, hooks adaptés, fetch patterns réécrits). Pour les projets neufs : démarrer directement en RSC, plus rapide qu'avant. Conseil agence : ne pas migrer pour migrer. Un projet React 18 + Pages Router qui marche bien peut rester dessus. La migration se justifie quand on veut profiter spécifiquement de RSC, Streaming, ou Actions.
07Verdict après 1 an et demi
React 19 est, à notre avis, la version la plus importante depuis 16.8 (introduction des hooks). Les Server Components changent la façon dont on architecture les apps. Pour un projet neuf en 2026 : démarrer directement React 19 + Next.js App Router est le choix par défaut. Pour les projets existants en bonne santé : pas urgent, migrer quand le besoin se présente. Toutes nos nouvelles missions clientes Krealabs depuis mi-2025 sont en React 19 — pas un seul retour en arrière, et les Lighthouse parlent d'eux-mêmes (95+ sur 90% des pages).
React 19 tient ses promesses. Pas une révolution sans bug ni courbe d'apprentissage, mais un saut qualitatif qui réduit drastiquement le bundle, améliore l'UX (streaming, optimistic) et simplifie le code (Actions). Pour un nouveau projet : foncez. Pour une migration : pas urgent mais à planifier dans les 12 prochains mois. Voir aussi notre stack Next.js, nos services développement web custom, et notre comparateur Next.js vs WordPress pour cadrer le bon choix. Pour discuter de votre projet en React 19, prenez RDV avec nous.
Écrit par
Maxime Dubois
Fondateur · Krealabs
Découvrir l'équipe


