Laravel 13: What’s New and Should You Upgrade?
Released in March 2026, Laravel 13 focuses on modern PHP features, developer ergonomics, and native AI integration while maintaining zero breaking application-level changes.
Unlike major architectural upgrades of the past (like Laravel 11's slimmed-down skeleton), Laravel 13 allows developers to adopt new features at their own pace without forcing code rewrites.
What’s New in Laravel 13?
1. First-Class PHP 8 Attributes for Models and Classes
You no longer need to declare a wall of protected property arrays at the top of your Eloquent models. Laravel 13 introduces native PHP 8 attributes across 15+ framework locations, including models, jobs, console commands, and mailables.
use Illuminate\Database\Eloquent\Attributes\Table;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Hidden;
#[Table('users')]
#[Fillable(['name', 'email'])]
#[Hidden(['password'])]
class User extends Model {}
2. Native AI SDK & Semantic Vector Search
The Laravel AI SDK is now officially stable and integrated directly into the core framework. It provides a provider-agnostic interface for OpenAI, Anthropic, Ollama, and vector database integrations.
// Vector similarity search directly in Eloquent / Query Builder
$documents = DB::table('documents')
->whereVectorSimilarTo('embedding', 'Best cafes with fast Wi-Fi in London')
->limit(5)
->get();
3. Cache::touch() — Extend Expiry Without Fetching
In high-concurrency systems, extending a cache key's TTL previously meant fetching the value and writing it back to memory. Cache::touch() extends TTL in a single operation:
// Extends TTL directly via Redis EXPIRE / Memcached TOUCH in 1 call
Cache::touch('user_session:123', now()->addMinutes(30));
4. Built-in Passkey (WebAuthn) Support
Passkeys are now natively supported in Laravel Fortify and starter kits out of the box. Users can log in using biometric authentication (Touch ID, Face ID, Windows Hello) or physical hardware keys without third-party packages.
5. Centralized Queue Routing by Class
Instead of hardcoding connection and queue names directly inside job classes or dispatch logic, you can define infrastructure routing centrally:
use App\Jobs\ProcessVideo;
use Illuminate\Support\Facades\Queue;
public function boot(): void
{
Queue::route(ProcessVideo::class, connection: 'redis', queue: 'exports');
}
Minimum System Requirements
-
PHP Version
PHP 8.3+ is strictly required. Laravel 13 drops support for PHP 8.2.
-
Support Timeline
Receives active bug fixes through Q3 2027 and security updates through Q1 2028.
Should You Upgrade?
✅ Upgrade Immediately If:
-
You are already running PHP 8.3 or PHP 8.4
The upgrade path from Laravel 12 to 13 takes under 15 minutes via composer updates or automated services like Laravel Shift.
-
You are building AI-driven features or LLM integrations
The first-party AI SDK and native vector query methods reduce boilerplate significantly.
-
You want native Passkeys
Adding passwordless authentication to your web application requires zero external library maintenance.
⏸️ Hold Off Briefly If:
-
Your infrastructure is locked to PHP 8.2
You must first upgrade your production servers or Docker base images to PHP 8.3.
-
You are running Laravel 12 on a tight deadline
Laravel 12 remains supported for bug fixes through August 2026 and security updates through February 2027. You can upgrade at a more convenient time.