Skip to main content

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 met laravel new voor React, Vue of Svelte, dan wordt Inertia automatisch opgezet.
De starter kits zetten automatisch het volgende klaar.
  • 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)
Wil je Inertia handmatig toevoegen aan een bestaand project, dan installeer je de serverkant en de clientkant apart. Zie de installatie-instructies in de officiële documentatie voor de details.

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.
In plaats van Inertia::render() kun je ook de helperfunctie inertia() gebruiken. Spreek binnen je team één stijl af.
De componentnaam '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
Met het <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.
Gedeelde data wordt automatisch gemerged in de props van elke pagina.
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 helper useForm() implementeer je het statebeheer, verzenden en de foutweergave van formulieren op een eenvoudige manier.

Aan de controllerkant

Treedt er een validatiefout op, dan stuurt Laravel automatisch een redirect naar de formulierpagina en slaat het de foutinformatie op in de sessie. Inertia detecteert dit automatisch en geeft het als de prop errors door aan de pagina.

Aan de frontendkant

React
Vue
Wanneer er een validatiefout terugkomt, toont 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
Inertia ondersteunt ook server-side rendering (SSR). Heb je pagina’s waarvoor SEO nodig is, overweeg dan de SSR-optie. Ook in de Laravel starter kits is de SSR-configuratie ingebouwd.

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 in useForm 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 de useLayoutProps-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.
Laatst gewijzigd op 6 september 2026