Qu’est-ce qu’Inertia.js ?
Vous voulez construire votre frontend avec React ou Vue, mais éviter d’avoir à concevoir, implémenter et maintenir une API séparée ? C’est précisément la contradiction que Inertia.js vient lever. Inertia est une « glue » (colle) qui conserve le routage et les contrôleurs côté serveur tels quels, tout en vous permettant d’écrire uniquement le frontend en React, Vue ou Svelte. Ce n’est pas un framework, mais une couche d’adaptateur qui relie Laravel et les frameworks JavaScript existants.La dernière version en date est Inertia v3 (sortie le 26 mars 2026). Les starter kits Laravel 13 (React, Vue, Svelte) sont déjà compatibles Inertia.
Différences avec les SPA/MPA classiques
| Architecture | Caractéristiques | Difficultés |
|---|---|---|
| MPA (application Blade classique) | Simple, bonne intégration avec Laravel | Rechargement complet à chaque navigation |
| SPA (API + frontend séparés) | Grande interactivité | Double maintenance : API, authentification, types |
| Inertia (monolithe moderne) | UX de SPA + simplicité côté serveur | Coût d’apprentissage spécifique |
Relation avec les starter kits Laravel
Lorsque vous créez un projet aveclaravel new et choisissez React, Vue ou Svelte, Inertia est configuré automatiquement.
inertiajs/inertia-laravel(adaptateur côté serveur)@inertiajs/react/@inertiajs/vue3/@inertiajs/svelte(adaptateurs côté client)- Middleware
HandleInertiaRequests - Écrans d’authentification (login, inscription, réinitialisation de mot de passe) déjà implémentés en composants Inertia
Les bases de Inertia::render()
Pour renvoyer une réponse Inertia depuis un contrôleur Laravel, utilisez Inertia::render(). Le premier argument est le nom du composant JavaScript, le second les données à passer en props.
'Posts/Index' correspond à un chemin de fichier. En React, ce sera resources/js/Pages/Posts/Index.jsx ; en Vue, resources/js/Pages/Posts/Index.vue.
Structure d’un composant de page
Les composants de page Inertia sont des composants Vue/React ordinaires. Les données passées depuis le contrôleur sont reçues comme props.React
Vue
<Link> déclenche la navigation en XHR, évitant le rechargement complet de la page. On l’écrit exactement comme une balise <a> classique, mais Inertia remplace uniquement le composant de page en coulisses.
Données partagées — middleware HandleInertiaRequests
Les données communes à toutes les pages (informations de l’utilisateur connecté, messages flash, etc.) se déclarent dans la méthode share() du middleware HandleInertiaRequests.
React
Les données partagées étant incluses dans chaque requête, il est recommandé de les limiter au strict nécessaire. Utilisez une évaluation paresseuse avec
fn() pour qu’elles ne soient calculées qu’à la demande.Envoi de formulaires et gestion des erreurs de validation
Le traitement des formulaires Inertia s’intègre naturellement à la validation Laravel. Le helperuseForm() simplifie la gestion d’état, l’envoi et l’affichage des erreurs.
Côté contrôleur
errors.
Côté frontend
React
Vue
useForm() conserve les données saisies tout en affichant les erreurs. L’utilisateur n’a pas à ressaisir le formulaire, ce qui améliore l’expérience.
Cas d’usage adaptés et inadaptés
Cas d’usage adaptés
- Équipe déjà à l’aise avec Laravel qui souhaite une UI type SPA
- Centraliser l’authentification, l’autorisation et la validation côté Laravel
- Applications où le SEO est secondaire : back-office, outils internes, etc.
- Projets voulant éviter le coût de conception et de gestion d’une API séparée
Cas d’usage moins adaptés
- Plusieurs clients externes (application mobile, etc.) qui partagent la même API
- Sites de contenu où le SEO est crucial (le SSR est possible mais plus complexe)
- Architectures micro-frontend, ou frontend développé par une équipe totalement indépendante
Principales évolutions d’Inertia v3
Inertia v3 est sorti le 26 mars 2026. Voici les principaux changements par rapport à v2.Abandon d’Axios — client XHR intégré et léger
En v3, Axios est abandonné au profit d’un client XHR intégré plus léger. La plupart des applications n’ont pas besoin de modifications. Les intercepteurs Axios se migrent directement vers les intercepteurs intégrés. Si vous souhaitez continuer à utiliser Axios, un adaptateur Axios est disponible.Simplification du SSR avec le plugin @inertiajs/vite
Le nouveau plugin Vite simplifie fortement la résolution automatique des composants de page et la configuration SSR. En développement, le SSR fonctionne simplement avec npm run dev, sans avoir à lancer un serveur Node séparé.
Hook useHttp — requêtes HTTP sans changement de page
Le hook useHttp permet d’envoyer des requêtes HTTP au serveur sans déclencher de visite Inertia. Pratique pour sauvegarder une modale ou déclencher un traitement en arrière-plan tout en restant sur la page courante.
Mises à jour optimistes de l’UI (Optimistic Updates)
Les mises à jour optimistes sont prises en charge au niveau deuseForm et du routeur. L’UI est mise à jour immédiatement sans attendre la réponse du serveur, avec rollback automatique en cas d’échec.
Layout Props
Le hookuseLayoutProps permet à un composant de page de transmettre des données à un layout persistant. Le contrôle de l’état de layout propre à une page, auparavant possible seulement via les données partagées ou les props de page, s’écrit désormais simplement.
Changement de prérequis
Les versions minimales sont relevées en v3.| Élément | v2 | v3 |
|---|---|---|
| PHP | 8.1+ | 8.2+ |
| Laravel | 10+ | 11+ |
| React | 18+ | 19+ |
| Svelte | 4+ | 5+ |
Suppression de Inertia::lazy()
Inertia::lazy(), déprécié en v2, est complètement supprimé en v3. Utilisez Inertia::optional() à la place.
Renommage d’événements
| v2 | v3 |
|---|---|
invalid | httpException |
exception | networkError |
Suppression de l’option future
Le bloc de configuration expérimental future de v2 est supprimé. Toutes ces options sont désormais activées par défaut. Retirez le bloc future de la configuration de createInertiaApp.
Pour la procédure détaillée de mise à niveau depuis v2, consultez le guide de mise à niveau officiel. La v2 recevra des corrections de bugs jusqu’au 26 septembre 2026 et des correctifs de sécurité jusqu’au 26 mars 2027.
Conclusion
Inertia.js répond au besoin très concret « conserver Laravel tel quel et écrire le frontend en React/Vue ». Son plus grand atout est la simplicité : pas d’API à concevoir, les données sont passées directement du contrôleur au composant. Le fait que les starter kits Laravel 13 supportent Inertia confirme sa place dans l’écosystème Laravel. Là où Livewire construit des UI dynamiques uniquement en PHP, Inertia permet de tirer parti de la puissance des frameworks JavaScript sans sacrifier la simplicité côté serveur. Le choix dépend des compétences de l’équipe et des besoins du projet, mais lorsqu’il s’agit de « créer des écrans en React en conservant les contrôleurs Laravel », Inertia est le choix le plus naturel.Documentation officielle Inertia.js
Retrouvez l’ensemble des fonctionnalités d’Inertia v3 dans la documentation officielle.