What's New in Laravel 13.16.0: artisan dev &amp; More | Mohamed Said        [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://msaied.com) [ Home ](https://msaied.com) [ Projects ](https://msaied.com/projects) [ Articles  ](https://msaied.com/articles) [ Certificates ](https://msaied.com/certificates) [ Contact ](https://msaied.com#contact-section) 

       [  ](https://github.com/EG-Mohamed)       

 [ Home ](https://msaied.com) [ Projects ](https://msaied.com/projects) [ Articles ](https://msaied.com/articles) [ Certificates ](https://msaied.com/certificates) [ Contact ](https://msaied.com#contact-section) 

  [ home ](https://msaied.com)    [ articles ](https://msaied.com/articles)    The artisan dev Command and What's New in Laravel 13.16.0        On this page       1. [  What's New in Laravel 13.16.0 ](#whats-new-in-laravel-13160)
2. [  The php artisan dev Command ](#the-codephp-artisan-devcode-command)
3. [  whenFilledEnum() on Requests ](#codewhenfilledenumcode-on-requests)
4. [  withCookies() on All Responses ](#codewithcookiescode-on-all-responses)
5. [  Array Maintenance Mode Driver ](#array-maintenance-mode-driver)
6. [  Other Notable Changes ](#other-notable-changes)
7. [  Key Takeaways ](#key-takeaways)

  ![The artisan dev Command and What's New in Laravel 13.16.0](https://cdn.msaied.com/227/38e77a6a8617f14f9445b7b9e1de8cc4.png)

 [  Laravel ](https://msaied.com/articles?category=laravel)  #Laravel   #Laravel 13   #Artisan   #PHP   #Release  

 The artisan dev Command and What's New in Laravel 13.16.0 
===========================================================

     17 Jun 2026      3 min read    ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said  

       Table of contents

1. [  01   What's New in Laravel 13.16.0  ](#whats-new-in-laravel-13160)
2. [  02   The php artisan dev Command  ](#the-codephp-artisan-devcode-command)
3. [  03   whenFilledEnum() on Requests  ](#codewhenfilledenumcode-on-requests)
4. [  04   withCookies() on All Responses  ](#codewithcookiescode-on-all-responses)
5. [  05   Array Maintenance Mode Driver  ](#array-maintenance-mode-driver)
6. [  06   Other Notable Changes  ](#other-notable-changes)
7. [  07   Key Takeaways  ](#key-takeaways)

 What's New in Laravel 13.16.0
-----------------------------

Laravel 13.16.0 landed on June 17, 2026 with a handful of developer-experience improvements. Here is a breakdown of every notable addition.

### The `php artisan dev` Command

The headline feature is a new `php artisan dev` command that starts your development processes—server, queue worker, log tailing, and Vite—concurrently in a single terminal. Its default behavior mirrors the existing `composer dev` script, but configuration now lives in your application code rather than `composer.json`.

Register commands through the `DevCommands` class, typically inside a service provider:

```php
use Illuminate\Foundation\Console\DevCommands;

DevCommands::artisan('reverb:start');
DevCommands::register('stripe listen --forward-to ' . config('app.url'));

```

You can name a process explicitly and assign a terminal color:

```php
DevCommands::artisan('reverb:start', 'reverb')->orange();
DevCommands::register('stripe listen --forward-to ' . config('app.url'))->green();

```

Packages inside `vendor` cannot register commands automatically, keeping the list under your control. A companion `NodePackageManager` helper detects the correct package manager (npm, yarn, pnpm, or bun) from the lockfiles present, so generic commands resolve to the right runner.

> **Note:** Upgrade to v13.16.1, which contains a bug fix for registering the `artisan dev` command.

### `whenFilledEnum()` on Requests

The `InteractsWithData` trait gains a `whenFilledEnum()` method that converts a request value to a backed enum before invoking a callback. It replaces the manual `whenFilled()` → `tryFrom()` → null-check pattern:

```php
$request->whenFilledEnum('status', Status::class, function (Status $status) use ($query): void {
    $query->where('status', $status);
});

```

The callback fires only when the key is present, the class is a backed enum, and `tryFrom()` returns a valid case. Invalid values are silently skipped. An optional second callback runs as a fallback:

```php
$request->whenFilledEnum(
    'status',
    Status::class,
    fn (Status $status) => $query->where('status', $status),
    fn () => $query->where('status', Status::Active)
);

```

### `withCookies()` on All Responses

`withCookies()` has been promoted from `RedirectResponse` to `ResponseTrait`, making it available on every response type including `JsonResponse`:

```php
return response()->json($data)->withCookies([$cookieA, $cookieB, $cookieC]);

```

The change is fully additive and non-breaking.

### Array Maintenance Mode Driver

A new `array` driver joins the existing `file` and `cache` drivers for maintenance mode. It targets parallel testing scenarios where the file driver or `Cache` facade mocking can interfere with `php artisan up` and `down` calls.

### Other Notable Changes

- **Enums in `broadcastAs()`** — broadcast events can now return an enum for the event name, keeping names consistent across sender and receiver.
- **JSON Schema `anyOf` support** — plus a guard against unbounded `$ref` expansion to prevent runaway recursion in the deserializer.
- Fixed shell quoting when scheduled commands run as another user.
- Added support for queue attributes on traits.
- Improved return types across model scopes, connection callbacks, and callback-passthrough helpers.

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

- `php artisan dev` centralizes concurrent dev-process management inside your app code.
- `whenFilledEnum()` removes boilerplate when filtering requests by backed enum values.
- `withCookies()` is now available on any response, not just redirects.
- The `array` maintenance mode driver makes parallel test suites more reliable.
- Upgrade to **v13.16.1** to pick up the `artisan dev` registration fix.

---

*Source: [Laravel News — The artisan dev Command in Laravel 13.16.0](https://laravel-news.com/laravel-13-16-0)*

 Found this useful?

          [  ](https://twitter.com/intent/tweet?url=https%3A%2F%2Fmsaied.com%2Farticles%2Fthe-artisan-dev-command-and-whats-new-in-laravel-13160&text=The+artisan+dev+Command+and+What%27s+New+in+Laravel+13.16.0) [  ](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fmsaied.com%2Farticles%2Fthe-artisan-dev-command-and-whats-new-in-laravel-13160) 

 Frequently Asked Questions 
----------------------------

  3 questions  

     Q01  What does `php artisan dev` do in Laravel 13.16.0?        It starts your development processes—local server, queue worker, log tailing, and Vite—concurrently in one terminal. You configure which processes run by registering them via the `DevCommands` class in a service provider, keeping that configuration inside your application rather than in `composer.json`. 

      Q02  How is `whenFilledEnum()` different from `whenFilled()` on a Laravel request?        `whenFilledEnum()` automatically calls `tryFrom()` on the raw input value and passes a fully typed backed-enum instance to your callback. It silently skips invalid values and accepts an optional fallback callback, eliminating the manual `tryFrom()` and null-check steps you would need with plain `whenFilled()`. 

      Q03  Why was an `array` maintenance mode driver added?        The file-based driver and `Cache` facade mocking can conflict in parallel test runs when tests call `php artisan up` or `down`. The new `array` driver keeps maintenance state in memory for the duration of the test process, avoiding those conflicts. 

  Continue reading

 More Articles 
---------------

 [ View all    ](https://msaied.com/articles) 

 [ ![Cursor Pagination, Lazy Collections, and Chunked Iteration at Scale in Laravel](https://cdn.msaied.com/226/0fcac108846a1b5039ff28cfc7c9281d.png) laravel eloquent performance 

### Cursor Pagination, Lazy Collections, and Chunked Iteration at Scale in Laravel

Offset pagination breaks under large datasets. Learn when to reach for cursor pagination, lazy collections, an...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 17 Jun 2026     4 min read  

  Read    

 ](https://msaied.com/articles/cursor-pagination-lazy-collections-and-chunked-iteration-at-scale-in-laravel) [ ![Job Batching, Chaining, and Rate-Limited Middleware in Laravel Queues](https://cdn.msaied.com/225/fc3ad6c9188459b1f2fb165912fca5b3.png) laravel queues jobs 

### Job Batching, Chaining, and Rate-Limited Middleware in Laravel Queues

Go beyond basic dispatching: learn how Laravel's Bus::batch(), job chains, and rate-limited middleware compose...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 17 Jun 2026     3 min read  

  Read    

 ](https://msaied.com/articles/job-batching-chaining-and-rate-limited-middleware-in-laravel-queues-1) [ ![Laravel Octane + FrankenPHP: Persistent State, Shared Services, and Safe Bootstrapping](https://cdn.msaied.com/224/cc0aa09965b63e7311e93282849ada05.png) laravel octane frankenphp 

### Laravel Octane + FrankenPHP: Persistent State, Shared Services, and Safe Bootstrapping

Running Laravel under FrankenPHP's worker mode unlocks real throughput gains, but persistent state between req...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 17 Jun 2026     4 min read  

  Read    

 ](https://msaied.com/articles/laravel-octane-frankenphp-persistent-state-shared-services-and-safe-bootstrapping) 

   [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://msaied.com)Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

Explore

- [Home](https://msaied.com)
- [Projects](https://msaied.com/projects)
- [Articles](https://msaied.com/articles)
- [Certificates](https://msaied.com/certificates)
- [Contact](https://msaied.com#contact-section)

Connect

- [   hello@msaied.com ](mailto:hello@msaied.com)
- [   +20 109 461 9204 ](tel:+201094619204)

© 2026 Mohamed Said. All rights reserved.

 [  ](https://github.com/EG-Mohamed) [  ](https://www.linkedin.com/in/msaiedm/) [  ](https://wa.me/201094619204) [  ](mailto:hello@msaied.com) [  ](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
