Released on October 13, Laravel 13.36.0 bundles around fifty changes across queues, storage
and Eloquent. No breaking changes are announced, but several fixes touch behavior teams have
reported in production for months, notably queue workers that got stuck with no exit code an
orchestrator could act on.
More predictable queue workers
The most awaited fix concerns the exit code of workers that hit their timeout: it used to be
silently swallowed, which kept Supervisor or systemd from detecting a stuck worker and restarting
it. Workers can now also flush sticky connections between jobs instead of holding them open until
the process stops, which limits connection leaks on high-throughput queues.
S3 storage and named credential providers
The S3 driver now supports multiple named credential providers within the same project, useful
for applications writing to several accounts or regions, along with Cloud IAM disks for
environments where key rotation is managed outside the codebase. The change fits a broader trend
in the framework: pushing secret management further into infrastructure rather than the
.env file.
Eloquent: narrow but numerous fixes
The most structural fix touches morph map alias resolution in constrain(),
morphWith() and loadMorph(): declared aliases weren’t always honored,
forcing some projects to fall back on the full class name as a workaround. touch()
now works correctly on HasOneOrManyThrough relations, and
Schema::getColumn() becomes case-insensitive, avoiding false negatives on certain
database engines.
| Area | Before 13.36.0 | Since 13.36.0 |
|---|---|---|
| Stuck workers | Exit code swallowed, undetected | Exit code usable by the orchestrator |
| Sticky connections | Held until the worker stops | Flushed between jobs |
| S3 credentials | A single default provider | Multiple named providers + IAM disks |
| Redis cluster | phpredis client stuck if no node reachable | Client rebuilt automatically |
| Tests (Prompts) | Memory leak on long suites | Leak fixed |
Redis, notifications and a test-suite memory leak
On the Redis side, the phpredis client is now rebuilt automatically when no cluster node is
reachable, instead of staying stuck. Notifications fix a defect where
Notification::locale() could bleed into an unrelated following notification. Finally,
a memory leak caused by the Prompts component affected long test suites, a problem some teams
worked around by splitting their CI pipelines — a workaround that is no longer necessary.
// config/queue.php — new in 13.36: background connection by default
'connections' => [
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
'after_commit' => false,
],
],
The exit code of queue workers, long invisible to monitoring tools, finally becomes something orchestrators can act on.
The Eloquent fixes around morph map aliases deserve a manual check on projects using
enforceMorphMap(): the behavior changes, even though it moves closer to what the
documentation already described.
Strictly speaking the update is minor in terms of versioning, but the volume of fixes — about
fifty pull requests merged in a month — illustrates a release pace that teams automating their
updates through command-line tooling have every reason to track closely rather than let pile up.
Key takeaways
Laravel 13.36.0 changes nothing in the framework’s public API but closes real operational blind
spots: worker supervision, S3 credential rotation and Redis cluster stability. Projects running
high-volume queues should upgrade promptly; others can wait for their next maintenance window
without urgency.
On the engagements where I supervise Laravel queues in production, the swallowed exit code of
stuck workers has been a source of silent incidents for months: the worker would crash, Supervisor
wouldn’t restart it, and only a latency alert would reveal the problem. This fix alone justifies
the upgrade. — Simon Janvier
Further reading: the full release notes are available on
the framework’s GitHub repository.
