Was ist Inertia.js?
Sie möchten das Frontend mit React oder Vue bauen – aber das separate Entwerfen, Implementieren und Verwalten einer API vermeiden? Dieses Dilemma löst Inertia.js. Inertia ist ein „Kleber” (Glue), der Sie serverseitiges Routing und Controller unverändert lassen und nur das Frontend mit React, Vue oder Svelte schreiben lässt. Es ist kein Framework, sondern eine Adapterschicht, die das bestehende Laravel mit einem JavaScript-Framework verbindet.Die aktuelle Version ist Inertia v3 (veröffentlicht am 26. März 2026). Die Starterkits von Laravel 13 (React, Vue, Svelte) sind bereits Inertia-fähig.
Unterschiede zu klassischen SPAs/MPAs
| Architektur | Merkmale | Herausforderungen |
|---|---|---|
| MPA (klassische Blade-App) | Einfach, leicht mit Laravel zu integrieren | Vollständiges Reload bei jedem Seitenwechsel |
| SPA (API + separates Frontend) | Hohe Interaktivität | Doppelte Verwaltung von API-Design, Authentifizierung und Typen |
| Inertia (moderner Monolith) | UX einer SPA bei serverseitiger Einfachheit | Eigene Lernkurve |
Zusammenhang mit den Laravel-Starterkits
Wenn Sie beilaravel new React, Vue oder Svelte wählen, wird Inertia automatisch eingerichtet.
inertiajs/inertia-laravel(serverseitiger Adapter)@inertiajs/react/@inertiajs/vue3/@inertiajs/svelte(Client-Adapter)- Middleware
HandleInertiaRequests - Authentifizierungsseiten für Login, Registrierung, Passwort-Reset u. a. (bereits als Inertia-Komponenten implementiert)
Grundlagen von Inertia::render()
Um aus einem Laravel-Controller eine Inertia-Response zurückzugeben, verwenden Sie Inertia::render(). Der erste Parameter ist der Name der JavaScript-Komponente, der zweite die als Props zu übergebenden Daten.
'Posts/Index' entspricht dem Dateipfad. Bei React ist das resources/js/Pages/Posts/Index.jsx, bei Vue resources/js/Pages/Posts/Index.vue.
Struktur einer Page-Komponente
Inertia-Page-Komponenten sind gewöhnliche Vue-/React-Komponenten. Die aus dem Controller übergebenen Daten werden als Props empfangen.React
Vue
<Link>-Komponente erfolgen Seitenwechsel per XHR, ein vollständiges Seiten-Reload wird vermieden. Sie schreibt sich genau wie ein normaler <a>-Tag, im Hintergrund tauscht Inertia jedoch nur die Page-Komponente aus.
Shared Data – die HandleInertiaRequests-Middleware
Daten, die auf allen Seiten gemeinsam benötigt werden (angemeldeter Benutzer, Flash-Messages usw.), definieren Sie in der Methode share() der Middleware HandleInertiaRequests.
React
Da Shared Data in jeder Anfrage enthalten sind, empfiehlt es sich, sie auf das Nötigste zu beschränken. Mit einer Lazy-Evaluation per
fn() werden sie nur dann ausgewertet, wenn sie in der jeweiligen Anfrage tatsächlich benötigt werden.Formularübermittlung und Umgang mit Validierungsfehlern
Die Formularverarbeitung in Inertia integriert sich nahtlos in Laravels Validierung. Mit dem HelperuseForm() lassen sich State-Handling, Absenden und Fehlerdarstellung schlank umsetzen.
Auf der Controller-Seite
errors-Prop an die Seite.
Auf der Frontend-Seite
React
Vue
useForm() die Eingaben und stellt die Fehler dar. Die Benutzer müssen keine Formulare erneut ausfüllen, was das Nutzererlebnis verbessert.
Passende und weniger passende Anwendungsfälle
Wann Inertia gut geeignet ist
- Wenn ein mit Laravel vertrautes Team eine SPA-artige UI bauen möchte
- Wenn Authentifizierung, Autorisierung und Validierung zentral auf der Laravel-Seite bleiben sollen
- Für Admin-Panels, interne Tools und andere Anwendungen mit geringer SEO-Priorität
- Für Projekte, die die Kosten für ein separates API-Design und dessen Verwaltung vermeiden wollen
Wann Inertia weniger geeignet ist
- Wenn mehrere externe Clients (z. B. Mobile Apps) dieselbe API verwenden
- Für Content-Sites mit hoher SEO-Priorität (per SSR möglich, wird aber komplex)
- Für Microfrontend-Konstellationen, in denen das Frontend von einem vollständig separaten Team entwickelt wird
Wichtigste Änderungen in Inertia v3
Inertia v3 wurde am 26. März 2026 veröffentlicht. Hier die wichtigsten Änderungen gegenüber v2.Axios wurde entfernt – hin zu einem leichtgewichtigen eingebauten XHR-Client
In v3 wurde Axios entfernt und durch einen leichteren, eingebauten XHR-Client ersetzt. Die meisten Anwendungen benötigen keine Codeänderungen. Axios-Interceptors lassen sich direkt auf die eingebauten Interceptors migrieren. Wer weiter Axios verwenden möchte, kann dies über den Axios-Adapter tun.Vereinfachtes SSR dank Plugin @inertiajs/vite
Das neue Vite-Plugin vereinfacht die automatische Auflösung von Page-Komponenten und die SSR-Konfiguration erheblich. SSR läuft während der Entwicklung allein durch npm run dev; ein separater Node-Server ist nicht mehr nötig.
Hook useHttp – HTTP-Requests ohne Seitenwechsel
Mit dem Hook useHttp senden Sie HTTP-Requests an den Server, ohne einen Seitenwechsel (Inertia visit) auszulösen. Hilfreich beim Speichern in Modalen, bei Hintergrundoperationen und weiteren Szenarien, in denen die aktuelle Seite erhalten bleiben soll.
Optimistische UI-Updates (Optimistic Updates)
SowohluseForm als auch die Router-Ebene unterstützen optimistische Updates. Die UI wird sofort aktualisiert, ohne die Server-Antwort abzuwarten; bei Fehlschlag erfolgt automatisch ein Rollback.
Layout-Props
Mit dem HookuseLayoutProps lassen sich Daten aus einer Page-Komponente an ein persistentes Layout übergeben. Der zuvor auf Shared Data oder Page-Props beschränkte Anwendungsfall „Layout-Zustandssteuerung für bestimmte Seiten” wird deutlich einfacher.
Änderungen bei den Voraussetzungen
In v3 wurden die minimalen Versionen angehoben.| Position | v2 | v3 |
|---|---|---|
| PHP | 8.1+ | 8.2+ |
| Laravel | 10+ | 11+ |
| React | 18+ | 19+ |
| Svelte | 4+ | 5+ |
Entfernung von Inertia::lazy()
Das in v2 als deprecated markierte Inertia::lazy() wurde in v3 vollständig entfernt. Verwenden Sie stattdessen Inertia::optional().
Umbenennung von Events
| v2 | v3 |
|---|---|
invalid | httpException |
exception | networkError |
Entfernung der Option future
Der in v2 als experimenteller Konfigurationsblock verfügbare future-Block wurde entfernt. Alle dortigen Optionen sind nun standardmäßig aktiv. Entfernen Sie den future-Block aus der Konfiguration von createInertiaApp.
Details zum Upgrade von v2 finden Sie im offiziellen Upgrade-Guide. v2 erhält Bugfixes bis 26. September 2026 und Security-Fixes bis 26. März 2027.
Fazit
Inertia.js beantwortet den realen Bedarf „Laravel unverändert lassen, aber das Frontend in React/Vue schreiben”. Die Möglichkeit, Daten direkt aus einem Controller an eine Komponente zu übergeben, ohne eine API entwerfen zu müssen, ist die größte Stärke. Dass die Starterkits von Laravel 13 Inertia unterstützen, unterstreicht seine gefestigte Position im Laravel-Ökosystem. Wenn Livewire der Ansatz ist, dynamische UIs allein mit PHP zu erstellen, ist Inertia der Ansatz, die Stärke von JavaScript-Frameworks zu nutzen, ohne die serverseitige Einfachheit zu verlieren. Welche Option Sie wählen, hängt von den Fähigkeiten Ihres Teams und den Projektanforderungen ab. Für das Szenario „Laravel-Controller unverändert lassen und Screens mit React bauen” ist Inertia jedoch die natürlichste Wahl.Offizielle Dokumentation von Inertia.js
Alle Funktionen von Inertia v3 finden Sie in der offiziellen Dokumentation.