Laravel 13.25: Pause All Queues &amp; New artisan dev UI | Mohamed Said       [Skip to content](#main)  [ ![](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png) Mohamed SaidLaravel Backend Engineer ](https://www.msaied.com/public) - [Home](https://www.msaied.com/public)
- [Projects](https://www.msaied.com/public/projects)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [About](https://www.msaied.com/public#about)

           [  Contact](https://www.msaied.com/public#contact) Menu 

Menu
----

Close 

 - [HomeStart here](https://www.msaied.com/public)
- [ProjectsCase studies](https://www.msaied.com/public/projects)
- [ArticlesEngineering notes](https://www.msaied.com/public/articles)
- [CertificatesCredentials](https://www.msaied.com/public/certificates)
- [AboutHow I work](https://www.msaied.com/public#about)
- [ContactGet in touch](https://www.msaied.com/public#contact)

  [Start a conversation](https://www.msaied.com/public#contact) [WhatsApp](https://wa.me/201094619204) [Email](mailto:hello@msaied.com) 

 1. [Home](https://www.msaied.com/public)
2. /
3. [Articles](https://www.msaied.com/public/articles)
4. /
5. [Laravel](https://www.msaied.com/public/articles?category=laravel)
6. /
7. Laravel 13.25: Pause All Queues at Once and a New artisan dev Terminal UI

   [Laravel](https://www.msaied.com/public/articles?category=laravel) 

 Laravel 13.25: Pause All Queues at Once and a New artisan dev Terminal UI
==========================================================================

 Laravel 13.25 ships a global queue pause switch, replaces the artisan dev process runner with a tabbed terminal UI via @laravel/multiplex, adds Image::fromStream() and Responsable support, and more.

 ![](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp) [Mohamed Said](https://www.msaied.com/public#person) Published 11 Aug 2026 · Updated 13 Aug 2026 · 4 min read

ShareCopy linkCopied

 ![Laravel 13.25: Pause All Queues at Once and a New artisan dev Terminal UI](https://cdn.msaied.com/542/021fe5b0399ae1b971b6b64e300d1751.png) 

  On this page +1. [What's New in Laravel 13.25](#whats-new-in-laravel-1325)
2. [Pause Every Queue on Every Connection](#pause-every-queue-on-every-connection)
3. [artisan dev Gets a Tabbed Terminal UI](#artisan-dev-gets-a-tabbed-terminal-ui)
4. [Images as HTTP Responses](#images-as-http-responses)
5. [Queue Observability Additions](#queue-observability-additions)
6. [Other Notable Changes](#other-notable-changes)
7. [Key Takeaways](#key-takeaways)

 What's New in Laravel 13.25
---------------------------

Laravel 13.25.0 was released on August 11, 2026, bringing a handful of quality-of-life improvements for queue management, local development, and image handling, alongside a set of targeted bug fixes.

---

Pause Every Queue on Every Connection
-------------------------------------

Previously, pausing queues during a deployment meant issuing a separate command for every connection/queue pair. Laravel 13.25 adds an `--all` flag to both `queue:pause` and `queue:resume`:

```bash
php artisan queue:pause --all
php artisan queue:resume --all

```

The same capability is available on the facade:

```php
use Illuminate\Support\Facades\Queue;

Queue::pauseAll();
Queue::resumeAll();

```

The global switch uses a single cache key that workers check alongside per-queue keys. Crucially, `resumeAll()` clears only the global flag — queues you paused individually stay paused, so a deploy script cannot accidentally restart a queue that was parked on purpose. Two new events, `QueuesPaused` and `QueuesResumed`, fire alongside the existing per-queue events.

---

artisan dev Gets a Tabbed Terminal UI
-------------------------------------

The `artisan dev` command previously used `concurrently`, which interleaved all process output into a single scrolling feed. It now runs through `@laravel/multiplex`, giving each process its own tab with search, per-process restart, and log clearing.

Three output modes are available:

- **tabs** (default) — each process in its own tab
- **stream** — one interleaved feed you can scroll and search
- **inline** — plain output, used automatically when there is no TTY

```bash
php artisan dev --stream
php artisan dev --timestamps --no-restart

```

You can set project-level defaults in a service provider:

```php
use Illuminate\Foundation\DevCommands;

DevCommands::stream();
DevCommands::withTimestamps();
DevCommands::disableAutoRestart();
DevCommands::bufferSize(5000);

```

When the command exits, buffered logs are printed to the terminal so nothing is lost. Windows falls back to `concurrently`; the new path requires Node v22.13+ and runs on macOS and Linux.

---

Images as HTTP Responses
------------------------

`Image` now implements `Responsable`, so you can return an image instance directly from a route:

```php
use Illuminate\Support\Facades\Image;

Route::get('/avatars/{user}', function (User $user) {
    return Image::fromStorage($user->avatar_path)
        ->cover(200, 200)
        ->toWebp()
        ->quality(80);
});

```

Two additional helpers ship alongside this:

- **`Image::fromStream()`** — builds an instance from a stream resource (e.g., `Storage::disk('s3')->readStream($path)`)
- **`toFormat()`** is now public — converts a user-supplied format string to the correct output method, throwing an `ImageException` for unsupported formats

---

Queue Observability Additions
-----------------------------

- **`UniqueJobSkipped` event** — fires when a `ShouldBeUnique` job is dropped because the lock is already held, making it easy to distinguish a working constraint from a stuck lock.
- **`$timeout` on `JobTimedOut`** — the event now carries the number of seconds that was exceeded.
- **`#[FailOnTimeout]` for notifications** — `SendQueuedNotifications` respects a `$failOnTimeout` property or `#[FailOnTimeout]` attribute on the notification class.
- **`QueueFake` assigns UUIDs** — faked jobs now match the shape of real driver jobs, making `$job->uuid` testable.

---

Other Notable Changes
---------------------

- **`withoutCookies(array)`** — expire multiple cookies in one call instead of chaining `withoutCookie()` repeatedly.
- **`foreignUlidFor()`** schema helper — completes the trio alongside `foreignIdFor()` and `foreignUuidFor()`, producing a `char(26)` column with the correct foreign key constraint.
- **`Request::all()` prefers input over files** — when an input field and a file field share the same key, the input value wins; `file()` is unaffected.

---

Key Takeaways
-------------

- `queue:pause --all` / `queue:resume --all` and `Queue::pauseAll()` / `Queue::resumeAll()` simplify zero-downtime deployments.
- `artisan dev` now uses `@laravel/multiplex` for a tabbed terminal UI on macOS/Linux (Node v22.13+ required).
- `Image` implements `Responsable` and gains `fromStream()` and a public `toFormat()`.
- `UniqueJobSkipped`, an expanded `JobTimedOut`, and `#[FailOnTimeout]` for notifications improve queue observability.
- `foreignUlidFor()` completes the schema helper trio for ULID-based foreign keys.

---

*Source: [Laravel News — Laravel 13.25.0](https://laravel-news.com/laravel-13-25-0)*

- [Laravel 13](https://www.msaied.com/public/articles?search=Laravel%2013)
- [Queue Management](https://www.msaied.com/public/articles?search=Queue%20Management)
- [artisan dev](https://www.msaied.com/public/articles?search=artisan%20dev)
- [Image API](https://www.msaied.com/public/articles?search=Image%20API)
- [Laravel Releases](https://www.msaied.com/public/articles?search=Laravel%20Releases)

 Frequently asked questions 
---------------------------

  Does queue:resume --all also resume queues that were paused individually before the global pause?No. `resumeAll()` clears only the global pause flag. Any queue you paused individually with `queue:pause {connection} {queue}` remains paused, so a deployment script cannot accidentally restart a queue that was intentionally parked.

   What are the requirements for the new artisan dev terminal UI in Laravel 13.25?The new `@laravel/multiplex`-based UI requires Node.js v22.13 or higher and runs on macOS and Linux. On Windows, the command automatically falls back to the previous `concurrently`-based runner.

   How does Image::toFormat() differ from calling toWebp() or toAvif() directly?`toFormat()` accepts a user-supplied format string and resolves it to the correct conversion method internally. It throws an `ImageException` for unsupported formats rather than silently falling through, making it safe to use with untrusted input such as a request parameter.

   ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)About the author
----------------

[Mohamed Said](https://www.msaied.com/public#person)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](https://www.msaied.com/public#about) [GitHub ↗](https://github.com/EG-Mohamed) [LinkedIn ↗](https://www.linkedin.com/in/msaiedm/) [WhatsApp ↗](https://wa.me/201094619204) [Email Address ↗](mailto:hello@msaied.com) [My CV ↗](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)  

   [Previous articleLaravel Terminal UI for the artisan dev Command (Laravel 13.25)](https://www.msaied.com/public/articles/laravel-terminal-ui-for-the-artisan-dev-command-laravel-1325) [Next articleLaravel AI SDK v0.10: 4 New Features Explained](https://www.msaied.com/public/articles/laravel-ai-sdk-v010-4-new-features-explained)  

   On this page
-------------

1. [What's New in Laravel 13.25](#whats-new-in-laravel-1325)
2. [Pause Every Queue on Every Connection](#pause-every-queue-on-every-connection)
3. [artisan dev Gets a Tabbed Terminal UI](#artisan-dev-gets-a-tabbed-terminal-ui)
4. [Images as HTTP Responses](#images-as-http-responses)
5. [Queue Observability Additions](#queue-observability-additions)
6. [Other Notable Changes](#other-notable-changes)
7. [Key Takeaways](#key-takeaways)

 ###  Have a technical challenge?

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

[Start a conversation](https://www.msaied.com/public#contact) 

   Related articles
-----------------

 [ ![](https://cdn.msaied.com/740/cce86edc21eddcbdd2f2454fadaf9c70.png)  · 3 min read### The Pipeline Pattern in Laravel: Custom Pipelines Beyond Middleware

5 Oct 2026 ](https://www.msaied.com/public/articles/the-pipeline-pattern-in-laravel-custom-pipelines-beyond-middleware-1) [ ![](https://cdn.msaied.com/739/2d6897fdcdcf090613f96f72a64b8a78.png)  · 4 min read### MySQL Full-Text Search in Laravel: Indexes, Relevance Scoring, and Boolean Mode

4 Oct 2026 ](https://www.msaied.com/public/articles/mysql-full-text-search-in-laravel-indexes-relevance-scoring-and-boolean-mode) [ ![](https://cdn.msaied.com/738/073696a3fefe18bec825beec5ac658f5.png)  · 4 min read### Laravel Queue Rate-Limited Middleware: Throttling Jobs Without Losing Work

4 Oct 2026 ](https://www.msaied.com/public/articles/laravel-queue-rate-limited-middleware-throttling-jobs-without-losing-work) 

  Have a technical challenge?
----------------------------

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

 [Discuss your project ↗](https://www.msaied.com/public#contact) 

  © 2026 Mohamed Said · Built with Laravel, meant to last.Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

 - [Home](https://www.msaied.com/public)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [GitHub](https://github.com/EG-Mohamed)
- [LinkedIn](https://www.linkedin.com/in/msaiedm/)
- [WhatsApp](https://wa.me/201094619204)
- [Email Address](mailto:hello@msaied.com)
- [My CV](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
- [Sitemap](https://www.msaied.com/public/sitemap.xml)
