Cos’è Inertia.js
Vuoi realizzare il frontend con React o Vue. Ma vuoi evitare di progettare, implementare e mantenere un’API a parte: la soluzione a questo dilemma è Inertia.js. Inertia lascia intatti il routing e i controller lato server e ti permette di scrivere solo il frontend in React, Vue o Svelte, funzionando come una “colla”. Non è un framework, ma un livello adattatore che collega Laravel esistente e i framework JavaScript.L’ultima versione attuale è Inertia v3 (rilasciata il 26 marzo 2026). Gli starter kit di Laravel 13 (React, Vue, Svelte) sono già compatibili con Inertia.
Differenze rispetto a SPA e MPA tradizionali
| Architettura | Caratteristiche | Problemi |
|---|---|---|
| MPA (app Blade tradizionale) | Semplice, facile da integrare con Laravel | Full reload a ogni transizione di pagina |
| SPA (API + frontend separati) | Alta interattività | Doppia gestione di design API, autenticazione e definizioni dei tipi |
| Inertia (monolite moderno) | UX di SPA + semplicità lato server | Ha un costo di apprendimento proprio |
Relazione con gli starter kit Laravel
Quando crei un progetto conlaravel new e scegli React, Vue o Svelte, Inertia viene configurato automaticamente.
inertiajs/inertia-laravel(adapter lato server)@inertiajs/react/@inertiajs/vue3/@inertiajs/svelte(adapter lato client)- Middleware
HandleInertiaRequests - Schermate di autenticazione come login, registrazione e reset password (già implementate come componenti Inertia)
Le basi di Inertia::render()
Per restituire una risposta Inertia da un controller Laravel usa Inertia::render(). Come primo argomento specifichi il nome del componente JavaScript, come secondo i dati da passare come prop.
'Posts/Index' corrisponde a un percorso di file. In React è resources/js/Pages/Posts/Index.jsx, in Vue resources/js/Pages/Posts/Index.vue.
Struttura del componente di pagina
I componenti di pagina di Inertia sono normali componenti Vue/React. I dati passati dal controller vengono ricevuti come prop.React
Vue
<Link> le transizioni avvengono via XHR, evitando il full reload della pagina. Si scrive esattamente come un normale tag <a>, ma dietro le quinte Inertia sostituisce solo il componente di pagina.
Dati condivisi — middleware HandleInertiaRequests
I dati necessari a tutte le pagine (utente loggato, messaggi flash, ecc.) si definiscono nel metodo share() del middleware HandleInertiaRequests.
React
Poiché i dati condivisi sono inclusi in ogni richiesta, ti consigliamo di limitarli allo stretto necessario. Se usi valutazioni lazy con
fn(), verranno valutati solo nelle richieste che li richiedono davvero.Invio dei form e gestione degli errori di validazione
La gestione dei form con Inertia si integra naturalmente con la validazione di Laravel. Usando l’helperuseForm() puoi implementare in modo semplice la gestione dello stato, l’invio e la visualizzazione degli errori.
Lato controller
errors.
Lato frontend
React
Vue
useForm() mostra gli errori mantenendo i contenuti inseriti. Non serve reinserire tutto e l’esperienza utente migliora.
Casi d’uso adatti e non adatti
Casi in cui Inertia è adatto
- Team che conoscono bene Laravel e vogliono realizzare UI in stile SPA
- Volere gestire in modo centralizzato lato Laravel autenticazione, autorizzazione e validazione
- App con SEO non prioritario, come pannelli di amministrazione o strumenti interni
- Progetti in cui vuoi evitare il costo di progettare e mantenere un’API separata
Casi in cui non è adatto
- Quando più client esterni (app mobile, ecc.) usano la stessa API
- Siti di contenuti in cui la SEO è molto importante (gestibile con SSR ma complesso)
- Configurazioni micro-frontend, in cui il frontend è sviluppato da team completamente indipendenti
Principali modifiche di Inertia v3
Inertia v3 è stato rilasciato il 26 marzo 2026. Ecco le principali novità rispetto a v2.Rimozione di Axios — verso un client XHR integrato leggero
In v3 Axios è stato rimosso e sostituito da un client XHR integrato più leggero. Nella maggior parte delle applicazioni non serve modificare il codice. Gli interceptor di Axios possono essere migrati direttamente sugli interceptor integrati. Se vuoi continuare a usare Axios, puoi farlo tramite un adapter Axios.Semplificazione dell’SSR con il plugin @inertiajs/vite
Introducendo il nuovo plugin Vite, la risoluzione automatica dei componenti di pagina e la configurazione SSR risultano notevolmente semplificate. L’SSR in sviluppo funziona semplicemente eseguendo npm run dev, senza dover avviare un server Node separato.
Hook useHttp — richieste HTTP senza transizione di pagina
Con l’hook useHttp puoi inviare richieste HTTP al server senza generare una transizione (visit Inertia). Utile quando vuoi comunicare mantenendo la pagina corrente, come per il salvataggio da un modale o per elaborazioni in background.
Aggiornamenti UI ottimistici (Optimistic Updates)
Sono supportati gli aggiornamenti ottimistici a livello diuseForm e di router. La UI viene aggiornata immediatamente senza attendere la risposta del server e, in caso di fallimento, viene automaticamente rollbackata.
Layout Props
Con l’hookuseLayoutProps puoi passare dati da un componente di pagina a un layout persistente. Il “controllo dello stato del layout per una pagina specifica”, che prima poteva basarsi solo sui dati condivisi o sulle prop di pagina, ora si scrive in modo semplice.
Cambiamenti nei requisiti
In v3 sono state innalzate le versioni minime seguenti.| Elemento | v2 | v3 |
|---|---|---|
| PHP | 8.1+ | 8.2+ |
| Laravel | 10+ | 11+ |
| React | 18+ | 19+ |
| Svelte | 4+ | 5+ |
Rimozione di Inertia::lazy()
Inertia::lazy(), deprecato in v2, è stato completamente rimosso in v3. Al suo posto si usa Inertia::optional().
Rinomina degli eventi
| v2 | v3 |
|---|---|
invalid | httpException |
exception | networkError |
Rimozione dell’opzione future
Il blocco di configurazione future, fornito in v2 come opzione sperimentale, è stato rimosso. Tutte quelle opzioni sono ora abilitate per impostazione predefinita. Rimuovi il blocco future dalla configurazione di createInertiaApp.
Per i dettagli sulla procedura di aggiornamento da v2 consulta la guida ufficiale di aggiornamento. Per v2 le bug fix sono fornite fino al 26 settembre 2026 e le correzioni di sicurezza fino al 26 marzo 2027.
Conclusioni
Inertia.js è uno strumento che risponde all’esigenza concreta di “voler tenere Laravel così com’è e scrivere il frontend in React/Vue”. La sua forza principale è la semplicità di passare dati direttamente dal controller ai componenti senza progettare un’API. Il fatto che gli starter kit di Laravel 13 supportino Inertia dimostra come la sua posizione nell’ecosistema Laravel sia ormai consolidata. Se Livewire è l’approccio per creare UI dinamiche solo con PHP, Inertia è l’approccio che permette di usare la potenza dei framework JavaScript senza rinunciare alla semplicità del lato server. Quale scegliere dipende dalle competenze del team e dai requisiti del progetto, ma quando vuoi “mantenere i controller Laravel e realizzare le schermate in React”, Inertia è la scelta più naturale.Documentazione ufficiale di Inertia.js
Per tutte le funzionalità di Inertia v3 fai riferimento alla documentazione ufficiale.