Vai al contenuto principale

Introduzione

Laravel 13 è stato rilasciato il 17 marzo 2026. È l’ormai consueta major release annuale, ma Laravel 13 si concentra in particolare su workflow AI-native, impostazioni predefinite più sicure e API più espressive per lo sviluppatore. I breaking change sono ridotti al minimo e la maggior parte delle applicazioni può essere aggiornata con poche modifiche. Al tempo stesso vengono aggiunte molte novità, come Laravel AI SDK e la ricerca semantica, che possono cambiare radicalmente lo sviluppo delle applicazioni moderne.
Policy di supporto di Laravel 13: le bug fix sono fornite fino al Q3 2027 e le security fix fino al 17 marzo 2028.

Aggiornamento dei requisiti PHP

Laravel 13 richiede PHP 8.3 o superiore. Il supporto a PHP 8.2 è terminato.
VersionePHPData di rilascioFine bug fixFine security fix
118.2 - 8.412 marzo 20243 settembre 202512 marzo 2026
128.2 - 8.524 febbraio 202513 agosto 202624 febbraio 2027
138.3 - 8.517 marzo 2026Q3 202717 marzo 2028
I principali benefici di PHP 8.3 comprendono costanti tipizzate, la funzione json_validate() e l’attributo #[\Override].

Principali novità

Laravel AI SDK

La funzionalità di punta di Laravel 13 è l’AI SDK di prima parte. Offre in un’API unificata generazione di testo, agenti con chiamata di tool, embedding, audio, generazione di immagini e integrazione con vector store. Puoi costruire funzionalità AI in modo indipendente dal provider mantenendo un’esperienza di sviluppo tipicamente Laravel. Generazione di testo (agente)
use App\Ai\Agents\SalesCoach;

$response = SalesCoach::make()->prompt('Analizza questa trascrizione di vendita...');

return (string) $response;
Generazione di immagini
use Laravel\Ai\Image;

$image = Image::of('una ciambella sul bancone della cucina')->generate();

$rawContent = (string) $image;
Sintesi audio
use Laravel\Ai\Audio;

$audio = Audio::of('Adoro scrivere codice in Laravel.')->generate();

$rawContent = (string) $audio;
Generazione di embedding
use Illuminate\Support\Str;

$embeddings = Str::of('I vini della Napa Valley sono i migliori.')->toEmbeddings();
Per i dettagli consulta la documentazione di Laravel AI SDK.

Ricerca semantica / vettoriale

È stato aggiunto un supporto nativo alle query vettoriali che si integra con l’AI SDK. Puoi eseguire la ricerca semantica con PostgreSQL + pgvector direttamente dal query builder.
$documents = DB::table('documents')
    ->whereVectorSimilarTo('embedding', 'le migliori cantine della Napa Valley')
    ->limit(10)
    ->get();
Dall’aggiunta della colonna embedding alla query, tutto si completa all’interno dell’ecosistema Laravel.

Risorse JSON:API

È stato aggiunto a Laravel il supporto di prima parte alle risorse JSON:API. Diventa facile restituire risposte conformi alla specifica JSON:API.
  • Serializzazione degli oggetti risorsa
  • Inclusione delle relazioni
  • Sparse fieldset
  • Link
  • Header di risposta conformi a JSON:API

Estensione degli attributi PHP

Laravel 13 estende all’intero framework le configurazioni dichiarative tramite gli attributi PHP. Applicazione ai controller
<?php

namespace App\Http\Controllers;

use App\Models\Comment;
use App\Models\Post;
use Illuminate\Routing\Attributes\Controllers\Authorize;
use Illuminate\Routing\Attributes\Controllers\Middleware;

#[Middleware('auth')]
class CommentController
{
    #[Middleware('subscribed')]
    #[Authorize('create', [Comment::class, 'post'])]
    public function store(Post $post)
    {
        // ...
    }
}
Applicazione ai job in coda
use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Backoff;
use Illuminate\Queue\Attributes\Timeout;
use Illuminate\Queue\Attributes\FailOnTimeout;

