What's New in Laravel 13.32
The Laravel team released v13.32.0 on September 16, 2026, headlined by a native Mercure broadcast driver. The release also includes ergonomic filesystem helpers and expanded enum support in the queue system.
Mercure Broadcast Driver
Contributed by Kévin Dunglas, the new mercure broadcast driver brings first-class support for Mercure — a real-time protocol built on Server-Sent Events (SSE) rather than WebSockets.
Configure it in config/broadcasting.php:
'mercure' => [
'driver' => 'mercure',
'url' => env('MERCURE_URL'),
'public_url' => env('MERCURE_PUBLIC_URL'),
'secret' => env('MERCURE_JWT_SECRET'),
'encryption_key' => env('MERCURE_ENCRYPTION_KEY'),
],
When running on FrankenPHP, the built-in Mercure hub requires no url or secret configuration at all. The driver supports presence channels and end-to-end encrypted private-encrypted-* channels. A companion Laravel Echo patch adds the necessary client-side support.
Installer support was also added via #61587, so you can scaffold Mercure through the broadcasting install command.
Storage copyToDisk() and moveToDisk()
Contributed by Jack Bayliss, these two new methods on FilesystemAdapter eliminate the boilerplate read-stream-then-write-stream pattern when transferring files between disks.
// Copy to the backup disk, keeping the original
Storage::disk('local')->copyToDisk('backup', 'reports/report.csv');
// Move to the backup disk, deleting the original
Storage::disk('local')->moveToDisk('backup', 'reports/report.csv');
// Specify a different destination path
Storage::disk('local')->copyToDisk('s3', 'reports/report.csv', '2026/report.csv');
A follow-up PR (#61519) also lets you pass a filesystem instance directly instead of a disk name string, giving you more flexibility when working with dynamically configured disks.
Enums in Queue Pause and Resume
Also contributed by Jack Bayliss, Queue::pause(), Queue::resume(), and Queue::pauseFor() now accept PHP enums for queue and connection names — consistent with enum support already available on job attributes and manager methods like route() and forward().
Queue::pause(Queues::notifications, Connections::Redis);
Queue::resume(Queues::notifications, Connections::Redis);
Queue::pauseFor(Queues::notifications, Connections::Redis, 60);
Other Notable Fixes and Improvements
The full changelog includes a range of bug fixes and refinements:
- Fixed
containsStrict()returningfalsewhen a closure matches anullvalue. - Fixed
Str::password()returning extra characters that caused validation errors. - Fixed
Str::camel()not lowercasing multibyte first characters. - Fixed
collapseWithKeys()crashing when the outer collection has string keys. - Fixed Redis tagged cache not syncing tag entry expiration on
touch. - Added missing
SessionHandlerInterfaceimplementation for PHP 9. - Improved collection return types for mutating methods.
Key Takeaways
- Mercure driver brings SSE-based real-time broadcasting natively to Laravel, with FrankenPHP zero-config support.
copyToDisk()/moveToDisk()simplify cross-disk file operations with an optional destination path argument.- Enum support in queue pause/resume methods improves type safety and consistency across the queue API.
- Several collection, string, and cache bug fixes improve reliability across the framework.
Source: Laravel News — Mercure Broadcasting in Laravel 13.32