News

Laravel 9.15 Released

Published
Laravel 9.15 Released image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

The Laravel team released 9.15 with the ability to list only vendor routes, check if a filesystem folder is empty/not empty, an isJson() string helper, and more:

Only vendors listed in route:list command

Ash Allen contributed a --only-vendor flag to the route:list command. Only vendor routes will appear in the terminal, and the command will ignore your application routes.

This flag is helpful to audit routes that packages may have installed that you're not aware of otherwise or if you are curious about what routes packages register.

HTTP client "throw unless" method

Mahmoud Mohamed Ramadan contributed a throwUnless() function to the Laravel HTTP client. This method will throw an exception if a server or client error occurred and the given condition is false:

$response = Http::post(/* ... */);
$response->throwUnless($condition);

String isJson() method

Daniel Eckermann contributed an isJson() method to the Str and Stringable classes to determine if a string is valid json:

Str::isJson($data);
//=> boolean
 
Str::of($data)->isJson()
//=> boolean
 
str($data)->isJson();
//=> boolean

Check if a filesystem directory is empty

@DarkGhostHunter contributed two methods to determine if a filesystem directory is empty or not:

use Illuminate\Support\Facades\File;
 
if (File::isDirectoryEmpty('john/photos')) {
return 'You do not have any photos';
}
 
if (File::isDirectoryNotEmpty('john/videos', true)) {
return 'You may have one or more videos, even hidden ones.';
}

Show route list counts

Ash Allen contributed a visual route count to the beginning and end of the route:list CLI output:

Support kebab case for slot name shortcut

Waghabond contributed kebab-case for slot names:

<!-- /resources/views/components/my-layout.blade.php -->
<html lang="en">
<body>
{{ $mySlot }}
</body>
</html>
 
<!-- /resources/views/components/child.blade.php -->
<x-my-layout>
{{-- kebab-case slot name --}}
<x-slot:my-slot>
<div>My super cool content</div>
</x-slot:my-slot>
</x-my-layout>

Release Notes

You can see the complete list of new features and updates below and the diff between 9.14.0 and 9.15.0 on GitHub. The following release notes are directly from the changelog:

v9.15.0

Added

  • Added --only-vendor option to route:list command (#42549)
  • Added Illuminate/Http/Client/PendingRequest::throwUnless() (#42556)
  • Added Illuminate/Support/Str::isJson() (#42545)
  • Added Illuminate/Filesystem/Filesystem::isEmptyDirectory() (#42559)
  • Added Add counts to route:list command (#42551)
  • Support kebab case for slot name shortcut (#42574)

Reverted

Fixed

  • Fix getting '0' from route parameter in Authorize middleware (#42582)

Changed

  • Retain the original attribute value during validation of an array key with a dot for correct failure message (#42395)
  • Allow bootable test traits to teardown (#42521)
  • Pass thrown exception to $sleepMilliseconds closure in retry helper (#42532)
  • Make HasTimestamps::updateTimestamps chainable (#42533)
  • Remove meaningless parameter in Illuminate/View/Concerns/ManagesEvents (#42546)
  • Map integer parameter to parameter name when resolving binding field (#42571)
  • Conditionable should return HigherOrderWhenProxy only when the args number is exactly 1 (#42555)
Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Image Dominant Color and HEIC Support in Laravel 13.24 image

Image Dominant Color and HEIC Support in Laravel 13.24

Read article
Official Laravel Zed Extension: LSP for PHP & Blade image

Official Laravel Zed Extension: LSP for PHP & Blade

Read article
Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD image

Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD

Read article
PhpStorm 2026.2 Released image

PhpStorm 2026.2 Released

Read article
Laravel Doctor: Diagnose Your App With One Artisan Command image

Laravel Doctor: Diagnose Your App With One Artisan Command

Read article
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article