Laravel 13 est là : les nouveautés qui comptent vraiment pour vos projets
Laravel poursuit son rythme de publication annuel et la version 13 est arrivée le 17 mars 2026. Bonne nouvelle pour tout le monde : cette mouture mise sur la continuité plutôt que sur la rupture. Les changements cassants restent minimes et la plupart des applications peuvent migrer en moins d’une journée. Pourtant, sous le capot, Laravel 13 apporte des capacités franchement nouvelles, à commencer par une couche d’intelligence artificielle intégrée nativement au framework.
Que vous codiez depuis dix ans ou que vous veniez tout juste de découvrir l’écosystème, voici un tour d’horizon clair des nouveautés, avec un exemple concret pour chacune.
Une montée de version sans douleur
L’équipe de Laravel a fait un choix assumé : livrer des améliorations en continu tout au long de l’année plutôt que d’accumuler les ruptures pour une grande version. Résultat, passer de Laravel 12 à Laravel 13 demande très peu de travail sur le code existant. La plupart des projets se mettent à jour sans toucher à grand chose.
La version exige désormais PHP 8.3 au minimum et prend en charge PHP jusqu’à la 8.5. Voici le calendrier de support officiel.
| Version | PHP | Sortie | Corrections de bugs | Correctifs de sécurité |
|---|---|---|---|---|
| 13 | 8.3 à 8.5 | 17 mars 2026 | 3e trimestre 2027 | 17 mars 2028 |
| 12 | 8.2 à 8.5 | 24 février 2025 | 13 août 2026 | 24 février 2027 |
| 11 | 8.2 à 8.4 | 12 mars 2024 | 3 septembre 2025 | 12 mars 2026 |
Pour les juniors : retenez surtout deux choses. D’abord, vérifiez votre version de PHP avec
php -vavant de migrer. Ensuite, le calendrier de support vous indique jusqu’à quand une version reçoit des correctifs de sécurité. Rester sur une version supportée n’est pas un détail, c’est une question de sécurité pour votre site en production.
Le Laravel AI SDK, la grande annonce
C’est le morceau de choix de cette version. Laravel embarque désormais un SDK d’intelligence artificielle maison, le Laravel AI SDK. Il offre une API unifiée pour la génération de texte, les agents capables d’appeler des outils, les embeddings, l’audio, les images et l’intégration de bases vectorielles.
Son principal atout : il reste indépendant du fournisseur. Il fonctionne avec OpenAI comme avec Anthropic, et basculer de l’un à l’autre se résume à changer une seule valeur de configuration plutôt qu’à réécrire votre code. Vous gardez ainsi une expérience cohérente, dans le pur style Laravel.
Interroger un agent tient en un appel.
use AppAiAgentsSalesCoach;
$response = SalesCoach::make()->prompt('Analyse cette transcription commerciale...');
return (string) $response;
Le SDK génère aussi des images à partir d’une simple description en langage naturel.
use LaravelAiImage;
$image = Image::of('Un donut posé sur le plan de travail de la cuisine')->generate();
$rawContent = (string) $image;
Même logique pour la synthèse vocale, pratique pour des assistants, des narrations ou des fonctions d’accessibilité.
use LaravelAiAudio;
$audio = Audio::of("J'adore coder avec Laravel.")->generate();
$rawContent = (string) $audio;
Enfin, vous produisez des embeddings directement depuis une chaîne de caractères, brique de base de la recherche sémantique.
use IlluminateSupportStr;
$embeddings = Str::of('La vallée de Napa produit de grands vins.')->toEmbeddings();
Pour les seniors : l’approche indépendante du fournisseur évite le verrouillage technologique. Vous prototypez sur un modèle puis basculez en production sur un autre sans dette technique. À surveiller : la gestion des coûts par appel et la mise en cache des réponses, qui restent de votre ressort.
Recherche sémantique et vectorielle native
Dans la continuité du SDK, Laravel 13 approfondit la recherche sémantique avec un support natif des requêtes vectorielles. En vous appuyant sur PostgreSQL et l’extension pgvector, vous lancez une recherche par similarité directement depuis le query builder, sans librairie tierce.
$documents = DB::table('documents')
->whereVectorSimilarTo('embedding', 'Meilleurs domaines viticoles de la vallée de Napa')
->limit(10)
->get();
Concrètement, vous combinez la génération d’embeddings vue plus haut et cette clause de similarité pour construire une vraie recherche par le sens, et non plus par simple correspondance de mots clés.
Des ressources JSON:API natives
Laravel propose maintenant des ressources JSON:API en standard. Elles prennent en charge la sérialisation des objets, l’inclusion des relations, les jeux de champs partiels (sparse fieldsets), les liens et les en têtes de réponse conformes à la spécification.
Pour qui construit une API consommée par plusieurs clients, c’est un gain de temps réel. Vous n’avez plus à réinventer le formatage des réponses ni à coller à la spécification à la main. Le framework s’en charge et garantit la conformité.
Le routage des files d’attente
Nouveauté très pratique côté infrastructure : le routage des jobs par classe grâce à Queue::route(). Vous définissez en un seul endroit, en général dans un service provider, la connexion et la file utilisées par chaque type de job.
Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
L’intérêt est net : vous séparez les préoccupations d’infrastructure de la logique métier. Changer la topologie de vos files ne demande plus de toucher à chaque classe de job.
Les attributs PHP gagnent du terrain
Laravel 13 étend largement l’usage des attributs PHP 8 à travers le framework. L’idée est de rendre la configuration plus déclarative en la plaçant directement sur vos classes et vos méthodes. Parmi les ajouts notables : #[Middleware] et #[Authorize] côté contrôleurs, ainsi que #[Tries], #[Backoff], #[Timeout] et #[FailOnTimeout] côté jobs.
Voici un contrôleur dont le middleware et le contrôle d’autorisation sont déclarés par attributs.
<?php
namespace AppHttpControllers;
use AppModelsComment;
use AppModelsPost;
use IlluminateRoutingAttributesControllersAuthorize;
use IlluminateRoutingAttributesControllersMiddleware;
#[Middleware('auth')]
class CommentController
{
#[Middleware('subscribed')]
#[Authorize('create', [Comment::class, 'post'])]
public function store(Post $post)
{
// votre logique ici
}
}
Les attributs touchent aussi Eloquent. Vous configurez un modèle sans surcharger de propriétés.
#[Table('users', key: 'user_id', keyType: 'string', incrementing: false)]
#[Hidden(['password'])]
#[Fillable(['name', 'email'])]
class User extends Model {}
Pour les juniors : un attribut est cette annotation entre crochets juste au dessus d’une classe ou d’une méthode. Bonne nouvelle, rien ne vous oblige à les adopter tout de suite. L’ancienne façon de faire, avec des propriétés et des méthodes, continue de fonctionner. C’est un changement non cassant : vous migrez à votre rythme.
Cache::touch, un petit plus appréciable
La méthode Cache::touch() permet de prolonger la durée de vie d’un élément en cache sans avoir à le récupérer puis à le réenregistrer. La méthode renvoie true en cas de succès, ou false si la clé n’existe pas.
// Prolonge le TTL de 3600 secondes sans lire la valeur
Cache::touch('rapport_du_jour', 3600);
Sécurité renforcée
La protection contre la falsification de requêtes a été retravaillée et formalisée sous la forme du middleware PreventRequestForgery. Il ajoute une vérification basée sur l’origine de la requête tout en restant compatible avec la protection CSRF par jeton que vous connaissez déjà. Une couche de sécurité supplémentaire, sans casser l’existant.
Quand passer à Laravel 13 ?
Pour la grande majorité des projets, la réponse est oui. La promesse de Laravel 13 est claire : peu de changements cassants, une mise à jour rapide, et l’accès immédiat à des briques modernes comme le SDK d’intelligence artificielle et la recherche vectorielle.
Si vous débutez, profitez en pour démarrer directement sur Laravel 13 : vous bénéficiez du support le plus long et des dernières bonnes pratiques. Si vous gérez une application en production, planifiez la montée de version sereinement, testez sur un environnement de préproduction, puis explorez les nouveautés une par une selon vos besoins réels. Inutile de tout adopter d’un coup.
Sources : documentation officielle Laravel (laravel.com/docs/13.x/releases) et Laravel News (laravel-news.com/laravel-13).
Partager cet article