Laravel Updates & Release Notes

Follow

208 updates curated from 1 source by the Releasebot Team. Last updated: Jul 3, 2026

Get this feed:
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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.

    Route::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'
    
    Original source
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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.

    Create account
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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 logo

    Laravel

    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.

    php artisan schema:dump --without-migration-data
    
    Original source
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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.

    // 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');
    
    Original source
  • Similar to Laravel with recent updates:

  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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:

    use Illuminate\Foundation\Console\DevCommands;
    DevCommands::artisan('reverb:start', 'reverb')->orange();
    DevCommands::register('stripe listen --forward-to ' . config('app.url'))->green();
    
    Original source
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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 logo

    Laravel

    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 a tryFrom() 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.

    // 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);
    });
    
    Original source
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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 logo

    Laravel

    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.

    #[Queue(connection: 'redis', queue: 'broadcasting')]
    trait BroadcastsImports
    {
    public function broadcastWhen(): bool { /* ... */ }
    }
    class ImportCreated implements ShouldBroadcast
    {
    use BroadcastsImports; // picks up the Queue attribute
    }
    
    Original source
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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.

    Bus::bulk(
    $users->map(fn (User $user) => new ProcessUser($user))->all()
    );
    
    Original source
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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 logo

    Laravel

    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.

    (new MailMessage)
    ->attachFromStorage('invoices/1.pdf')
    ->attachFromStorageDisk('s3', 'invoices/1.pdf', 'Invoice.pdf', [
    'mime' => 'application/pdf',
    ]);
    
    Original source
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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.

    // Now works where it used to throw
    JsonSchema::fromArray(['type' => ['string', 'number', 'boolean']]);
    // Or build one directly
    JsonSchema::union(['string', 'number'])->nullable();
    
    Original source
  • Jun 30, 2026
    • Date parsed from source:
      Jun 30, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Laravel logo

    Laravel

    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
Releasebot

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.