Laravel Jetstream: Choosing Between the Livewire and Inertia Stacks
Jetstream's Livewire vs. Inertia choice is made at install time and is costly to reverse. Compare the trade-offs and validate both with throwaway scaffolds before committing.
05 Mar 2026, 09:18 UTC

The decision you make at install time
When you run php artisan jetstream:install, Jetstream asks you to pick a frontend stack: --stack=livewire or --stack=inertia. This is the one decision in Jetstream that is expensive to reverse. The installer publishes controllers, views, and components directly into your application, and everything you customize afterward builds on that choice. Switching later means rewriting your frontend layer, not flipping a config flag.
The useful framing: both stacks give you identical backend capability — authentication, two-factor authentication, session management, API tokens via Sanctum, and optional teams. You are only choosing frontend ergonomics. So the question is not "which is more powerful" but "which matches how my team wants to build UI."
The two supported options compared
| Factor | Livewire stack | Inertia stack |
|---|---|---|
| Rendering model | Server-rendered Blade views; Livewire components update via AJAX round-trips | Vue 3 single-page components; page visits are XHR requests that swap the component |
| Interactivity layer | Alpine.js for small client-side touches | Vue reactivity throughout |
| JS build complexity | Low — mostly Tailwind compilation | Higher — Vue SFCs, bundler config, optional SSR |
| Page-load behavior | Full page loads plus Livewire updates | SPA-like navigation without full reloads |
| Best fit | Teams comfortable in Blade/PHP who want minimal JS tooling | Teams building a richer client-side UI with Vue experience |
Trade-offs worth weighing
Livewire keeps your mental model in Laravel. Forms, validation, and authorization live in PHP component classes, and you rarely write JavaScript beyond Alpine sprinkles. The cost: highly interactive interfaces (drag-and-drop, complex client state) push against the server round-trip model, and every interaction hits your backend.
Inertia gives you a genuine SPA feel with server-side routing — no separate API to build. The cost is real tooling weight: a Vue build pipeline, hydration concerns, and server-side rendering as an optional extra if you need it for SEO or first-paint performance. Note that Jetstream's Inertia stack has historically defaulted to Vue; some versions offer a React variant, so verify what your installed version supports before assuming.
Two constraints apply to both. First, Jetstream versions are tightly coupled to specific Laravel majors — check the compatibility matrix for your Laravel release before installing. Second, team features are optional and off by default; enabling them later changes routes, policies, and UI assumptions, so decide that at scaffolding time too.
Validate the choice with throwaway scaffolds
The cheapest way to decide is to scaffold both and compare. In two separate directories (requires PHP, Composer, and a database configured in each .env):
laravel new demo-livewire
cd demo-livewire
composer require laravel/jetstream
php artisan jetstream:install livewire
npm install && npm run build
php artisan migrate
php artisan test
Repeat in a second project with php artisan jetstream:install inertia. The jetstream:install command publishes scaffolding into your app and must be run on a fresh Laravel install — running it over an existing app will overwrite conflicting files.
Then check three things:
- Baseline tests pass. Jetstream ships feature tests for login, registration, password confirmation, and 2FA.
php artisan testshould be green in both projects out of the box. - Diff the generated structure. Compare
resources/views(Livewire) againstresources/js/Pages(Inertia) to see exactly what you will be maintaining. - Exercise the flows manually. Log in, enroll in 2FA, update the profile, and create an API token in each app. Notice the difference between full page reloads and Inertia's XHR visits — that feel is what your users and developers will live with.
Limitations
Published scaffolding becomes your code. Future Jetstream upgrades do not auto-merge into views you have customized, so heavy early customization increases upgrade friction regardless of stack. And because versions and supported frontend frameworks change between releases, confirm your Jetstream version's stack options and Laravel compatibility in the official documentation before committing — treat this guide's specifics as a snapshot, not a permanent contract.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.