Laravel 13.26.0
I spent the morning pulling Laravel 13.26.0 into a couple of existing apps — one queue-heavy API, one plain CRUD admin — and the verdict landed fast: this is a queue-and-Redis release disguised as a routine patch. Update now.
The Worth-It Verdict
If you run queues, Redis clusters, or process pools in production, 13.26.0 fixes things you have probably already felt. If you don't, there's still a genuinely fun new filesystem feature waiting. Either way: update now.
New Toys I Actually Used
- Read-through filesystems — Taylor Otwell's addition lets a filesystem fall back to a remote source and cache locally. I wired S3 behind local disk in about ten lines, with an option to skip the copy.
Queue::forward()— a first-class way to push a job forward through the pipeline instead of hand-rolling chains.- Debounceable queued listeners — collapsing rapid-fire events into one queued listener run. My webhook endpoint just got quieter.
JobReleasedevent — fired from the worker when a job is released; I hooked it straight into my dead-letter alerting.managedQueues()— the Cloud queue now exposes its managed queues programmatically.
Eloquent Wins
inOrderOf()now accepts enums, not just scalars.orWhereKey()andorWhereKeyNot()join the builder — no more awkward closures for key-based OR conditions.wherePivot()/orWherePivot()accept closures for complex pivot constraints.
The Redis Cluster Grind
Multiple fixes target Redis cluster pain: the infinite scan loop when pruning stale cache tags is gone, the phpredis client rebuilds itself after a cluster response error or failed pipeline/transaction (so the connection stays usable), and a connector is passed to PhpRedisClusterConnection so it can rebuild its client. If you have seen mysterious connection-lost cascades, this is your release.
Processes and Testing
Process pools are now iterable, idle timeouts throw a dedicated exception, and there are fake assertion helpers for process commands — including array command support. db:seed also reports progress when you target a specific class, which I did not know I wanted until I used it.
Fixes Worth Knowing
throwUnless()silently did nothing when handed a closure — fixed.Request::all()preserves input key order when merging files.- Guzzle 8 is supported.
- The
invalidation rule can't be bypassed via loose comparison. - MySQL 9.7 (LTS) is now in the test matrix — good sign for the road ahead.
Bottom line: 13.26.0 is safe, fast to adopt, and fixes the kind of cluster failures that wake you up at 3 a.m. Run composer update laravel/framework and move on with your day.