Livewire vs Splade vs Inertia.js in 2026: what a Laravel team should pick now that Splade is archived
Splade went read-only in October 2025, so the old three-way question now comes with a deadline. Here is where each library keeps its state, what each one needs, and how to move a Splade screen.
Livewire vs Splade vs Inertia: which one should a Laravel team pick in 2026?#
Pick Livewire 4 or Inertia.js 3, because the Splade repository was archived on 20 October 2025 and its last release allows nothing newer than Laravel 12. The Splade repository on GitHub carries the banner "This repository was archived by the owner on Oct 20, 2025." Its composer.json accepts Laravel 10, 11 and 12, and nothing else. So the real question is between two tools that still ship.
The Livewire 4 quickstart says it lets you "build dynamic, reactive interfaces using only PHP". Meanwhile, the Inertia.js guide to how it works says "At its core, Inertia is essentially a client-side routing library." In short, the first suits a team whose screen logic lives in PHP. The second suits a team that wants React, Vue or Svelte to own the page while Laravel keeps the routes.
| Library | Where UI state lives | Status on 3 October 2026 | Laravel majors it installs on |
|---|---|---|---|
| Livewire 4 | A PHP class on the server | Ships; v4.4.7 on 28 September | 10 and later, including 13 |
| Splade 1.4 | Blade on the server, renderless Vue 3 in the browser | Archived on 20 October 2025; last release 1.4.21 | 10, 11 and 12 only |
| Inertia.js 3 | A React, Vue or Svelte page component in the browser | Ships; v3.8.0 on 1 October | 11 and later, including 13 |
How long can a Laravel 12 app keep running Splade?#
A Laravel 12 app on Splade gets framework security fixes only until 24 February 2027, because Splade's composer constraint stops at Laravel 12. Laravel's release notes for 13.x, read on 3 October 2026, state that "bug fixes are provided for 18 months and security fixes are provided for 2 years". The same table shows that Laravel 12 bug fixes already ended on 13 August 2026.
18 months
Bug fixes
24 months
Security fixes
Laravel 12 bug fixes already ended on 13 August 2026, so a Splade app now runs on security fixes alone until 24 February 2027.
| Option | months of support per Laravel major |
|---|---|
| Bug fixes | 18 months |
| Security fixes | 24 months |
Therefore the hard part is not the framework upgrade. Instead, it is porting every Splade screen first, since Composer cannot install Laravel 13 while Splade caps the framework at 12. From 3 October 2026, about 20 weeks of security fixes remain. Say an app has 30 Splade screens, an illustrative count. Then the team must port about one and a half screens a week, every week, to finish in time. Because each port also needs testing, a slower team should start sooner rather than hope for more time.
Will your team finish before 24 February 2027?
Change the screen count and your team's weekly pace to see whether the port fits before Laravel 12 security fixes end.
Screens a week needed to finish in time
1.5
- Weeks needed at your pace
- Enter your weekly pace
- Weeks to spare (negative means late)
- Enter your weekly pace
Arithmetic from Laravel's 13.x release notes, read 3 October 2026. Modelled, not measured.
What does each library send over the wire when a user clicks?#
Livewire sends changed values to a PHP component on the server, while Inertia.js fetches a JSON page object and lets React, Vue or Svelte render it. In the quickstart's form, typing in a bound field sends no request at all. Then a click on save sends both values to the server, which runs the PHP method and checks them. So the state is simply the public properties of a PHP class.
Yet Splade sits between the two. Its README says it builds a single page app from "standard Laravel Blade templates, enhanced with renderless Vue 3 components". In other words, the server renders the markup and Vue 3 adds the behaviour in the browser.
Inertia.js works at the level of whole pages instead. Its docs say that on a link click the server "returns a JSON response with the JavaScript page component name and data (props)". Then the client swaps in the new page component and updates the browser history. As a result, its state lives in the browser, inside a JavaScript component, while Laravel keeps routing, controllers and middleware.
Is Laravel Splade still maintained?#
No: the Splade repository has been read-only since 20 October 2025, Splade Core was archived on 27 February 2024, and the author ruled out a v2 or v3. Read-only means no new issue, pull request or release can land there. Packagist lists 1.4.21 as the newest Splade version, so that is the last release any app will get.
The author, Pascal Baljet, explained why in his post Thoughts on Splade. He wrote: "Splade v1 is not dead, but it's clearly not the way forward." He also wrote: "So, there will be no v2 or v3 in the near future." Put plainly, a Splade app gets no bug fixes, no security patches and no Laravel 13 support. A team can fork it, but then that team owns every fix.
And usage has followed the archive. Packagist's stats, read on 3 October 2026, show Splade at 1,212 installs in the last month.
Show data table
| Item | Value |
|---|---|
| livewire/livewire | 7,660,581 |
| inertiajs/inertia-laravel | 6,645,659 |
| protonemedia/laravel-splade | 1,212 |
Splade drew 1,212 installs in the last month, against 7,660,581 for Livewire and 6,645,659 for the Inertia.js Laravel adapter.
How widely are Livewire and Inertia.js used compared with Splade?#
Packagist counts 109,313,995 Livewire installs and 80,447,936 for the Inertia.js Laravel adapter, against 110,484 for Splade across its whole life. Those totals come from Packagist's stats page for each package, read on 3 October 2026.
109,313,995
livewire/livewire
80,447,936
inertiajs/inertia-laravel
110,484
protonemedia/laravel-splade
Both live options have tens of millions of installs, while Splade has 110,484 across its whole life.
| Option | installs, all time |
|---|---|
| livewire/livewire | 109,313,995 |
| inertiajs/inertia-laravel | 80,447,936 |
| protonemedia/laravel-splade | 110,484 |
Source: Packagist, 2026
Also, both tools still ship. The Livewire releases page, read on 3 October 2026, shows v4.4.7 on 28 September, with a v3.8.10 patch the same day. Likewise, the Inertia.js releases page shows v3.8.0 on 1 October, published by Pascal Baljet, who wrote Splade. In short, neither replacement is a bet on survival. So the choice between them is about fit.
When is Livewire 4 the right replacement for a Splade screen?#
Choose Livewire 4 when a screen is forms, tables and validation that PHP already owns, because a Splade Blade view ports to a Livewire component without a JavaScript build. That works because Splade components come in two halves. The author describes them as "a Blade Component and a Vue Component (with only a script, not a template)". So a port keeps the markup and moves the Vue half into a PHP class.
For example, a Splade form becomes a single-file component. The class and the template sit in one file, as the quickstart shows, and wire:model binds each input to a public property. Version 4 also changes a few habits from v3. The Livewire 4 upgrade guide says Route::livewire() "is now the preferred method" for full-page components. It also says modifiers like .blur now control when client state syncs.
Also, admin panels lean this way. Filament runs on Livewire, as our Filament guide explains, so a team with a Filament back office already ships it. If the open question is the line between this and plain controllers, see our comparison with traditional Laravel.
| Part of the Splade screen | Where it goes in Livewire 4 |
|---|---|
| The Blade Component half (the markup) | Kept as the template of a single-file component |
| The Vue Component half (a script, no template) | Public properties and methods of the PHP class in the same file |
| Each form input | wire:model binds it to a public property |
| A full-page route | Route::livewire(), now the preferred method |
| When client state syncs | Modifiers such as .blur now control it |
When is Inertia.js 3 the better replacement?#
Choose Inertia.js 3 when a screen needs client-side state such as optimistic updates or rich widgets, and the team already writes Vue, React or Svelte. Since Splade already rendered through Vue 3, screens that leaned on Vue for their behaviour move most easily here.
The Inertia.js v3 upgrade guide lists what is new. A built-in XHR client replaces Axios, optimistic updates roll back on their own, and the useHttp hook sends requests without a page visit. However, v3 also raises floors on the client. The React adapter needs React 19, and the Svelte adapter needs Svelte 5.
Meanwhile, the server side barely changes. Laravel still owns routing, controllers, middleware and authorization. So a Splade controller keeps its logic and returns Inertia::render instead of a view. Then the page itself becomes a Vue, React or Svelte component that receives the props.
Keep the controller logic.
Laravel still owns routing, controllers, middleware and authorization.
Return Inertia::render instead of a view.
The controller passes the page component name and its props.
Write the page as a Vue, React or Svelte component.
It receives the props the controller sent.
Meet the v3 client floors.
The React adapter needs React 19, and the Svelte adapter needs Svelte 5.
What PHP and Laravel versions does each one need in October 2026?#
Livewire 4 needs Laravel 10 and PHP 8.1, Inertia.js 3 needs Laravel 11 and PHP 8.2, and Laravel 13 itself needs PHP 8.3. Its installation page lists "Laravel version 10 or later" and "PHP version 8.1 or later". The Inertia.js v3 upgrade guide says "The Laravel adapter now requires PHP 8.2 and Laravel 11 at a minimum." Also, Laravel's 13.x release notes say "Laravel 13.x requires a minimum PHP version of 8.3."
Show data table
| Item | Value |
|---|---|
| Livewire 4, lowest Laravel | 10 |
| Inertia.js 3, lowest Laravel | 11 |
| Splade 1.4, highest Laravel | 12 |
| Current Laravel | 13 |
Livewire 4 installs from Laravel 10 and Inertia.js 3 from Laravel 11, both up to 13, while Splade stops at 12.
So both replacements install on Laravel 11, 12 and 13, while Splade stops at 12. And new projects point the same way. The Laravel 13 starter kits page offers React, Svelte, Vue and Livewire kits. Of those, the React, Svelte and Vue kits all use Inertia, and no kit uses Splade.
Which official pages should you install from?#
Install from four official pages in order: Livewire's 4.x installation and quickstart, or Inertia.js v3's server-side setup followed by its client-side setup. Each tool needs two of them.
- Livewire 4 installation: the
composer requireline and the version floors. - Livewire 4 quickstart:
make:livewire, the single-file component andRoute::livewire. - Inertia.js v3 server-side setup: the Laravel adapter, the
app.blade.phproot template and theHandleInertiaRequestsmiddleware. - Inertia.js v3 client-side setup: the
@inertiajs/viteplugin andcreateInertiaApp.
The order matters for Inertia.js, because the client app mounts inside the root template that the server side creates. For a new app, the starter kits do all of this. But an existing Splade app needs the manual steps.
What is the smallest working Livewire 4 component and Inertia.js 3 page?#
The smallest Livewire 4 start is one artisan command, one single-file component with wire:model, and one Route::livewire line. These steps follow the quickstart.
composer require livewire/livewire
php artisan make:livewire pages::post.create The command writes resources/views/pages/post/⚡create.blade.php. Replace its contents with this.
<?php
use Livewire\Component;
new class extends Component {
public string $title = '';
public function save()
{
$this->validate(['title' => 'required|max:255']);
}
};
?>
<form wire:submit="save">
<input type="text" wire:model="title">
<button type="submit">Save Post</button>
</form> Then add Route::livewire('/post/create', 'pages::post.create'); to routes/web.php. On the Inertia.js side, the server and client setup pages give three commands and a controller.
composer require inertiajs/inertia-laravel
php artisan inertia:middleware
npm install @inertiajs/vue3 @inertiajs/vite use Inertia\Inertia;
class EventsController extends Controller
{
public function show(Event $event)
{
return Inertia::render('Event/Show', [
'event' => $event->only('id', 'title'),
]);
}
} Finally, resources/js/app.js needs only two lines: import createInertiaApp from @inertiajs/vue3, then call it. After that, the Vite plugin finds the page in the pages folder and mounts it.
When are Livewire and Inertia.js the wrong tool?#
Neither is the right tool for a mostly static site, which needs plain Blade with Alpine.js, or for a front end shared with mobile apps, which needs an API. First, a marketing site with a menu and a modal needs no server round trips, so Blade and Alpine.js cover it. Later, the switch stays small, since the installation page notes that Livewire bundles Alpine.js.
Second, Inertia.js replaces the view layer of one Laravel app. When a mobile app and a web app share the same data, a JSON API with its own front end serves both. And neither library helps the mobile side.
Third, an app due to retire before 24 February 2027 may not need a port at all. Keep it on Laravel 12, patch it until the security window closes, and put the effort into its successor.
| Situation | Use instead | Why |
|---|---|---|
| A mostly static site with a menu and a modal | Plain Blade with Alpine.js | It needs no server round trips, and Livewire bundles Alpine.js if it grows |
| A front end shared with mobile apps | A JSON API with its own front end | Inertia.js replaces the view layer of one Laravel app, and neither library helps the mobile side |
| An app due to retire before 24 February 2027 | Stay on Laravel 12 and patch it | The security window covers it, so the effort goes into its successor |
Where should a Laravel team go next?#
Read the Livewire versus plain Laravel comparison next, then the Filament, Laravel for SaaS and Rector upgrade guides for the work that follows the port. Then, for admin screens, the Filament guide picks up where the port leaves off.
Product teams can read Laravel for SaaS for the stack around the front end. Once Splade is gone, the Rector guide to PHP migrations covers automated upgrade work. Also, Laravel Folio covers page-based routing, and the Laravel performance guide covers what to measure after the switch.
If you want the port done for you, you can hire Laravel software engineers or use maintenance and support for an app on an archived package. For most teams, though, the official docs are enough to do the port alone.