Wat is Inertia.js?
Je wilt de frontend bouwen met React of Vue, maar je wilt niet apart een API ontwerpen, implementeren en beheren — dat dilemma lost Inertia.js op. Inertia is de “lijm” die het mogelijk maakt om alleen de frontend in React, Vue of Svelte te schrijven, terwijl de serverside routing en controllers intact blijven. Het is geen framework, maar functioneert als een adapterlaag die je bestaande Laravel-app verbindt met een JavaScript-framework.De nieuwste versie is momenteel Inertia v3 (uitgebracht op 26 maart 2026). De starter kits van Laravel 13 (React, Vue en Svelte) zijn al voorbereid op Inertia.
Het verschil met een klassieke SPA en MPA
Met Inertia geef je data rechtstreeks vanuit je Laravel-controllers door aan Vue- of React-componenten. Je hoeft geen REST API te definiëren, en paginawissels verlopen via XHR in plaats van een volledige browserreload, zodat je de soepele gebruikservaring van een SPA krijgt.
De relatie met de Laravel starter kits
Kies je bij het aanmaken van een project metlaravel new voor React, Vue of Svelte, dan wordt Inertia automatisch opgezet.
inertiajs/inertia-laravel(de serverside adapter)@inertiajs/react/@inertiajs/vue3/@inertiajs/svelte(de clientadapters)- De middleware
HandleInertiaRequests - Authenticatieschermen zoals inloggen, registreren en wachtwoordherstel (al geïmplementeerd als Inertia-componenten)
De basis van Inertia::render()
Om vanuit een Laravel-controller een Inertia-response te retourneren, gebruik je Inertia::render(). Het eerste argument is de naam van het JavaScript-component, het tweede de data die je als props doorgeeft.
'Posts/Index' komt overeen met een bestandspad. Bij React hoort daar resources/js/Pages/Posts/Index.jsx bij, bij Vue is dat resources/js/Pages/Posts/Index.vue.
De structuur van een paginacomponent
Een Inertia-paginacomponent is een gewoon Vue/React-component. De data die je vanuit de controller doorgeeft, ontvang je als props.React
Vue
<Link>-component verlopen paginawissels via XHR en vermijd je een volledige paginareload. Je schrijft het precies zoals een gewone <a>-tag, maar achter de schermen vervangt Inertia alleen het paginacomponent.
Gedeelde data — de middleware HandleInertiaRequests
Data die op alle pagina’s nodig is (informatie over de ingelogde gebruiker, flashberichten, enz.) definieer je in de share()-methode van de middleware HandleInertiaRequests.
React
Gedeelde data wordt bij elk request meegestuurd, dus het is aan te raden om deze te beperken tot het strikt noodzakelijke. Gebruik je lazy evaluatie met
fn(), dan wordt de data alleen geëvalueerd bij requests die haar echt nodig hebben.Formulieren verzenden en validatiefouten afhandelen
De formulierverwerking van Inertia integreert naadloos met de validatie van Laravel. Met de helperuseForm() implementeer je het statebeheer, verzenden en de foutweergave van formulieren op een eenvoudige manier.
Aan de controllerkant
errors door aan de pagina.
Aan de frontendkant
React
Vue
useForm() de fouten terwijl de ingevoerde gegevens behouden blijven. De gebruiker hoeft het formulier niet opnieuw in te vullen, wat de gebruikservaring verbetert.
Geschikte en minder geschikte use-cases
Wanneer Inertia geschikt is
- Wanneer een team dat Laravel goed kent een SPA-achtige UI wil bouwen
- Wanneer je authenticatie, autorisatie en validatie centraal aan de Laravel-kant wilt beheren
- Apps waarbij SEO een lage prioriteit heeft, zoals beheerpanelen en interne tools
- Projecten die de kosten van het apart ontwerpen en beheren van een API willen vermijden
Wanneer het minder geschikt is
- Wanneer meerdere externe clients (zoals mobiele apps) dezelfde API gebruiken
- Contentsites waarbij SEO cruciaal is (op te lossen met SSR, maar dat maakt het complexer)
- Wanneer de frontend door een volledig onafhankelijk team wordt ontwikkeld, zoals bij een micro-frontendarchitectuur
De belangrijkste wijzigingen in Inertia v3
Inertia v3 werd uitgebracht op 26 maart 2026. Dit zijn de belangrijkste wijzigingen ten opzichte van v2.Axios geschrapt — naar een lichtgewicht ingebouwde XHR-client
In v3 is Axios geschrapt en vervangen door een lichtere, ingebouwde XHR-client. Voor de meeste applicaties zijn geen codewijzigingen nodig. Axios-interceptors kun je rechtstreeks migreren naar de ingebouwde interceptors. Wil je Axios blijven gebruiken, dan kan dat via de Axios-adapter.Eenvoudigere SSR met de @inertiajs/vite-plugin
Met de nieuwe Vite-plugin worden het automatisch resolven van paginacomponenten en de SSR-configuratie sterk vereenvoudigd. SSR tijdens de ontwikkeling werkt nu door simpelweg npm run dev uit te voeren; een aparte Node-server starten is niet meer nodig.
De useHttp-hook — HTTP-requests zonder paginawissel
Met de useHttp-hook kun je HTTP-requests naar de server sturen zonder een paginawissel (Inertia-visit) te veroorzaken. Handig in situaties waarin je wilt communiceren terwijl de huidige pagina behouden blijft, zoals het opslaan vanuit een modal of achtergrondverwerking.
Optimistische UI-updates (optimistic updates)
Optimistische updates worden nu ondersteund inuseForm en op routerniveau. De UI wordt direct bijgewerkt zonder op het antwoord van de server te wachten, en bij een mislukking volgt automatisch een rollback.
Layout props
Met deuseLayoutProps-hook kun je nu data doorgeven van een paginacomponent naar een persistente layout. Het aansturen van de layoutstatus vanaf specifieke pagina’s — waarvoor je voorheen was aangewezen op gedeelde data of paginaprops — schrijf je nu eenvoudig.
Gewijzigde vereisten
In v3 zijn de volgende minimumversies verhoogd.Inertia::lazy() geschrapt
Inertia::lazy(), dat in v2 al deprecated was, is in v3 volledig verwijderd. Gebruik in plaats daarvan Inertia::optional().
Gewijzigde eventnamen
De future-optie geschrapt
Het future-configuratieblok, dat in v2 als experimentele optie werd aangeboden, is geschrapt. Al deze opties zijn nu standaard ingeschakeld. Verwijder het future-blok uit de configuratie van createInertiaApp.
Zie de officiële upgradegids voor de details van het upgraden vanaf v2. Voor v2 worden bugfixes geleverd tot 26 september 2026 en beveiligingsfixes tot 26 maart 2027.
Conclusie
Inertia.js is een tool die inspeelt op de reële behoefte: “Laravel houden zoals het is, maar de frontend in React/Vue schrijven”. De eenvoud waarmee je zonder een API te ontwerpen data rechtstreeks van controllers aan componenten doorgeeft, is de grootste kracht. Dat de starter kits van Laravel 13 op Inertia zijn gebouwd, laat zien dat de positie van Inertia binnen het Laravel-ecosysteem stevig verankerd is. Waar Livewire de aanpak is om dynamische UI’s met alleen PHP te bouwen, is Inertia de aanpak waarmee je de kracht van JavaScript-frameworks benut zonder de eenvoud van de serverkant op te geven. Welke je kiest hangt af van de skillset van je team en de eisen van je project, maar wil je “met behoud van je Laravel-controllers schermen bouwen in React”, dan is Inertia de meest natuurlijke keuze.Officiële documentatie van Inertia.js
Raadpleeg de officiële documentatie voor alle functies van Inertia v3.