Laravel 13 vient de sortir et cette release marque un vrai tournant pour le framework. Taylor Otwell et son équipe ne se sont pas contentés d'itérer, ils ont posé les fondations d'un framework pensé pour l'ère de l'intelligence artificielle, tout en gardant l'élégance et la simplicité qui font la force de Laravel depuis le début.
Voici un tour d'horizon complet de ce qui change.
PHP 8.3 minimum
Laravel 13 abandonne le support de PHP 8.2. La version minimale requise est désormais PHP 8.3, ce qui permet au framework de tirer parti des dernières fonctionnalités du langage (typed class constants, json_validate(), #[\Override], etc.).
Côté support :
- Corrections de bugs jusqu'au Q3 2027
- Correctifs de sécurité jusqu'au Q1 2028
Laravel AI SDK — Le gros morceau
C'est LA nouveauté phare de cette release. Laravel propose maintenant un SDK IA first-party qui unifie l'accès à la génération de texte, les agents avec appel d'outils (tool-calling), les embeddings, l'audio, les images et les vector stores.
L'idée est simple : une API unique, agnostique du provider (OpenAI, Anthropic, etc.), avec une expérience 100% Laravel.
Agents
1use App\Ai\Agents\SalesCoach;23$response = SalesCoach::make()->prompt('Analyse cette transcription de vente...');45return (string) $response;1use App\Ai\Agents\SalesCoach;23$response = SalesCoach::make()->prompt('Analyse cette transcription de vente...');45return (string) $response;
Génération d'images
1use Laravel\Ai\Image;23$image = Image::of('Un croissant posé sur le comptoir d\'une boulangerie')->generate();45$rawContent = (string) $image;1use Laravel\Ai\Image;23$image = Image::of('Un croissant posé sur le comptoir d\'une boulangerie')->generate();45$rawContent = (string) $image;
Synthèse audio
1use Laravel\Ai\Audio;23$audio = Audio::of('J\'adore coder avec Laravel.')->generate();45$rawContent = (string) $audio;1use Laravel\Ai\Audio;23$audio = Audio::of('J\'adore coder avec Laravel.')->generate();45$rawContent = (string) $audio;
Embeddings
1use Illuminate\Support\Str;23$embeddings = Str::of('Les meilleurs cafés de Douala.')->toEmbeddings();1use Illuminate\Support\Str;23$embeddings = Str::of('Les meilleurs cafés de Douala.')->toEmbeddings();
C'est propre, c'est expressif, et ça s'intègre parfaitement dans l'écosystème. On n'a plus besoin de packages tiers pour faire de l'IA dans Laravel.
Recherche sémantique / vectorielle
Dans la continuité du AI SDK, Laravel 13 ajoute un support natif des requêtes vectorielles via PostgreSQL et pgvector. On peut désormais faire de la recherche par similarité directement depuis le query builder :
1$documents = DB::table('documents')2 ->whereVectorSimilarTo('embedding', 'Meilleurs restaurants à Yaoundé')3 ->limit(10)4 ->get();1$documents = DB::table('documents')2 ->whereVectorSimilarTo('embedding', 'Meilleurs restaurants à Yaoundé')3 ->limit(10)4 ->get();
Combiné avec les embeddings du AI SDK, ça permet de construire des expériences de recherche alimentées par l'IA sans quitter l'écosystème Laravel. Pour ceux qui travaillent sur des projets de type RAG (Retrieval-Augmented Generation), c'est un game changer.
JSON:API Resources
Laravel intègre maintenant des ressources JSON:API first-party. Plus besoin de spatie/laravel-json-api ou d'autres packages pour être conforme à la spécification JSON:API.
Le support inclut :
- Sérialisation des objets ressource
- Inclusion des relations
- Sparse fieldsets
- Liens
- Headers de réponse conformes JSON:API
Pour ceux qui construisent des API publiques ou qui travaillent avec des frontends type Ember.js ou des clients JSON:API, c'est une excellente nouvelle.
PHP Attributes partout
Laravel 13 pousse encore plus loin le support des PHP Attributes à travers le framework. On parle de 15+ emplacements supportés, incluant les modèles, les jobs, les commandes console, et maintenant les contrôleurs.
Middleware et autorisation sur les contrôleurs
1<?php23namespace App\Http\Controllers;45use App\Models\Comment;6use App\Models\Post;7use Illuminate\Routing\Attributes\Controllers\Authorize;8use Illuminate\Routing\Attributes\Controllers\Middleware;910#[Middleware('auth')]11class CommentController12{13 #[Middleware('subscribed')]14 #[Authorize('create', [Comment::class, 'post'])]15 public function store(Post $post)16 {17 // ...18 }19}1<?php23namespace App\Http\Controllers;45use App\Models\Comment;6use App\Models\Post;7use Illuminate\Routing\Attributes\Controllers\Authorize;8use Illuminate\Routing\Attributes\Controllers\Middleware;910#[Middleware('auth')]11class CommentController12{13 #[Middleware('subscribed')]14 #[Authorize('create', [Comment::class, 'post'])]15 public function store(Post $post)16 {17 // ...18 }19}
Attributs pour les jobs
Les jobs bénéficient aussi d'attributs dédiés : #[Tries], #[Backoff], #[Timeout], #[FailOnTimeout]. Plus besoin de propriétés sur la classe, tout est déclaratif et colocalisé.
La compatibilité ascendante est maintenue — les propriétés classiques continuent de fonctionner.
Queue Routing
Nouvelle fonctionnalité bien pratique : le routage de queues par classe. On peut maintenant définir la connexion et la queue par défaut pour un job donné, de manière centralisée :
1Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');1Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
Fini les $connection et $queue éparpillés dans chaque job. On centralise la config, on simplifie la maintenance.
Cache::touch()
Un petit ajout mais très utile : Cache::touch() permet d'étendre le TTL d'un élément en cache sans avoir à le récupérer puis le re-stocker.
1Cache::touch('user:42:session', now()->addMinutes(30));1Cache::touch('user:42:session', now()->addMinutes(30));
Implémenté sur tous les drivers de cache. Simple, efficace.
Protection contre la falsification de requêtes
Le middleware de protection CSRF a été amélioré et formalisé sous le nom PreventRequestForgery. Il ajoute une vérification basée sur l'origine de la requête tout en conservant la compatibilité avec la protection CSRF par token classique.
Mise à jour facilitée
Bonne nouvelle : l'équipe Laravel a mis un point d'honneur à minimiser les breaking changes. La plupart des applications Laravel pourront migrer vers la v13 avec très peu de modifications dans le code applicatif.
Pour ceux qui veulent automatiser la migration, Laravel Shift propose comme toujours un outil dédié.
En résumé
Laravel 13 n'est pas juste une release incrémentale. C'est une déclaration d'intention : Laravel veut être le framework pour construire des applications alimentées par l'IA. Le AI SDK, la recherche vectorielle, les embeddings natifs — tout converge vers cet objectif.
En parallèle, les améliorations DX (attributes, queue routing, cache touch) montrent que l'équipe n'oublie pas les fondamentaux. On construit plus vite, avec moins de boilerplate, et le code reste lisible.
C'est une excellente période pour être développeur Laravel.