Skip to content

Mercure Broadcasting in Laravel 13.32

Laravel 13.32 ships a native Mercure broadcast driver using SSE, new copyToDisk() and moveToDisk() filesystem helpers, and enum support in queue pause and resume methods.

Published · Updated · 3 min read

Mercure Broadcasting in Laravel 13.32

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() returning false when a closure matches a null value.
  • 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 SessionHandlerInterface implementation 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

Frequently asked questions

What is the Mercure broadcast driver in Laravel 13.32 and how does it differ from WebSockets?

The Mercure broadcast driver uses Server-Sent Events (SSE) instead of WebSockets to push real-time updates to clients. It integrates with the Mercure protocol and supports presence channels as well as end-to-end encrypted private channels. When using FrankenPHP, no additional URL or secret configuration is needed because FrankenPHP includes a built-in Mercure hub.

How do copyToDisk() and moveToDisk() work in Laravel 13.32?

Both methods are added to FilesystemAdapter and let you transfer files between storage disks without manually managing read and write streams. `copyToDisk()` retains the original file on the source disk, while `moveToDisk()` deletes it after copying. You can also pass an optional destination path as a third argument, and a follow-up PR allows passing a filesystem instance instead of a disk name string.

Can I use PHP enums when pausing or resuming queues in Laravel 13.32?

Yes. Laravel 13.32 adds enum support to Queue::pause(), Queue::resume(), and Queue::pauseFor(), so you can pass backed enum cases for both the queue name and connection name instead of plain strings. This aligns with enum support already available elsewhere in the queue API.

Mohamed Said

About the author

Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

About GitHub LinkedIn WhatsApp Email Address My CV

Have a technical challenge?

Tell me what you’re building. I reply within two working days.

Discuss your project