Qu’est-ce que React ?
React est une bibliothèque JavaScript développée et maintenue par Meta (ex-Facebook) pour construire des interfaces utilisateur. Elle se caractérise par une écriture d’UI déclarative et une architecture basée sur des composants, utilisée aussi bien pour de petits widgets que pour des SPA complètes. Le cœur de React est le rendu efficace via un DOM virtuel. Quand l’état (state) change, React applique uniquement le diff au DOM, sans que vous manipuliez le DOM manuellement.Cette page traite de React 19 combiné à Inertia v3. Les starter kits Laravel 13 utilisent cette configuration par défaut.
JSX et TSX
Les composants React s’écrivent en JSX (JavaScript XML), une syntaxe proche du HTML directement intégrée à JavaScript..tsx) par défaut. Les définitions de types renforcent la complétion IDE et permettent de détecter les bugs plus tôt.
Place de React dans Laravel
Historique
React est arrivé un peu plus tard que Vue dans l’histoire de Laravel, mais il est aujourd’hui à parité ou davantage. Avec Laravel 6 (2019), le scaffold d’authentification est extrait dans le packagelaravel/ui et une version React est proposée en même temps que Vue. À l’époque, Vue reste dominant et React est en retrait.
Avec Laravel Breeze (2021), la stack Inertia + React est ajoutée, ce qui marque le vrai début de son adoption. La refonte des starter kits de Laravel 12 (2025) met React totalement à égalité avec Vue (voire en tête dans l’affichage).
Style dominant actuel : Inertia × React
Aujourd’hui, l’usage principal de React avec Laravel se fait via Inertia × React. Inertia réalise une architecture « monolithe moderne » où l’on passe directement des données du contrôleur Laravel à un composant React, sans concevoir d’API.Mise en place
Via un starter kit (recommandé)
Pour un nouveau projet, le plus simple est de partir d’un starter kit.inertiajs/inertia-laravel(adaptateur serveur)@inertiajs/react(adaptateur client)react+react-dom(React 19)@vitejs/plugin-react(plugin Vite)- TypeScript +
@types/react - Tailwind CSS + shadcn/ui
- Middleware
HandleInertiaRequests - Écrans d’authentification (login, register, etc.) déjà implémentés en Inertia + React + TypeScript
Installation manuelle
Pour un projet existant, installez côté serveur et côté client séparément.vite.config.ts.
resources/js/app.tsx.
Pour les détails d’une installation manuelle (template racine, enregistrement du middleware, etc.), consultez la documentation officielle Inertia.
Structure des répertoires
Dans le starter kit, les composants de page React se trouvent dansresources/js/pages/.
Inertia::render('posts/index', [...]) correspond au composant resources/js/pages/posts/index.tsx.
Bases de la syntaxe JSX
React utilise JSX : une syntaxe façon HTML au sein de JavaScript. Voici les patrons minimaux à connaître pour lire le code des starter kits.{} — interpolation de variable
Dans JSX, {} permet d’injecter une valeur ou une expression JavaScript.
Branchement — && et opérateur ternaire
React n’a pas d’équivalent de v-if. Pour un simple test, utilisez &&. Pour un if/else, l’opérateur ternaire ? :.
Rendu de liste — .map()
Utilisez Array.map() pour rendre une liste. Précisez toujours la prop key pour un diff efficace.
v-for :key de Vue et du {#each} de Svelte.
className — nom de classe CSS
JSX étant compilé en JavaScript, class est un mot-clé réservé. Pour les classes CSS, utilisez className.
Handlers d’événements — camelCase
Les attributs d’événements JSX sont en camelCase et reçoivent une référence de fonction.Composant de page — bases
Un composant de page Inertia est un composant React classique. Les données passées depuis le contrôleur Laravel arrivent en props.Contrôleur
Composant de page React
Composant Link
Le composant <Link> fourni par @inertiajs/react déclenche la navigation en XHR, évitant le rechargement complet du navigateur.
<a> classique, mais Inertia remplace uniquement le composant de page, offrant une expérience de type SPA.
Composant Form
Le composant <Form> de @inertiajs/react est le style recommandé d’envoi de formulaire utilisé dans les écrans d’authentification des starter kits. On passe action et method en props et on récupère errors et processing via une fonction children (render prop).
Utilisation de base
<Form> est une fonction ({ errors, processing }) => JSX (render prop). Le composant Form calcule et injecte ces valeurs. Les champs utilisent l’attribut natif name plutôt qu’un onChange, ce qui active la collecte standard des données de formulaire par le navigateur.
Patron des starter kits
Les starter kits utilisent Wayfinder pour gérer les routes en tant qu’objets.store.form() renvoie un objet contenant action et method que l’on spread dans <Form>.
resetOnSuccess sont automatiquement réinitialisés après un envoi réussi. Utilisez-le pour les champs comme le mot de passe qu’il faut vider.
Sans Wayfinder, passer directement une URL (
action="/login") fonctionne de la même façon.Hook useForm
Pour la gestion de formulaire, utilisez le hook useForm de @inertiajs/react. Il simplifie la gestion d’état, l’envoi et l’affichage des erreurs de validation.
Côté contrôleur
Composant de formulaire React
useForm.
En cas d’erreur de validation,
useForm conserve les valeurs saisies tout en affichant les erreurs.
Données partagées (Shared Data)
Les données communes à toutes les pages (utilisateur connecté, messages flash) sont déclarées dans la méthodeshare() du middleware HandleInertiaRequests.
usePage().
Ces données étant présentes à chaque requête, limitez-les au strict nécessaire. Une évaluation paresseuse avec
fn() ne les calcule qu’en cas d’accès effectif.Bases des hooks React
Voici les hooks essentiels pour développer avec Inertia × React.useState — état local
useEffect — effets de bord
useMemo et useCallback — optimisation de performance
Support TypeScript
Le starter kit React utilise TypeScript par défaut. Combiné aux types Inertia, il assure la sûreté des props.Types globaux
Le starter kit définit le type des données partagées dansresources/js/types/index.d.ts.
Utilisation du type dans un composant de page
Conclusion
React s’exprime particulièrement bien avec Laravel dans un « monolithe moderne » via Inertia. La bonne intégration avec TypeScript le rend adapté aux applications de grande taille.
Utiliser Inertia × React combine la simplicité du backend Laravel à la puissance de l’écosystème React. En partant du starter kit, vous pouvez démarrer le développement immédiatement, écrans d’authentification inclus.
Documentation officielle Inertia.js
Retrouvez toutes les fonctionnalités d’Inertia v3 dans la documentation officielle.