Laravel Release Notes

Last updated: Jan 21, 2026

  • Jan 20, 2026
    • Parsed from source:
      Jan 20, 2026
    • Detected by Releasebot:
      Jan 21, 2026
    Laravel logo

    Laravel

    v12.48.0

    Laravel 12.x ships a wave of fixes and improvements across testing, queues, string handling, middleware, and performance. It adds new features like skipWhen in HandleCors and a BatchFinished event, while tightening backward compatibility and error handling for a smoother runtime.

    • [12.x] Fix missing variable reassignment by @nunomaduro in #58376
    • [12.x] Improve PendingRequest types by @cosmastech in #58386
    • [12.x] Fix backward compatibility with third-party guards by @daniser in #58385
    • Make \Illuminate\Testing\TestResponse::assertHeader() case insensitive by @HenkPoley in #58383
    • [12.x] Fix TypeError when validation rule has empty parameters by @irabbi360 in #58380
    • [12.x] Adjust PendingBatchFake to filter by @jackbayliss in #58375
    • [12.x] Resolve infinite loop when using deferred queue by @cosmastech in #58373
    • [12.x] Fix and improve \Illuminate\Support\Str types further by @shaedrich in #58372
    • [12.x] Ensure Bus::chain filters out falsy items by @jackbayliss in #58369
    • [12.x] fix invalid array doctypes for Str::replaceMatches in v12.47.0 by @marcreichel in #58364
    • [12.x] Remove useless use of MockeryPHPUnitIntegration by @lucasmichot in #58363
    • [12.x] Fix: Drop indexes from failed_jobs by @jackbayliss in #58362
    • Translation lines may contain square brackets and curly braces now by @edwinheij in #58367
    • [12.x] Add skipWhen functionality to HandleCors middleware by @RobertBoes in #58361
    • [12.x] Fix backward compatibility with third-party guards, again by @daniser in #58389
    • [12.x] Add type tests for \Illuminate\Support\Str by @shaedrich in #58365
    • [12.x] new $class instead of reflection for better performance by @takaram in #58391
    • [12.x] Isolate compiled views per process during parallel testing by @dxnter in #58390
    • [12.x] Fix broken import by @lucasmichot in #58394
    • [12.x] Implement Stringable in Enum rule by @owenconti in #58392
    • [12.x] Fix restoreLock for MemoizedStore by @jackbayliss in #58423
    • [12.x] Fix Filesystem::sharedGet partial reads (#58418) by @sv63rus in #58419
    • [12.x] Add missing @param docblock to ValidatedInput::__isset() by @ismaildasci in #58410
    • [12.x] Add queue to JobPopping by @jackbayliss in #58413
    • [12.x] add backoff to JobReleasedAfterException event by @jackbayliss in #58414
    • [12.x] Fix return type docblock for Number::abbreviate method by @ismaildasci in #58408
    • [12.x] Annotate tuple return type of Number::pairs() by @ismaildasci in #58409
    • Bump tar from 7.4.3 to 7.5.3 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot [bot] in #58404
    • [12.x] Update return type of merge for collections by @ramonrietdijk in #58405
    • [12.x] Fix missing import by @irabbi360 in #58401
    • [12.x] Account for Throwable inside of PendingRequest by @cosmastech in #58395
    • [12.x] Allow setting flags for decoding json in the Http Client's Response by @cosmastech in #58379
    • [12.x] chore: make PruneCommand::isPrunable() protected by @calebdw in #58430
    • [12.x] widen PendingRequest@pool() return type by @cosmastech in #58437
    • [12.x] feat: query builder aliases for expressions by @tpetry in #58436
    • Test Improvements by @crynobone in #58432
    • [12.x] add BatchFinished event by @jackbayliss in #58431
    Original source Report a problem
  • Jan 20, 2026
    • Parsed from source:
      Jan 20, 2026
    • Detected by Releasebot:
      Jan 21, 2026
  • Jan 14, 2026
    • Parsed from source:
      Jan 14, 2026
    • Detected by Releasebot:
      Jan 17, 2026
    • Modified by Releasebot:
      Jan 21, 2026
    Laravel logo

    Laravel

    v12.47.0

    Laravel 12.x release notes announce broad fixes and enhancements across Blade, cache, JSON API, sessions, and tests. It adds isolated Blade includes, better error messages, new helpers, and updated tooling, signaling a solid maintenance release.

    12.x Changes

    • [12.x] Add @includeIsolated directive for isolated Blade includes by @KennedyTedesco in #58311
    • [12.x] Fix typo in JsonApiResource trait method by @dxnter in #58326
    • [12.x] Add Cache::withoutOverlapping() to wrap Cache::lock()->block() by @mathiasgrimm in #58303
    • Update return type annotations in FormRequest.php by @arttiger in #58333
    • [12.x] Fix QueryException showing wrong connection details for read PDO by @mathiasgrimm in #58331
    • [12.x] Only fire CacheFailedOver and QueueFailedOver on first failure by @cosmastech in #58330
    • allow precognitive requests to use wildcards with array validations (#57437) by @markusheinemann in #57486
    • [12.x] Fix docblock for Failovers by @cosmastech in #58336
    • [12.x] Only fire composer uninstall events when removing dev packages by @cosmastech in #58338
    • Vector things by @taylorotwell in #58337
    • Update tailwind version by @laserhybiz in #58344
    • [12.x] Allow for enum keys in additional Session Store methods by @riesjart in #58343
    • [12.x] JSON API: Deduplicate circular references by @mateusjatenee in #58348
    • [12.x] Improve key:generate error message when APP_KEY is set by @dxnter in #58345
    • [12.x] Add indexes to failed_jobs stub by @jackbayliss in #58355
    • [12.x] Improve types in \Illuminate\Support\Str helper by @shaedrich in #58356
    • [12.x] Fix MySQL port conflict in tests workflow by @jackbayliss in #58357
    • [12.x] Improve the return types for Number::with*() helpers by @CasEbb in #58358
    • [12.x] Ensure Bus::batch filters o...
    Original source Report a problem
  • Jan 7, 2026
    • Parsed from source:
      Jan 7, 2026
    • Detected by Releasebot:
      Jan 8, 2026
    Laravel logo

    Laravel

    v12.46.0

    • [12.x] Add Arr::onlyValues and Arr::exceptValues by @stevebauman in #58317
    • [12.x] Fixed phpdoc of Container::buildSelfBuildingInstance, to prevent psalm from erroring when parsing the class by @nicDamours in #58314
    • [12.x] Add Collection::containsManyItems() method by @stevebauman in #58312
    • [12.x] Table prefix not applied when cloning connections by @dxnter in #58288
    • [12.x] Added MySQL DDL locking options to MySQL grammar by @Vladelis in #58293

    Original source Report a problem
  • Jan 7, 2026
    • Parsed from source:
      Jan 7, 2026
    • Detected by Releasebot:
      Jan 7, 2026
    Laravel logo

    Laravel

    v12.45.2

    • [12.x] Feature: allow UnitEnum in has() method of Gate class by @webard in #58310
    • [12.x] Fix Validator::appendRules() with pipe-separated rule strings by @leo108 in #58304
    • [12.x] Fix calling toArray() on AnonymousResourceCollection returns an array of resources by @crynobone in #58302
    Original source Report a problem
  • Jan 7, 2026
    • Parsed from source:
      Jan 7, 2026
    • Detected by Releasebot:
      Jan 7, 2026
    Laravel logo

    Laravel

    v12.45.1

    • [12.x] Fix ResourceCollection usage when used with an array instead of Model collection by @crynobone in #58299
    Original source Report a problem
  • Jan 6, 2026
    • Parsed from source:
      Jan 6, 2026
    • Detected by Releasebot:
      Jan 7, 2026
    Laravel logo

    Laravel

    v12.45.0

    A comprehensive 12.x release with broad improvements across queues, enums, authentication, and event handling plus numerous bug fixes. Expect better URL handling, type safety, new events, and enhanced test support for a smoother dev experience.

    • [12.x] JSON:API Resource by @crynobone in #57571
    • [12.x] Add static constructor to guest middleware by @rodrigopedra in #58204
    • [12.x] Include JsonResource in ModelInspector result by @cosmastech in #58205
    • [12.x] Add queue paused / resume events by @jackbayliss in #58202
    • [12.x] Add attachment helper method to add attachment from cloud storage by @PhiloNL in #58201
    • [12.x] Normalize APP_URL when generating filesystem URLs by @congkv in #58210
    • [12.x] Adjust AuthDatabaseTokenRepositoryTest by @jackbayliss in #58206
    • [12.x] Refactor queuePaused logic by @amirhshokri in #58215
    • Fix queue:listen timeout false positives after system sleep/wake by @ranjith67 in #58216
    • Change the remember cookie to store a MAC of the users password hash instead of their real password hash by @Synchro in #58107
    • Add connection details to QueryException error messages by @mathiasgrimm in #58218
    • [12.x] Adjust README test status badge by @jackbayliss in #58222
    • [12.x] Use constant for session ID length by @miladev95 in #58224
    • [12.x] Add type tests for PendingRequest.php by @shaedrich in #58232
    • feat: fire JobAttempted for sync jobs too by @veeshpath in #58228
    • [12.x] Adjust getEventDispatcher docblock to allow null return by @jackbayliss in #58242
    • [12.x] Extract JobAttempted event dispatch to a separate method in SyncQueue by @amirhshokri in #58240
    • [12.x] ValidationException: update redirectTo property definition to include null by @cheack in #58238
    • [12.x] Add BackedEnum support for session keys by @ahinkle in #58241
    • [12.x] Update upload-artifact action by @jackbayliss in #58250
    • [12.x] Allow BackedEnum for Cache keys by @jackbayliss in #58246
    • [12.x] Add CommandFailed event and listenForFailures() for Redis connections by @miladev95 in #58251
    • [12.x] Fix: Change BackedEnum to UnitEnum in Authorizable trait by @webard in #58258
    • [12.x]Refactor: remove if and replace ? by @alipowerful7 in #58256
    • [12.x]Feat(MustVerifyEmail): add markEmailAsNotVerified() by @alipowerful7 in #58255
    • [12.x] Feat: add havingNotBetween && orHavingBetween && orHavingNotBetween by @alipowerful7 in #58259
    • [12.x] Formatting by @amirhshokri in #58266
    • [12.x] Refactor: add |null in dock block by @alipowerful7 in #58268
    • Add type guard for ChainedBatch/Queueable chained property before array_shift by @cyppe in #58264
    • [12.x] Add lang attributes to mail layout by @DBawazir2002 in #58274
    • [12.x] Clean up Builder docblocks by @amirhshokri in #58270
    • [12.x] Run Mockery cleanup via PHPUnit subscriber instead of explicit m::close() calls by @lucasmichot in #58278
    • [12.x] Fix delayed Redis queue jobs with phpredis serialization enabled by @iazaran in #58235
    • [12.x] Add missing return type to Arr::array() by @mischasigtermans in #58280
    • [12.x] Add --readable flag to env:encrypt for visible key names by @mathiasgrimm in #58262
    • [12.x] Update fake method parameter type for disk by @murilo-plantae in #58285
    • [12.x] Fix typo in BelongsToMany::createOrFirst method name by @mischasigtermans in #58284
    • [12.x] Fix nth(), split() and splitIn() to throw InvalidArgumentException for invalid parameters by @mischasigtermans in #58283
    • [12.x] Fix Str::chopStart() and Str::chopEnd() returning empty string when given empty needle by @mischasigtermans in #58286
    • [12.x] Add AsBinary castable class by @plumthedev in #58254
    • [12.x] Add enum to persistentFake() - and add tests by @jackbayliss in #58287
    • Update Inspiring Qoute's author name by @kerog in #58292
    • [12.x] Fix: add @throws \InvalidArgumentException to some dock block by @alipowerful7 in #58289
    • [12.x] Fix Validator::sometimes() usage with attributes containing . by @crynobone in #58291
    • [12.x] Support "where subquery between values" by @gdebrauwer in #58290
    • Capture PDO read / write type for query events by @timacdonald in #58156
    Original source Report a problem
  • January 2026
    • No date parsed from source.
    • Detected by Releasebot:
      Jan 8, 2026
  • Dec 19, 2025
    • Parsed from source:
      Dec 19, 2025
    • Detected by Releasebot:
      Dec 23, 2025
    • Modified by Releasebot:
      Jan 19, 2026
    Laravel logo

    Laravel

    v12.44.0

    Laravel 12.x arrives with developer focused improvements and new hooks. Opt out prune lottery, new Date rule methods, post build Http callbacks, event-driven migration, and richer docblocks plus tests and multibyte handling tweaks.

    12.x

    • [12.x] Allow easier opting out of DatabaseLock prune lottery by @cosmastech in #58152
    • [12.x] Specify that the query builder returns instances of stdClass by @axlon in #58150
    • [12.x] feat: add now methods to Date rule by @calebdw in #58059
    • [12.x] Add ability to run callbacks after building an Http response by @cosmastech in #58088
    • [12.x] Fix docblocks by @timacdonald in #58157
    • [12.x] Fix Password::required() missing value validation and nullable empty ... by @faisuc in #58158
    • [12.x] Fixup Eloquent Collection (param) docblocks by @jnoordsij in #58170
    • [12.x] add MigrationSkipped event by @jackbayliss in #58167
    • [12.x] Simplify LazyCollection passthru calls and docblocks by @jnoordsij in #58180
    • [12.x] Add BusBatchable tests by @miladev95 in #58175
    • Add previous locale to LocaleUpdated event by @OutlawPlz in #58179
    • [12.x] Fix inline mail embed replacement by Content-ID by @dxnter in #58173
    • [12.x] Fix multibyte string handling in chopStart and chopEnd by @mdariftiens in #58183
    • [12.x] Improve Collection docblock types by @jnoordsij in #58176
    • [12.x] Fix unable to disable created_at or updated_at column when attaching models by @crynobone in #58164
    • Remove unused variables from destructured arrays by @rolfvandekrol in #58187
    • [12.x] use process to trigger package uninstall event by @cosmastech in #58177
    • [12.x] Fix null array key deprecation in HasOneOrMany relation matching by @serhiilabs in #58191
    • [12.x] Fix Password::required() and Password::sometimes() usage as array by @crynobone in #58188
    • [12.x] Add TestResponse::assertHeaderContains assertion and tests by @miladev95 in #58200
    • [12.x] Update setup-node action to v6 by @jackbayliss in #58196
    Original source Report a problem
  • Dec 16, 2025
    • Parsed from source:
      Dec 16, 2025
    • Detected by Releasebot:
      Dec 17, 2025
    Laravel logo

    Laravel

    v12.43.1

    • [12.x] Only exclude Command ending with Test isn't an instance of Command by @crynobone in #58147
    Original source Report a problem

Related vendors