Laravel Release Notes

Last updated: Apr 15, 2026

Get this feed:

Laravel Products

All Laravel Release Notes (184)

  • Apr 14, 2026
    • Date parsed from source:
      Apr 14, 2026
    • First seen by Releasebot:
      Apr 15, 2026
    Laravel logo

    Laravel

    v13.5.0

    Laravel adds queued mailable delay support, controller middleware attribute inheritance, first-class Redis Cluster support for Queue and ConcurrencyLimiter, enum support across manager methods, and several fixes and refinements for cache, auth, mail, and testing.

    [13.x]

    • Support #[Delay] attribute on queued mailables by @sumaiazaman in #59580
    • Added inheritance support for Controller Middleware attributes. by @niduranga in #59597
    • Normalize phpredis SSL context for single and cluster connections by @timmylindh in #59569
    • Memoize the result of TestCase@withoutBootingFramework() by @cosmastech in #59610
    • Add missing @throws and docblocks for concurrency and model in… by @scabarcas17 in #59602
    • Fix that retries of ShouldBeUniqueUntilProcessing jobs are force-releasing locks they don't own by @kohlerdominik in #59567
    • Add first-class Redis Cluster support for Queue and ConcurrencyLimiter by @timmylindh in #59533
    • chore: Update PHP version from 8.2 to 8.3 in bin/test.sh script by @crynobone in #59605
    • Fix RedisQueueTest by @jackbayliss in #59613
    • Add enum support to CacheManager store and driver methods by @yousefkadah in #59637
    • Fix redirectUsersTo() overwriting redirectGuestsTo() callback by @timmylindh in #59633
    • Add ability to detect unserializable values returned from cache by @jackbayliss in #59630
    • Fix loose comparison false positive in NotPwnedVerifier with magic hash passwords by @scabarcas17 in #59644
    • Refactor Skip middleware by @cosmastech in #59651
    • Resolve stan errors on MySqlSchemaState by @jackbayliss in #59652
    • Allow closure values in updateOrCreate and firstOrNew by @yousefkadah in #59647
    • Add enum support to MailManager mailer and driver methods by @yousefkadah in #59645
    • Add enum support to AuthManager guard and shouldUse methods by @yousefkadah in #59646
    • Add spatie/fork to composer suggestions by @jnoordsij in #59660
    • Add enum support to Manager driver method by @scabarcas17 in #59659
    • Fix custom driver binding bug and improve by @ollieread in #59614
    • Improve PHPDoc for "safe" method with conditional return type by @leo95batista in #59684
    • Bump Retry action in CI by @jackbayliss in #59681
    • Move Scope interface @template from method-level to class-level to fix LSP violation by @kayw-geek in #59675
    • Combine consecutive isset and unset by @lucasmichot in #59685
    • Changes strlen comparison to 0 to direct empty string compare by @lucasmichot in #59686
    Original source
  • Apr 7, 2026
    • Date parsed from source:
      Apr 7, 2026
    • First seen by Releasebot:
      Apr 7, 2026
    Laravel logo

    Laravel

    v13.4.0

    Laravel fixes queue, request, validation, and string handling issues while adding FormRequest strict mode, job inspection helpers, Carbon overflow options, and better attribute support across dispatching and notifications.

    • [13.x] Fix missing Illuminate\Queue\Attributes\Delay attribute by @fadez in #59504
    • [13.x] Fix $request->interval() failing with very small float values by @SanderMuller in #59502
    • [13.x] Add pint.json to export-ignore by @axlon in #59497
    • [13.x] Add --ignore-scripts to yarn in BroadcastingInstallCommand by @sumaiazaman in #59494
    • [13.x] Fix static closure binding in remaining manager classes by @sumaiazaman in #59493
    • [13.x] Fix CollectedBy attribute not resolving through abstract parent classes by @jackbayliss in #59488
    • [13.x] Fix: Allow runtime property overrides (onQueue) to take precedence over class attributes by @niduranga in #59468
    • [13.x] Use #[Delay] attribute in Bus Dispatcher by @sumaiazaman in #59514
    • [13.x] Use #[Delay] attribute in NotificationSender by @sumaiazaman in #59513
    • [13.x] Add overflow option to Carbon plus and minus by @lucasmichot in #59509
    • [13.x] Fix: respect null redirect in unauthenticated exception handler by @timmylindh in #59505
    • [13.x] Fix TypeError in starts_with/ends_with validation rules on non-string values by @sumaiazaman in #59541
    • [13.x] allow null to be passed directly to redirectGuestsTo() by @timmylindh in #59526
    • Revert "[13.x] Remove unnecessary clone in SessionManager to prevent duplicate Redis connections" by @taylorotwell in #59542
    • [13.x] Fix deprecation warning in Contains and DoesntContain rules when values contain null by @sumaiazaman in #59561
    • [13.x] Fix Str::markdown() and Str::inlineMarkdown() crash on null input by @sumaiazaman in #59554
    • [13.x] Add queue methods to inspect jobs by @jackbayliss in #59511
    • Feature/form request strict mode by @NurullahDemirel in #59430
    • Bump vite from 7.3.1 to 7.3.2 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot[bot] in #59571
    • [13.x] Fix deprecation warning in In and NotIn rules when values contain null by @sumaiazaman in #59576
    • [13.x] Add flushState to FormRequest to reset global strict mode between tests by @sumaiazaman in #59574
    • [13.x] Fix #[WithoutRelations] queue attribute not being inherited by child classes by @stevebauman in #59568
    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
  • Apr 1, 2026
    • Date parsed from source:
      Apr 1, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    v13.3.0

    Laravel adds a broad round of 13.x improvements across queues, scheduling, mail, URI handling, collections, and model behavior, while also tightening performance, docs, and bug fixes. It also expands enum support and adds new testing helpers and events.

    • [13.x] Forward releaseOnTerminationSignals through schedule groups by @jackbayliss in #59357
    • [13.x] Fix sub-minute scheduling skips at minute boundaries by @JoshSalway in #59331
    • [13.x] Display memory usage in verbose queue worker output by @jackbayliss in #59379
    • [13.x] Update WithoutOverlapping@shared() for clarity by @cosmastech in #59375
    • [13.x] Fix dependency injection of faked queueing dispatcher by @axlon in #59378
    • [13.x] Fix incrementEach/decrementEach to scope to model instance by @JoshSalway in #59376
    • [13.x] Add array value types to Support module docblocks by @Anthony14FR in #59383
    • [13.x] Add lost connection to WorkerStopReason by @jackbayliss in #59370
    • [13.x] MariaDbSchemaState uses mysql --version for client detection instead of mariadb --version by @kylemilloy in #59360
    • [13.x] Add enum support to QueueManager connection methods by @sumaiazaman in #59389
    • [13.x] Setup rector by @lucasmichot in #59385
    • [13.x] Improve Arr::whereNotNull() docs by @axlon in #59411
    • [13.x] Pass request to afterResponse callback by @bilfeldt in #59410
    • [13.x] Add isNotEmpty() method to Uri class by @sumaiazaman in #59408
    • [13.x] Add missing capitalize parameter to Stringable::initials() by @sumaiazaman in #59407
    • [13.x] Fix trait initializer collision with Attribute parsing by @sadique-cws in #59404
    • [13.x] Add session to supported drivers comment by @jackbayliss in #59399
    • [13.x] Add ->file() method to $request->safe() by @SanderMuller in #59396
    • [13.x] Add enum support to LogManager channel and driver methods by @sumaiazaman in #59391
    • [13.x] Fix MorphTo eager load matching when ownerKey is null and result key is a non-primitive by @wietsewarendorff in #59394
    • [13.x] Remove unnecessary clone in SessionManager to prevent duplicate Redis connections by @JoshSalway in #59323
    • [13.x] Use FQCN for Str in exception renderer blade templates by @bankorh in #59412
    • Allow variadic args for model attributes by @jasonmccreary in #59421
    • [13.x] CollectedBy Attribute should follow inheritence by @jackbayliss in #59419
    • [13.x] Fix deprecation notice in JSON:API resources by @alihamze in #59418
    • [13.x] Add withoutFragment() method to Uri class by @sumaiazaman in #59413
    • [13.x] Fix macros with static closures by @FeBe95 in #59414
    • [13.x] Fix sum() docblock to include key parameter in callback signature by @sumaiazaman in #59444
    • [13.x] Add assertHasNoAttachments() method to Mailable by @sumaiazaman in #59443
    • [13.x] Add a driver method to the MailFake class by @kevinb1989 in #59448
    • [13.x] Cache getLockForPopping() result in DatabaseQueue by @sumaiazaman in #59435
    • [13.x] prefer new Collection() over collect() helper by @browner12 in #59453
    • [13.x] remove unnecessary array_flip() calls by @browner12 in #59452
    • Make Collection methods compatible with extended subclass constructors by @ProjektGopher in #59455
    • [13.x] UnitTest test attribute by @cosmastech in #59432
    • [13.x] prefer isset() over in_array() for better performance by @browner12 in #59457
    • [13.x] remove temporary variable by @browner12 in #59456
    • [13.x] Add BatchStarted event by @jackbayliss in #59458
    • [13.x] Preserve URI fragment when decoding query string by @Nipun404 in #59481
    • fix: allow returning Stringable objects in casts()-method by @Bloemendaal in #59479
    • [13.x] Fix manager breaking when called with static closure by @axlon in #59470
    • Prevents installed package from executing malicious code via postinstall in install:broadcasting command by @duncanmcclean in #59485
    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Laravel 13 - Laravel AI SDK

    Laravel introduces the first-party Laravel AI SDK, giving developers a unified, Laravel-native way to build provider-agnostic AI features with text generation, agents, embeddings, audio, images, and vector store integrations.

    Laravel AI SDK

    Laravel 13 introduces the first-party Laravel AI SDK, providing a unified API for text generation, tool-calling agents, embeddings, audio, images, and vector-store integrations.

    With the AI SDK, you can build provider-agnostic AI features while keeping a consistent, Laravel-native developer experience.

    For example, a basic agent can be prompted with a single call:

    use App\Ai\Agents\SalesCoach;
    $response = SalesCoach::make()->prompt('Analyze this sales transcript...');
    return (string) $response;
    

    The Laravel AI SDK can also generate images, audio, and embeddings:

    For visual generation use cases, the SDK offers a clean API for creating images from plain-language prompts:

    use Laravel\Ai\Image;
    $image = Image::of('A donut sitting on the kitchen counter')->generate();
    $rawContent = (string) $image;
    

    For voice experiences, you can synthesize natural-sounding audio from text for assistants, narrations, and accessibility features:

    use Laravel\Ai\Audio;
    $audio = Audio::of('I love coding with Laravel.')->generate();
    $rawContent = (string) $audio;
    

    And for semantic search and retrieval workflows, you can generate embeddings directly from strings:

    use Illuminate\Support\Str;
    $embeddings = Str::of('Napa Valley has great wine.')->toEmbeddings();
    
    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Laravel 13 - JSON:API Resources

    Laravel adds first-party JSON:API resources for compliant responses, including relationships, sparse fieldsets, links, and headers.

    Laravel now includes first-party JSON:API resources, making it straightforward to return responses compliant with the JSON:API specification.

    JSON:API resources handle resource object serialization, relationship inclusion, sparse fieldsets, links, and JSON:API-compliant response headers.

    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Laravel 13 - Request Forgery Protection

    Laravel improves request forgery protection with PreventRequestForgery and origin-aware verification, keeping CSRF compatibility.

    For security, Laravel's request forgery protection middleware has been enhanced and formalized as PreventRequestForgery, adding origin-aware request verification while preserving compatibility with token-based CSRF protection.

    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Laravel 13 - Queue Routing

    Laravel 13 adds class-based queue routing with Queue::route() for central job connection and queue defaults.

    Laravel 13 adds queue routing by class via Queue::route(...), allowing you to define default queue / connection routing rules for specific jobs in a central place:

    Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
    
    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Laravel 13 - Expanded PHP Attributes

    Laravel 13 expands first-party PHP attribute support across the framework, bringing a more declarative style to controllers, authorization, queues, Eloquent, events, notifications, validation, testing, and resource serialization.

    Laravel 13 continues to expand first-party PHP attribute support across the framework, making common configuration and behavioral concerns more declarative and colocated with your classes and methods.

    Notable additions include controller and authorization attributes like #[Middleware] and #[Authorize], as well as queue-oriented job controls like #[Tries], #[Backoff], #[Timeout], and #[FailOnTimeout].

    For example, controller middleware and policy checks can now be declared directly on classes and methods:

    <?php
    namespace App\Http\Controllers;
    
    use App\Models\Comment;
    use App\Models\Post;
    use Illuminate\Routing\Attributes\Controllers\Authorize;
    use Illuminate\Routing\Attributes\Controllers\Middleware;
    
    #[Middleware('auth')]
    class CommentController
    {
        #[Middleware('subscribed')]
        #[Authorize('create', [Comment::class, 'post'])]
        public function store(Post $post)
        {
            // ...
        }
    }
    

    Additional attributes have also been introduced across Eloquent, events, notifications, validation, testing, and resource serialization APIs, giving you a consistent attribute-first option in more areas of the framework.

    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Laravel 13 - Cache TTL Extension

    Laravel now includes Cache::touch() to extend a cache item's TTL without retrieving and re-storing its value.

    Laravel now includes Cache::touch(...), which lets you extend an existing cache item's TTL without retrieving and re-storing its value.

    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Inertia v3 - Semantic / Vector Search

    Laravel adds native vector query support and embedding workflows for semantic search, including PostgreSQL + pgvector and AI SDK APIs. The release also highlights Inertia v3, with zero-config setup, smaller bundles, automatic SSR in development, optimistic updates, instant visits, and new HTTP and layout primitives.

    Laravel 13 deepens its semantic search story with native vector query support, embedding workflows, and related APIs documented across search, queries, and the AI SDK.

    These features make it straightforward to build AI-powered search experiences using PostgreSQL + pgvector, including similarity search against embeddings generated directly from strings.

    For example, you may run semantic similarity searches directly from the query builder:

    $documents = DB::table('documents')
    ->whereVectorSimilarTo('embedding', 'Best wineries in Napa Valley')
    ->limit(10)
    ->get();
    

    Inertia v3 is here — a ground-up rethink of the developer experience with a focus on zero-config setup, smaller bundles, and powerful new primitives for building modern apps. Axios and qs have been replaced with a built-in XHR client, SSR works automatically during development without a separate Node process, and a new Vite plugin eliminates nearly all boilerplate. On top of that, v3 introduces optimistic updates, instant visits, standalone HTTP requests via useHttp, layout props, and fine-grained exception handling — all designed to make Inertia apps feel faster to build and faster to use.

    Here's what's new:

    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Inertia v3 - Vite Plugin

    Laravel adds a new @inertiajs/vite plugin that auto-resolves pages, handles code splitting and SSR, and trims app setup.

    A new @inertiajs/vite plugin eliminates the boilerplate that traditionally lived in your app entry point — no more manual resolve, setup, or separate SSR entry files. Pages auto-resolve from ./Pages, code splitting and lazy-loading are handled automatically, and SSR is wired up with zero config. Your app entry point can be as simple as createInertiaApp() with no arguments. A new withApp callback also lets you modify the root app instance (register plugins, provide values) before rendering, on both client and server.

    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Inertia v3 - SSR in Development

    Laravel adds automatic SSR in dev, better error reporting, and route-level SSR disabling.

    SSR now works automatically during npm run dev — no separate Node.js process required. Pages are server-rendered out of the box in development, while the production workflow (vite build &amp;&amp; vite build --ssr) remains unchanged. Error reporting has been overhauled: errors now log the component name, URL, and actionable hints, and a SsrRenderFailed event is dispatched for monitoring. You can also disable SSR on specific routes via middleware or the Inertia facade.

    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Inertia v3 - Axios Removed

    Laravel removes Axios and qs, switching to a lighter built-in XHR client and offering an adapter for migration.

    Axios and qs have been removed as dependencies entirely. A lighter built-in XHR client handles all HTTP communication, reducing bundle size and the dependency footprint. If you rely on Axios interceptors or other Axios-specific features, an adapter is available to keep things working during your migration.

    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Inertia v3 - Standalone HTTP Requests

    Laravel adds useHttp hook for reactive plain HTTP requests with error handling, file upload progress, cancellation, and optimistic updates.

    A new useHttp hook brings useForm-like ergonomics to plain HTTP requests outside of Inertia's page lifecycle. It provides reactive state management, error handling, file upload progress tracking, and request cancellation — ideal for API calls, external service requests, or any HTTP interaction that doesn't involve an Inertia page visit. It also supports optimistic updates and Precognition out of the box.

    Original source
  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Laravel logo

    Laravel

    Inertia v3 - Optimistic Updates

    Laravel adds optimistic UI updates that apply instantly and auto-revert on failure across forms, router visits, and useHttp.

    UI updates now apply immediately before server confirmation via a chainable .optimistic() method. Your callback receives current props and returns the optimistic values, which are applied instantly. When the server responds, real data takes over seamlessly — and if the request fails, changes auto-revert. Multiple concurrent optimistic updates are tracked independently, and the feature works across router visits, <Form>, useForm, and useHttp.

    Original source

Related vendors