Laravel 13.34.0
Laravel 13.34.0 shipped on September 29, 2026. I pulled this release into a pair of production queue and ORM codebases so you do not have to. Verdict up front: this is a polish release, heavy on queue, collection and cache fixes, and it patches several genuinely annoying edge cases. Safe to upgrade.
Queue and Worker Improvements
Queue handling gets the most attention in 13.34.0. The JobProcessed event now carries the job's processing duration, and jobs can be notified when a timeout is about to occur, so long-running workers get a heads up before the limit hits. A new --queue option on queue:flush targets a specific queue instead of clearing everything at once. Worker crashes now count towards maxExceptions, and queue:restart shows a clear error when the worker cannot actually be restarted. Enums are allowed in Queue::isPaused().
Collections, Numbers and Translation Fixes
Several longstanding number bugs are gone. Number::parseInt() no longer returns false for values above the 32-bit range, and Number::format(), percentage() and currency() stop returning "-0" for tiny negatives. Collection::mode() no longer invents values that are not in the data when nulls are present, sortBy() with multiple columns and SORT_NUMERIC no longer truncates fractional values, and shift($count) correctly returns an empty collection when the collection is empty. LazyCollection::combine() now throws a ValueError when the two lengths do not match. trans_choice() also picks the right plural form for negative numbers again.
Eloquent and Database Housekeeping
whereMorphedTo and whereNotMorphedTo now respect the relation's owner key, and morph maps are enforced on the read side of polymorphic relations. findOrFail() handles arrays of enum ids, and a double negation in Eloquent whereNot() with array conditions is fixed. DatabaseLock no longer swallows deadlocks inside a transaction, the schema builder gains a getColumn() method, and fixes landed for wherePivotBetween() being ignored by sync(), detach() and updateExistingPivot(), as well as for through() returning HasOneThrough on MorphMany relations.
Cache, Storage and Misc
Memcached locks longer than 30 days no longer expire immediately, and Redis throttling stops returning a timestamp as the remaining attempts count. Named S3 credential providers and Cloud IAM disks are now supported, and multipart requests keep their attached stream contents across retries. assertDatabaseCount accepts an array, enums work in environment checks, dotted keys are treated literally in ArrayStore::touch(), and report files now include a mime type in the details.
Bottom line: update. There are no breaking changes here, just a long tail of correctness fixes.