Laravel Updates & Release Notes
208 updates curated from 1 source by the Releasebot Team. Last updated: Jul 3, 2026
- Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Add Route Metadata Support
Laravel adds route metadata that flows through the full routing pipeline, with recursive group merging and route cache support. The new metadata() method gives a structured way to store SEO, feature flag, or permission data and read it in controllers or middleware.
Pull request by @benbjurstrom
Routes can now carry arbitrary metadata through the full routing pipeline. Whether you're tagging routes for SEO, feature flags, or permissions, the new ->metadata() method gives you a dedicated, structured place to store that data - and it's fully compatible with route caching. Metadata set on a group merges recursively into child routes, so you can set defaults up top and override them where needed.
Original sourceRoute::metadata(['head' => ['robots' => ['noindex'], 'author' => 'Taylor']]) ->group(function () { Route::get('/users', [UserController::class, 'index']) ->metadata(['head' => ['title' => 'Users']]); }); // Inside a controller or middleware $request->route()->getMetadata('head.title'); // 'Users' $request->route()->getMetadata('head.author', 'Taylor'); // 'Taylor' - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Add Postgres Transaction Pooler Support
Laravel adds framework-level support for PostgreSQL transaction poolers like PgBouncer, with pooled connections and direct routing for schema tasks.
Pull request by @DGarbs51
Running Postgres behind a transaction-mode connection pooler like PgBouncer, AWS RDS Proxy, or Neon? Laravel now supports this at the framework level. Set pooled => true in your database connection config and the framework handles emulated prepares, proper boolean binding, and everything else the pooler requires. For schema and DDL operations that need a direct connection, append ::direct to the connection name and Laravel will route around the pooler automatically - no extra configuration needed.
Original source All of your release notes in one feed
Join Releasebot and get updates from Laravel and hundreds of other software products.
- Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Should Not Retry Exception Handler
Laravel adds non-retryable exception handling so failed jobs can skip pointless retries.
Pull request by @alexbowers
Some exceptions simply shouldn't trigger a retry - think invalid input, permanent external failures, or anything where retrying will just eat up your queue attempts with the same result. You can now define a retry() method directly on an exception class returning false, or configure non-retryable exceptions in bootstrap/app.php via withExceptions(). Either way, Laravel will respect the decision and move on without burning through your job's retry budget.
Original source - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Add `without-migration-data` Flag to `DumpCommand`
Laravel adds a schema:dump --without-migration-data flag for clean structural dumps without migration history.
Pull request by @jackbayliss
schema:dump now accepts a --without-migration-data flag that strips migration table rows from the output, leaving you with a clean structural dump. Handy for test environments where you want to seed the schema without carrying over migration history from another environment.
Original sourcephp artisan schema:dump --without-migration-data - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Make `between()`/`unlessBetween()` Independent of `timezone()` Call Order
Laravel fixes a scheduling timezone bug so between and unlessBetween now work correctly regardless of chain order.
Pull request by @ManicardiFrancesco
Previously, calling between() or unlessBetween() before timezone() in a schedule chain would silently use UTC regardless of what timezone you specified - a subtle bug that could have scheduled tasks running at the wrong hour in production. The time-interval check is now deferred until the filter executes, so the order no longer matters.
Original source// Both of these now behave identically $schedule->command('foo')->timezone('Europe/Rome')->between('10:00', '12:00'); $schedule->command('foo')->between('10:00', '12:00')->timezone('Europe/Rome'); Similar to Laravel with recent updates:
- Postman App updates209 release notes · Latest Aug 10, 2026
- Gemini updates389 release notes · Latest Aug 13, 2026
- Firefox updates39 release notes · Latest Aug 11, 2026
- Telegram updates30 release notes · Latest Jul 14, 2026
- Laravel updates93 release notes · Latest Aug 11, 2026
- Antigravity updates44 release notes · Latest Aug 12, 2026
- Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Add `artisan dev` Command
Laravel adds php artisan dev, a single command for running the server, queue worker, log tailing, and Vite together with color-coded output. It replaces the composer dev script, auto-detects Node package managers, and supports extra commands from service providers.
Pull request by @joetannenbaum
php artisan dev brings all your development processes together in one command - server, queue worker, log tailing, and Vite running concurrently, each with its own color-coded output. It replaces the composer dev script with a proper Artisan convention and auto-detects your Node package manager (npm, yarn, pnpm, or bun).
You can register additional commands from a service provider - useful for tools like Reverb or Stripe's CLI webhook listener:
Original sourceuse Illuminate\Foundation\Console\DevCommands; DevCommands::artisan('reverb:start', 'reverb')->orange(); DevCommands::register('stripe listen --forward-to ' . config('app.url'))->green(); - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Add `array` Maintenance Mode Driver for Parallel Testing
Laravel adds an in-memory maintenance mode driver to prevent flaky parallel test suites.
Pull request by @ziadoz
Parallel test suites and the file-based maintenance mode driver don't mix well - shared state on disk leads to race conditions between workers. The new in-memory array driver keeps maintenance mode isolated per process, mirroring the same pattern used by the cache and session drivers. No more flaky tests caused by leftover maintenance mode files.
Original source - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Add `whenFilledEnum` Method to `InteractsWithData`
Laravel adds whenFilledEnum() for request data, making backed enum handling cleaner by combining presence checks and enum validation into one typed callback flow.
Pull request by @astandkaya
Working with backed enums in request data used to mean a
whenFilled()call followed by atryFrom()check and a null guard.whenFilledEnum()collapses all of that into a single method that only fires the callback when the key is present, the value maps to a valid enum case, and you get a typed enum instance in the closure - no manual validation needed.
Original source// Before $request->whenFilled('status', function (string $input) use ($query): void { $status = Status::tryFrom($input); if ($status === null) { return; } $query->where('status', $status); }); // After $request->whenFilledEnum('status', Status::class, function (Status $status) use ($query): void { $query->where('status', $status); }); - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Add `anyOf` Support to JSON Schema
Laravel adds anyOf support to Illuminate\JsonSchema for more expressive AI structured output with OpenAI and Gemini.
Pull request by @dbpolito
Illuminate\JsonSchema now supports anyOf, which is essential for AI structured output scenarios where a field can resolve to one of several distinct shapes. Both OpenAI and Gemini support anyOf in their structured output APIs, so this unlocks more expressive schema definitions when building AI-powered features with Laravel AI.
Original source - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Support Queue Attributes on Traits
Laravel adds support for Queue PHP attributes on traits, letting shared queue settings like connection, queue name, and timeout be defined once and reused across jobs and events that use the trait.
Pull request by @jackbayliss
PHP attributes like
#[Queue(...)]can now be defined on traits, and Laravel will respect them when the trait is used in a job or event class. If you have queue configuration that should be shared across multiple jobs - the same connection, queue name, or timeout - define it once in a trait instead of duplicating it across every class.
Original source#[Queue(connection: 'redis', queue: 'broadcasting')] trait BroadcastsImports { public function broadcastWhen(): bool { /* ... */ } } class ImportCreated implements ShouldBroadcast { use BroadcastsImports; // picks up the Queue attribute } - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Introduce `Bus::bulk()`
Laravel adds Bus::bulk() for efficiently queueing large job sets with grouped bulk inserts and no per-job write costs.
Pull request by @jackbayliss
Bus::bulk()
When you need to queue a large number of jobs at once, Bus::bulk() is the most efficient way to do it. Rather than dispatching jobs one by one (one database insert each) or using a batch (which writes on every completion), Bus::bulk() groups jobs by queue and connection and performs a single bulk insert per group. No overhead, no per-job write costs.
Original sourceBus::bulk( $users->map(fn (User $user) => new ProcessUser($user))->all() ); - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Added MariaDB Vector Index Capability
Laravel adds MariaDB vector index support in schema builder for semantic search and AI retrieval.
Pull request by @michielvaneerd
MariaDB joins PostgreSQL in supporting vector index creation through Laravel's schema builder. If you're building semantic search or AI-powered retrieval features on a MariaDB database, you can now define vector indexes directly in your migrations without dropping down to raw SQL.
Original source - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Add `attachFromStorage` Helpers to Notification `MailMessage`
Laravel adds attachFromStorage methods to MailMessage notifications for sending stored files like invoices and reports.
Pull request by @LucasCavalheri
MailMessage in notifications now has attachFromStorage() and attachFromStorageDisk() methods, matching what Mailable has offered for a while. Attach invoices, reports, or any file from your storage layer without having to read the contents yourself first.
Original source(new MailMessage) ->attachFromStorage('invoices/1.pdf') ->attachFromStorageDisk('s3', 'invoices/1.pdf', 'Invoice.pdf', [ 'mime' => 'application/pdf', ]); - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Add Multi-Type Union Support to `Illuminate\JsonSchema`
Laravel adds multi-type JSON Schema union support for deserializing, serializing, and round-tripping mixed types.
Pull request by @pushpak1300
Illuminate\JsonSchema can now represent multi-type union schemas - schemas where the type field is an array like ['string', 'number', 'boolean']. This comes up frequently with third-party MCP tool schemas where mixed types are common. Previously these would throw an exception; now they deserialize, serialize, and round-trip correctly.
Original source// Now works where it used to throw JsonSchema::fromArray(['type' => ['string', 'number', 'boolean']]); // Or build one directly JsonSchema::union(['string', 'number'])->nullable(); - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Laravel Framework 13.x - Cache `rememberWithState()`
Laravel adds Cache::rememberWithState() to return cached values plus hit or miss status for easier debugging and cache metrics.
Pull request by @cosmastech
Cache::rememberWithState() returns both the cached value and a boolean indicating whether it was a hit or miss - useful for debugging, recording cache metrics, or surfacing cache status in response headers without having to check the cache twice.
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official product update announcements from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.