Laravel 13.26.0, publiée le 18 août 2026, concentre l’essentiel de ses nouveautés sur les files d’attente. Un événement de libération de job, une méthode de réacheminement entre files et l’extension du mécanisme de debounce aux écouteurs forment le cœur de cette livraison hebdomadaire, tandis que le correctif 13.26.1, sorti quelques heures plus tard, revient sur une addition jugée prématurée.
Ce que change la version 13.26
La branche 13.x, ouverte le 17 mars 2026, poursuit son rythme de publication hebdomadaire. La 13.26.0 n’introduit pas de rupture d’API, mais elle densifie la couche de traitement asynchrone, celle qui porte les envois d’e-mails, les traitements par lots et les intégrations tierces de la plupart des applications en production.
Les ajouts se répartissent entre la gestion des files, l’ORM Eloquent et la compatibilité de l’écosystème. Le tableau ci-dessous récapitule les entrées les plus structurantes du changelog officiel.
| Ajout | Domaine | Ce que cela permet |
|---|---|---|
Queue::forward() | Files d’attente | Rediriger des jobs d’une file vers une autre file ou connexion sans modifier le code de dispatch |
| Écouteurs debounce | Événements | Étendre l’attribut DebounceFor, déjà disponible sur les jobs, aux écouteurs mis en file |
Événement JobReleased | Worker | Réagir lorsqu’un job est remis en file, avec l’exception attachée en cas d’échec capté |
managedQueues() | Cloud queue | Déclarer les files gérées côté infrastructure Laravel Cloud |
Enums dans inOrderOf() | Eloquent | Ordonner un résultat selon une énumération plutôt qu’une liste de chaînes |
| Support de Guzzle 8 | Écosystème | Aligner le client HTTP sur la dernière majeure de la librairie |
Queue::forward, réacheminer sans toucher au dispatch
La méthode Queue::forward() répond à un besoin récurrent des équipes qui font évoluer leur infrastructure de files. Jusqu’ici, changer la file de destination d’un job impliquait de retoucher chaque point de dispatch ou d’introduire une couche d’aiguillage maison. La nouvelle méthode déplace cette décision vers un seul endroit.
use Illuminate\Support\Facades\Queue;
// Rediriger une file vers une file FIFO sur une connexion SQS
Queue::forward('reports', 'reports.fifo', 'sqs');
// Réacheminer plusieurs files en une passe
Queue::forward([
'reports' => 'reports.fifo',
'emails' => 'emails.fifo',
], connection: 'sqs');L’intérêt est de dissocier la topologie des files du code métier. Une migration de Redis vers SQS, ou l’introduction d’une file FIFO pour garantir l’ordre, se pilote alors depuis la configuration du réacheminement, sans redéploiement des services émetteurs.
Déplacer la destination d’un job d’une file vers une autre ne devrait pas obliger à rouvrir le code qui l’émet.
Écouteurs debounce et événement de libération
Le debounce de jobs existait depuis la 13.6.0 via l’attribut DebounceFor : lorsqu’un même événement est déclenché en rafale pour une ressource donnée, seule la dernière instance est traitée dans la fenêtre définie. La 13.26 étend ce comportement aux écouteurs mis en file, ce qui couvre les cas où la logique réactive vit dans un listener plutôt que dans un job dédié.
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\Attributes\DebounceFor;
class SyncSearchIndex implements ShouldQueue
{
#[DebounceFor(seconds: 30, using: ['product'])]
public function handle(ProductUpdated $event): void
{
// Ne s'exécute qu'une fois par produit et par fenêtre de 30 s
}
}En parallèle, l’événement JobReleased ajouté au worker permet d’observer les remises en file. Lorsqu’un job échoue, est capté par un catch() puis relibéré, l’exception est désormais rattachée à l’événement, ce qui facilite l’instrumentation et le suivi des reprises.
Point de vigilance. La 13.26.1, publiée le même jour, revient sur l’ajout de orWhereKey et orWhereKeyNot au constructeur Eloquent. Épingler la 13.26.1 plutôt que la 13.26.0 évite de bâtir sur une méthode retirée quelques heures après son introduction.
Un correctif le jour même
La séquence 13.26.0 puis 13.26.1 dans la même journée illustre la mécanique de la branche courante : les additions arrivent vite, et certaines repartent tout aussi vite quand un cas limite apparaît. Pour un projet en production, la règle reste de suivre les correctifs de patch et de lire le changelog avant de monter de version, plutôt que d’automatiser une mise à jour aveugle sur la dernière étiquette publiée.
Ce qu’il faut retenir
Queue::forward()centralise le réacheminement des jobs entre files et connexions.- Le debounce s’applique désormais aux écouteurs mis en file, pas seulement aux jobs.
- L’événement
JobReleasedrend observables les remises en file, exception comprise. - La 13.26.1 annule l’ajout de
orWhereKey: viser cette version de patch.
Sur mes projets, la partie qui casse le plus souvent en production, ce n’est pas le contrôleur, c’est la file d’attente : un job qui se rejoue en boucle, un même événement traité dix fois d’affilée. Le debounce d’écouteurs et l’événement JobReleased vont exactement dans le sens de ce que je bricolais à la main jusqu’ici. Le réacheminement, je l’attends surtout pour les migrations d’hébergement, là où toucher au code de dispatch fait toujours peur. — Simon Janvier
Pour aller plus loin
Notes de version officielles : laravel/framework v13.26.0 sur GitHub.
