Laravel 13.26.0, publicada el 18 de agosto de 2026, concentra casi todas sus novedades en la capa de colas. Un evento de liberación de trabajos, un método de reenvío entre colas y la extensión del debounce a los listeners encolados forman el núcleo de esta entrega semanal, mientras que el parche 13.26.1, salido unas horas después, revierte una adición considerada prematura.
Qué cambia la versión 13.26
La rama 13.x, abierta el 17 de marzo de 2026, mantiene su ritmo de publicación semanal. La 13.26.0 no rompe ninguna API, pero densifica la capa de procesamiento asíncrono: la que sostiene el envío de correos, los tratamientos por lotes y las integraciones de terceros en la mayoría de aplicaciones en producción.
Las incorporaciones se reparten entre la gestión de colas, el ORM Eloquent y la compatibilidad del ecosistema. La tabla siguiente resume las entradas más estructurales del changelog oficial.
| Incorporación | Ámbito | Para qué sirve |
|---|---|---|
Queue::forward() | Colas | Redirigir trabajos de una cola a otra cola o conexión sin tocar el código de despacho |
| Listeners con debounce | Eventos | Extender el atributo DebounceFor, ya disponible en los trabajos, a los listeners encolados |
Evento JobReleased | Worker | Reaccionar cuando un trabajo vuelve a la cola, con la excepción adjunta si el fallo fue capturado |
managedQueues() | Cloud queue | Declarar las colas gestionadas del lado de la infraestructura de Laravel Cloud |
Enums en inOrderOf() | Eloquent | Ordenar un resultado según una enumeración en lugar de una lista de cadenas |
| Soporte de Guzzle 8 | Ecosistema | Alinear el cliente HTTP con la última versión mayor de la librería |
Queue::forward, redirigir sin tocar el despacho
El método Queue::forward() responde a una necesidad recurrente de los equipos que reorganizan su infraestructura de colas. Hasta ahora, cambiar la cola de destino de un trabajo obligaba a retocar cada punto de despacho o a introducir una capa de enrutado propia. El nuevo método traslada esa decisión a un único lugar.
use Illuminate\Support\Facades\Queue;
// Redirigir una cola hacia una cola FIFO en una conexión SQS
Queue::forward('reports', 'reports.fifo', 'sqs');
// Reenviar varias colas de una sola pasada
Queue::forward([
'reports' => 'reports.fifo',
'emails' => 'emails.fifo',
], connection: 'sqs');La ventaja es desacoplar la topología de las colas del código de negocio. Una migración de Redis a SQS, o la introducción de una cola FIFO para garantizar el orden, se gobierna desde la configuración de reenvío, sin redesplegar los servicios emisores.
Mover un trabajo de una cola a otra no debería obligar a reabrir el código que lo emite.
Listeners con debounce y evento de liberación
El debounce de trabajos existía desde la 13.6.0 mediante el atributo DebounceFor: cuando un mismo evento se dispara en ráfaga para un recurso dado, solo se procesa la última instancia dentro de la ventana definida. La 13.26 extiende ese comportamiento a los listeners encolados, lo que cubre los casos en que la lógica reactiva vive en un listener y no en un trabajo dedicado.
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
{
// Se ejecuta una vez por producto y ventana de 30 s
}
}En paralelo, el evento JobReleased añadido al worker permite observar las devoluciones a la cola. Cuando un trabajo falla, es capturado por un catch() y luego liberado de nuevo, la excepción queda ahora adjunta al evento, lo que facilita la instrumentación y el seguimiento de los reintentos.
Punto de atención. La 13.26.1, publicada el mismo día, revierte la incorporación de orWhereKey y orWhereKeyNot al constructor de Eloquent. Fijar la 13.26.1 en lugar de la 13.26.0 evita construir sobre un método retirado pocas horas después de aparecer.
Un parche el mismo día
La secuencia 13.26.0 y luego 13.26.1 en una misma jornada ilustra la mecánica de la rama actual: las incorporaciones llegan rápido, y algunas se van igual de rápido cuando aparece un caso límite. Para un proyecto en producción la regla se mantiene: seguir las versiones de parche y leer el changelog antes de subir de versión, en lugar de automatizar una actualización ciega hacia la última etiqueta publicada.
Lo esencial
Queue::forward()centraliza el reenvío de trabajos entre colas y conexiones.- El debounce se aplica ahora a los listeners encolados, no solo a los trabajos.
- El evento
JobReleasedhace observables las devoluciones a la cola, excepción incluida. - La 13.26.1 anula la incorporación de
orWhereKey: apuntar a esa versión de parche.
En mis proyectos, la parte que más se rompe en producción nunca es el controlador: es la cola. Un trabajo que se repite en bucle, un mismo evento tratado diez veces seguidas. El debounce de listeners y el evento JobReleased van justo en la dirección de lo que yo apañaba a mano. El reenvío lo espero sobre todo para las migraciones de alojamiento, donde tocar el código de despacho siempre da miedo. — Simon Janvier
Para profundizar
Notas de versión oficiales: laravel/framework v13.26.0 en GitHub.
