The Laravel team released v13.31.0 on September 8, 2026. The headline features are a Queue::totalSize() method and a new JobInterrupted event.

terminal
use Illuminate\Queue\Events\JobInterrupted;

Event::listen(JobInterrupted::class, function (JobInterrupted $event) {
    // Handle the job interruption
});

Jack Bayliss contributed totalSize(), which reports the total number of jobs on a queue connection in a single call. Previously, that figure required summing totalPendingSize(), totalDelayedSize() and totalReservedSize() by hand. The pull request is #61373.

Bayliss also added the JobInterrupted event in PR #61412. It fires when a worker interrupts a job that implements the Interruptible contract, so applications can hook in cleanup or logging. A separate change from the same contributor puts connection and queue names on the existing WorkerStopping event when a worker is killed.

Caleb White added chaperone support to BelongsToMany pivot models in PR #61152. Calling chaperone() on a belongsToMany relation now lets a custom pivot model resolve its BelongsTo relations from the models already hydrated during the BelongsToMany load, without extra database queries. Without a custom pivot model the call is a no-op. Relationship names are guessed automatically but can be overridden with the declaring and related arguments.

The Vite class gained a devServerUrl() method from ramonmalcolm10, useful for building asset URLs against the dev server. The Mail and Notification fakes gained once assertions from talaridisTh: assertSentOnce() and assertQueuedOnce() for Mail, plus assertSentToOnce() and assertSentOnDemandOnce() for Notification, replacing the assertSentTimes(..., 1) style.

The changelog also carries notable fixes. Orrison made the Redis queue driver cluster-safe and added phpredis retry handling for connection resets. A memory leak in the HTTP Client was fixed. Other fixes cover lazy() and lazyById() ignoring limit() and offset(), context propagation to concurrent processes, wherePivot() closure scope, the UsePolicy and UseEloquentBuilder attributes resolving from parent classes, and the ArraySessionHandler missing create_sid() ahead of PHP 9.0. The full diff between v13.30.1 and v13.31.0 is on GitHub.