#[Tries(3)]
#[Backoff(60)]
#[Timeout(120)]
#[FailOnTimeout]
class ProcessPodcast implements ShouldQueue
{
    // ...
}
Principali attributi appena aggiunti:
AttributoUso
#[Middleware]Applica middleware a controller e metodi
#[Authorize]Esegue il policy check sul controller
#[Tries]Numero massimo di tentativi del job in coda
#[Backoff]Tempo di backoff del job in coda
#[Timeout]Timeout del job in coda
#[FailOnTimeout]Flag di fallimento del job su timeout
Ulteriori attributi sono stati introdotti anche in Eloquent, eventi, notifiche, validazione, testing, API di serializzazione delle risorse, ecc.

Queue routing

Con Queue::route(...) puoi ora definire in un unico punto le regole di routing predefinite di coda e connessione per specifici job.
use App\Jobs\ProcessPodcast;
use Illuminate\Support\Facades\Queue;

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
Non è più necessario hardcodare i nomi delle code nella classe del job e la configurazione infrastrutturale può essere separata dal codice.

Estensione del TTL della cache

Con Cache::touch(...) puoi estendere il TTL di un elemento in cache senza recuperarne e risalvarne il valore.
// Estendi il TTL di 3600 secondi senza cambiare il valore attuale
Cache::touch('expensive-computation', 3600);

Rafforzamenti di sicurezza

Rafforzamento della protezione CSRF (PreventRequestForgery)

Il middleware CSRF è stato rinominato da VerifyCsrfToken a PreventRequestForgery ed è stata aggiunta la verifica dell’origine della richiesta tramite l’header Sec-Fetch-Site.
use Illuminate\Foundation\Http\Middleware\PreventRequestForgery;

// Esclusione del middleware nei test
->withoutMiddleware([PreventRequestForgery::class]);
VerifyCsrfToken rimane come alias deprecato, ma è consigliata la migrazione al nuovo nome della classe.

Limitazione della deserializzazione della cache

In config/cache.php è stata aggiunta l’opzione serializable_classes, con default false. Questo previene attacchi di deserializzazione PHP quando la APP_KEY viene compromessa.
// config/cache.php
'serializable_classes' => [
    App\Data\CachedDashboardStats::class,
    App\Support\CachedPricingSnapshot::class,
],
Se stai salvando in cache oggetti PHP, devi aggiungere esplicitamente le classi alla whitelist.

Modifiche agli starter kit

Gli starter kit rinnovati in Laravel 12 (basati su React/Vue/Livewire) restano utilizzabili anche in Laravel 13. In concomitanza con il rilascio di Laravel 13 è stato rilasciato anche Inertia v3. Principali modifiche:
  • Layout props più semplici
  • Supporto a Vite 8
  • Aggiunta della callback withApp
  • Nuovi componenti Blade
Se stai usando Inertia v3, valuta l’aggiornamento contestuale.

Altri miglioramenti

Aggiornamento assistito dall’AI (Laravel Boost)

Laravel Boost è un server MCP di prima parte. Si integra con editor AI come Claude Code, Cursor, OpenCode, Gemini e VS Code e con lo slash command /upgrade-laravel-v13 puoi semi-automatizzare l’aggiornamento.
composer require laravel/boost:^2.0 --dev

Aggiunta di contratti

Sono stati aggiunti nuovi metodi ai seguenti contract:
ContractMetodi aggiunti
Bus\DispatcherdispatchAfterResponse
Routing\ResponseFactoryeventStream (supporto SSE)
Auth\MustVerifyEmailmarkEmailAsUnverified
Queue\QueuependingSize, delayedSize, reservedSize, creationTimeOfOldestPendingJob
Cache\Store / Cache\Repositorytouch

Conclusioni

Laravel 13 è una release da “pochi breaking change, molte nuove funzionalità”. Il lavoro di aggiornamento è minimo, ma in particolare AI SDK e ricerca semantica hanno il potenziale di cambiare il modo in cui si sviluppano le applicazioni moderne. Quando sei pronto ad aggiornare la tua applicazione esistente da Laravel 12 a 13, fai riferimento alla guida dettagliata seguente.

Guida all'aggiornamento da Laravel 12 a 13

Trovi l’elenco dei breaking change e la procedura di aggiornamento passo passo.
Ultima modifica il 13 luglio 2026