Leah Thompson (DevRel Engineer, Laravel) is on the Laravel core team. At Laravel Live UK 2026 she gave a talk on building modern frontends with Inertia v3 and React, a near-identical version of the talk she gave at React Day 2025.
The RILT stack
RILT = React, Inertia, Laravel, Tailwind. Sometimes written as LITTR when TypeScript is included. TypeScript is now the default in Laravel's official starter kits.
Your controller returns Inertia::render('PageComponent', $data), that data
arrives as props in the React component, and routing stays in web.php. No
separate API or second repository needed.
References:
Inertia v3 vs Livewire
Both solve the problem of reactive UI without a separate API, but in different ways.
Livewire stays in PHP. User interaction triggers a server re-render, the DOM gets patched, minimal JavaScript required. Inertia means the UI layer is fully in React/Vue/Svelte with state living in the browser and access to the full npm ecosystem.
Both shipped major versions in early 2026 (Livewire 4 in January, Inertia v3 in March). Livewire is generally faster to build with for straightforward UI. Inertia suits more complex, app-like interfaces where a JS framework is already being used.
References:
Inertia v3 - what changed
Stable release March 2026.
Axios dropped - replaced with a built-in XHR client. An Axios adapter is available for projects that need it.
Vite plugin (@inertiajs/vite) - replaces the previous boilerplate of
resolve/setup callbacks and a separate SSR entry point. createInertiaApp() now
works with no arguments. SSR works in dev mode without running a separate Node
process.
useHttp hook - for HTTP requests that should not trigger a page visit
(search endpoints, JSON calls). Returns the same reactive state as useForm:
processing, errors, progress, isDirty.
Optimistic updates - chain .optimistic() before a router visit. The UI
updates immediately and rolls back automatically on a non-2xx response.
Instant Visits - page component renders immediately using shared props while the server request is in flight. Full data merges in on response.
Layout Props - useLayoutProps / setLayoutProps for passing data from a
page into its persistent layout.
Breaking changes
- PHP 8.2+, Laravel 11+, React 19+ required
qsno longer bundled - install directly if usedInertia::lazy()removed - useInertia::optional()router.cancel()becomesrouter.cancelAll()- Config file changed - republish:
php artisan vendor:publish --provider="Inertia\ServiceProvider" --force
References:
- Inertia v3 announcement - Laravel Blog
- Stable release notes - Laravel News
- Deep dive - Delaney Industries
- Upgrade guide
Live code highlighting in demos
There was line-by-line code highlighting during the demos. Most likely Slidev, which supports per-line highlighting and is common in the Laravel community. Could also be Slides.com. Check the recording when it is published.
React as a Laravel frontend
On the controller side the change from Blade is minimal. Inertia::render()
instead of view(), with data becoming props. The frontend is standard React
with hooks and TypeScript.
Laravel 13's official React starter kit ships with React 19, TypeScript, Tailwind 4, shadcn/ui, and Inertia 3.
References:
- Leah Thompson - React + Inertia (React Day 2025)
- Laravel Docs - Frontend
- Laravel React Starter Kit - GitHub
Does Laravel use React or Vue internally?
Vue was the historical default. Both are now equally first-class in Laravel 13's starter kits. Leah Thompson, as a team member, publicly focuses on React + Inertia.
Notes from Laravel Live UK 2026.