Laravel Release Notes
Last updated: Feb 25, 2026
- Feb 24, 2026
- Date parsed from source:Feb 24, 2026
- First seen by Releasebot:Feb 25, 2026
v12.53.0
Laravel 12.x rolls out numerous improvements across JsonSchema, queues, caching, events, and database. Highlights include new JsonSchema numeric/array support, better error handling, tests, and refined scheduling and maintenance features.
Release notes
[12.x] Add multipleOf support to JsonSchema numeric types by @Amirhf1 in #58903
[12.x] chore: don't format notifiables in NotificationSender::send by @calebdw in #58900
[12.x] Add vector option to whereFullText for pre-computed tsvector columns by @milroyfraser in #58893
[12.x] Add array key support for buildMorphMapFromModels() function by @josephkerkhof in #58891
[12.x] Fix RequestException summarizing for Guzzle streamed responses by @cosmastech in #58909
[12.x] Tests for streamed RequestException by @cosmastech in #58910
Support a serializable classes value on caches by @taylorotwell in #58911
[12.x] Simplify TokenGuard methods by @Amirhf1 in #58923
[12.x] Add uniqueItems support to JsonSchema ArrayType by @Amirhf1 in #58922
[12.x] Add tests for PhpRedisClusterConnection flushdb method by @miladev95 in #58917
[12.x] Add support for named arguments in event dispatching and broadcasting by @ph7jack in #58913
[12.x] Allow down command to refresh maintenance mode options by @alies-dev in #58918
[12.x] Rollback lingering PDO transaction before retrying on commit deadlock by @dxnter in #58906
[12.x] Simplify queue resolution using match expression by @josephkerkhof in #58928
Bump tar from 7.5.7 to 7.5.9 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot[bot] in #58931
[12.x] Fix model serialization in queue jobs by @axlon in #58939
[12.x] Change Mail text alignment from left to start by @zvizvi in #58935
[12.x] Refactor convertValuesToBoolean to use match for cleaner logic by @josephkerkhof in #58927
[12.x] Allow Scheduled Command Event macros to be applied to schedule groups by @stevebauman in #58926
[12.x] Fix race condition on creating the real-time facade cache file (#58945) by @sosias in #58947
[12.x] Show all mismatched values in assertSessionHasAll failure output by @dxnter in #58946
Fix RetryCommand not working for SQS FIFO queue by @cwang22 in #58936
[12.x] Improve return types for Wormhole and InteractsWithTime by @KentarouTakeda in #58951
[12.x] Add Cache::funnel() for concurrency limiting with any cache driver by @mathiasgrimm in #58439
[12.x] Ensure oldest_pending is displayed in queue:monitor by @jackbayliss in #58952
[12.x] Fix/cross database null safe equals by @patrickomeara in #58962
[12.x] Add MySQL inRandomOrder regression tests by @laraib15 in #58966
[12.x] Add missing @throws docblocks to Illuminate/Http by @Amirhf1 in #58965
Fix Invalid Types by @RyanSchaefer in #58963
JSONP Check by @taylorotwell in #58971
[12.x] Resolve Stan Mailable CI error by @jackbayliss in #58972
[12.x] Remove unnecessary dirname calls. by @jelleroorda in #58984
[12.x] Add missing @throws docblocks to Serializer and Type classes in Illuminate/JsonSchema by @mrvipchien in #58981
- Feb 17, 2026
- Date parsed from source:Feb 17, 2026
- First seen by Releasebot:Feb 18, 2026
v12.52.0
12.x patches roll out with a wide array of fixes and refactors across docs, queues, caching, and collections, plus new features like temporaryUploadUrl support and factory helpers. It tightens PHPDocs, improves stability, and standardizes code paths for better reliability.
- [12.x] Fix: @return in doc blocks by @alipowerful7 in #58746
- [12.x] Ensure defer callbacks aren't discarded when using the sync queue by @jackbayliss in #58745
- [12.x] Refactor: remove Arr::wrap() and add Collection::wrap() by @alipowerful7 in #58748
- Add support for temporaryUploadUrl to the local filesystem by @mnapoli in #58499
- Only merge cached casts for accessed attribute by @ug-christoph in #57627
- [12.x] Sort stan issue on PendingRequest by @jackbayliss in #58760
- [12.x] Update alphabetical order in facades.yml by @luisscruza in #58757
- [12.x] allow string-based expressions for selectExpression() by @tpetry in #58753
- Revert "[12.x] Adjust freshTimestamp for SQL Server" by @calebdw in #58758
- [12.x] Fix return empty Collection for non-model JSON:API resources by @noir4y in #58752
- [12.x] Refactor: remove extra space by @alipowerful7 in #58751
- [12.x] Standardize regex delimiter in ObserverMakeCommand::parseModel by @mohammadRezaei1380 in #58777
- [12.x] Fix incorrect @return type in VendorPublishCommand::publishTag by @mohammadRezaei1380 in #58774
- Fix phpdoc type in promptForMissingArgumentsUsing by @billypoke in #58768
- [12.x] cast Batch::progress() return value to int by @zjbarg in #58767
- [12.x] Drop Collection import from AbstractRouteCollection by @jackbayliss in #58769
- [12.x] Fix missing InputArgument::IS_ARRAY in getArguments PHPDoc by @kayw-geek in #58771
- [12.x] Fix: @return for resolveResourceRelationshipIdentifiers() by @alipowerful7 in #58764
- [12.x] Mailable::later() does not set delay on SendQueuedMailable instance by @amirhshokri in #58765
- [12.x] Refactor: use enum_value() helper for environment value extraction by @alipowerful7 in #58785
- [12.x] Add delay support assertions for queued mailables by @amirhshokri in #58787
- Fix MySQL connection string to use --ssl-mode=DISABLED for modern clients by @AJenbo in #58786
- [12.x] Refactor: standardize regex by @alipowerful7 in #58789
- [12.x] Allow $preserveKeys param for LazyCollection random by @jackbayliss in #58791
- [12.x] Refactor: new Collection() by @alipowerful7 in #58793
- [12.x] Add makeMany method to Factory by @jackbayliss in #58795
- [12.x] Add withoutAfterMaking() and withoutAfterCreating() factory helpers by @ziadoz in #58794
- [12.x] Backport withMiddleware changes from 13.x by @jackbayliss in #58798
- [12.x] Fix: add |array in doc block by @alipowerful7 in #58805
- [12.x] Add option to opt out of parallel safe cache prefix by @jackbayliss in #58801
- [12.x] Normalize Throwable docblocks to fully-qualified name by @amirhshokri in #58802
- [12.x] Refactor: remove unnecessary \BackedEnum by @alipowerful7 in #58807
- Use atomic writes when creating inline Blade component views by @cyppe in #58815
- [12.x] Add missing tests for Request::fullUrlWithoutQuery by @miladev95 in #58814
- Improve File::toKilobytes() DocBlock return type by @Amirhf1 in #58811
- Use atomic writes in BladeCompiler to prevent race condition by @cyppe in #58812
- [12.x] Refactor: add JSON decoded by @alipowerful7 in #58830
- [12.x] Refactor: add missing @throws tag in dock block by @alipowerful7 in #58829
- [12.x] Formatting by @amirhshokri in #58828
- [12x]Refactor: remove unnecessary \BackedEnum in HasAttributes.php by @mohammadRezaei1380 in #58827
- [12x] Refactor conditional message formatting using match expression by @mohammadRezaei1380 in #58825
- [12.x] Refactor: use match expression by @alipowerful7 in #58824
- [12.x] Simplify compileSelect method return by @amirhshokri in #58821
- [12.x] Refactor: simplify code by @alipowerful7 in #58820
- [12.x] Refactor: remove unnecessary \BackedEnum by @alipowerful7 in #58818
- [12.x] Ensure HttpClientTest doesnt flake in Windows CI by @jackbayliss in #58817
- [12.x] Refactor: JSON decoded to decoded JSON by @alipowerful7 in #58849
- [12.x] Allow closure parameters in docblock for when() helper function by @gazben in #58862
- [12.x] Fix typo in cache composer.json by @amirhshokri in #58875
- [12.x] Remove unnecessary forgetDriver()from TestCaches by @jackbayliss in #58878
- Revert "[12.x] Fixed precision checks for column types in SQL Server grammar" by @taylorotwell in #58888
- [12.x] Display closures and standalone functions correctly in exception trace by @avosalmon in #58879
All of your release notes in one feed
Join Releasebot and get updates from Laravel and hundreds of other software products.
- Feb 15, 2026
- Date parsed from source:Feb 15, 2026
- First seen by Releasebot:Feb 15, 2026
- Feb 10, 2026
- Date parsed from source:Feb 10, 2026
- First seen by Releasebot:Feb 11, 2026
v12.51.0
Laravel 12.x release notes summarize numerous fixes and tweaks across typing, docs, tests, and small feature improvements. The breadth of entries and PR references indicate real shipped changes.
12.x
- Remove type hint in favor of return type by @WendellAdriel in #58621
- [12.x] Adjust freshTimestamp for SQL Server by @aimeos in #58614
- [12.x] Handle binary data in Js::encode() debug renderer by @denis-chmel in #58618
- [12.x] Add ArrayObject props to AsEncryptedArrayObject to match AsArrayObject by @AndrewMast in #58619
- fix: Arr::wrap() return type by @calebdw in #58625
- [12.x] Fix typo in type definition by @shaedrich in #58624
- [12.x] Prevent dupe locale checks in Lang::get() when locale matches fallback by @jackbayliss in #58626
- [12.x] chore: add deprecation to Request::get() by @calebdw in #58635
- [12.x] Fix Str::substrReplace for edge cases with negative offset or length by @jboonstra70 in #58634
- [12.x] Refactor: improve doc blocks by @alipowerful7 in #58630
- [12.x] Add BatchCancelled Event by @jackbayliss in #58627
- [12.x] Fix typo in type definition by @amirhshokri in #58638
- [12.x] Update reload tasks to include schedule:interruption by @adevade in #58637
- docs: add missing description to FilesystemAdapter::report() docblock by @eranishojha in #58640
- [12.x] Allow closures for values in firstOrCreate and createOrFirst by @gcavanunez in #58639
- [12.x] Support afterSending method on notification by @gdebrauwer in #58654
- [12.x] Allow Stringable::deduplicate() to accept array of characters by @Tresor-Kasenda in #58649
- Update regex for trans_choice to allow negative ranges by @hmazter in #58648
- Added timeout method to query builder for MySQL by @Vladelis in #58644
- [12.x] Add assertJobs method on PendingBatchFake by @gdebrauwer in #58606
- [12.x] Fix batch counts when deleteWhenMissingModels skips missing model jobs by @yankewei in #58541
- [12.x] Fix Postgres sequence starting value for custom schemas/connections by @joteejotee in #58199
- [12.x] Add whenFails and whenPasses methods on Validator by @gdebrauwer in #58655
- [12.x] Bus::assertBatched() with array by @gdebrauwer in #58659
- [12.x] Refactor: improve doc block by @alipowerful7 in #58677
- [12.x] Add withoutHeader() method to Response by @miladev95 in #58671
- [12.x] Add integer array key support in phpdocs by @dluague in #58668
- Illuminate\Console\Parser typehint fix. by @LastDragon-ru in #58670
- fix: replace substr with mb_substr for user agent encoding by @jonagoldman in #58703
- chore: fix the Laravel ASCII SVG so that its characters perfectly align to columns by @markjaquith in #58702
- [12.x] Allow retrieving all view data via viewData() in TestResponse by @shane-zeng in #58700
- Exception page: fix pop in for non main frames by @martinpl in #58698
- [12.x] Add missing @throws annotations to validation rules and JsonResponse by @QDenka in #58697
- [12.x] Add conditional return type hint for Route::middleware() method. by @marcreichel in #58699
- [12.x] Improved type hints for when() helper function. by @marcreichel in #58696
- [12.x] Support Eloquent builders and relations as subqueries to update queries by @axlon in #58692
- Add cache prefix isolation for parallel testing (#57584) by @HeathNaylor in #58691
- Fix whereBetween to accept DatePeriod and handle missing end dates (#58092) by @HeathNaylor in #58687
- Fix Str::isUrl() returning false for single-char domain names (#58538) by @HeathNaylor in #58686
- Fix HTTP client response type hints for IDE compatibility (#58555) by @HeathNaylor in #58684
- Fix types for ConfirmableTrait::confirmToProceed by @rolfvandekrol in #58681
- [12.x] Refactor: simplify return with ?? by @alipowerful7 in #58679
- [12.x] Refactor: replace header / headers with standardized header(s) by @alipowerful7 in #58678
- Add SSL cert/key support to MySQL schema dump and load (#57821) by @HeathNaylor in #58690
- Allow specifying Redis connection on Redis-based queue middleware by @markieo1 in #58656
- [12.x] Use JS to create the Laravel ASCII SVG logo on the fly by @markjaquith in #58719
- [12.x] Feat: add orderByPivotDesc() by @alipowerful7 in #58720
- [12.x] Refactor: add @throws \InvalidArgumentException to doc blocks by @alipowerful7 in #58714
- [12.x] Restore original dispatcher bindings after precognitive request by @pindab0ter in #58716
- [12.x] Ensure throwIfStatus / throwUnlessStatus work for all status codes by @jackbayliss in #58724
- Fix Queue::fake() not releasing unique job locks between tests (#58533) by @HeathNaylor in #58718
- [12.x] Refactor: add _ to more readability digit by @alipowerful7 in #58738
- [12.x] Refactor: Clean up unused $config parameters in ConcurrencyManager by @alizadeh7091 in #58739
- [12.x] Refactor: use Dumpable by @alipowerful7 in #58743
- [12.x] Update forever cookie factory docblock to reflect 400-day duration by @jackbayliss in #58744
- Feb 4, 2026
- Date parsed from source:Feb 4, 2026
- First seen by Releasebot:Feb 5, 2026
v12.50.0
A sweeping 12.x update brings test improvements, queue and cache fixes, typing enhancements, new helpers, and security bumps across the framework. It tightens phpunit constraints, refactors tests, and adds typed getters and utility tweaks for better reliability.
Release notes for 12.x
- [12.x] Test Improvements by @crynobone in #58531
- [12.x] Resolve the correct queue factory when using laravel octane by @BertvanHoekelen in #58530
- [12.x] Clear parallel test view cache directories by @eduPHP in #58525
- [12.x] fix: allow phpstan to understand default value for Request::enum by @calebdw in #58529
- [12.x] feat: allow queued listeners to be unique by @calebdw in #58402
- [12.x] Use morphMap when serializing model identifiers by @cosmastech in #58482
- [12.x] Add authoritymethod to Support/Uri by @jackbayliss in #58534
- [12.x] Use try/finally for buildStack cleanup in Container::build by @comhon-project in #58536
- [12.x] Update phpunit version constraints to address CVE by @PerryvanderMeer in #58526
- Bump tar from 7.5.6 to 7.5.7 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot[bot] in #58539
- [12.x] Ensure Validator message defaults if using custom size messages by @jackbayliss in #58554
- [12.x] Add withoutAppends to HasAttributes by @AhmedAlaa4611 in #58552
- [12.x] Refactor: simplify in match by @alipowerful7 in #58547
- Revert "[12.x] Update phpunit version constraints to address CVE" by @crynobone in #58542
- [12.x] Add hasMany() method to collections by @JosephSilber in #58550
- [12.x] Retain associative keys on eager loaded relations by @Jade-GG in #58506
- [12.x] Add typed getters on Cache by @ahinkle in #58451
- [12.x] Add MaintenanceMode facade to docblock generator by @axlon in #58564
- [12.x] Adjust docblock for formatActionForCli by @jackbayliss in #58562
- [12.x] brick/math of float deprecation by @jackbayliss in #58563
- [12.x] Improve migration types by @shaedrich in #58561
- [12.x] Remove extra space by @amirhshokri in #58573
- [12.x] Drop foreach from preg_replace_callback helper by @jackbayliss in #58570
- [12.x] Improve typing in console/command namespace by @shaedrich in #58565
- [12.x] Refactor: improve tests by @alipowerful7 in #58582
- [12.x] Update callback type hints for Context's Repository by @cosmastech in #58581
- [12.x] Exclude decorative ASCII art SVG from exception page in non-browser contexts by @serhiilabs in #58580
- [12.x] Improve types of Arr helper by @shaedrich in #58518
- [12.x] Add tests for withoutAppends() method by @AhmedAlaa4611 in #58583
- [12.x] Add tests for hasAppended() method by @AhmedAlaa4611 in #58587
- [12.x] Sort flaky MaintenanceModeTest by @jackbayliss in #58590
- [12.x] Preserve notification state mutations from via() in sendNow() by @alimorgaan in #58558
- [12.x] Fix: add |null for $name in storeAs() by @alipowerful7 in #58613
- [12.x] Add InteractsWithData::clamp() by @cosmastech in #58608
- [12.x] try-catch all composer package uninstalls by @cosmastech in #58609
- [12.x] InteractsWithData@enum() refactor by @cosmastech in #58607
- [12.x] Enum support for Cache::get() with array keys by @jackbayliss in #58616
- [12.x] Fixed precision checks for column types in SQL Server grammar by @aimeos in #58602
- [12.x] Fix illuminate/reflection workflow directory by @crynobone in #58600
- [12.x] Ensure File fail doesn't double translate in fail() by @jackbayliss in #58598
- [12.x] Ensure mailable HTML assertions properly escape quotes by @jackbayliss in #58595
- Jan 28, 2026
- Date parsed from source:Jan 28, 2026
- First seen by Releasebot:Jan 28, 2026
v12.49.0
Laravel 12.x delivers stability with memory fixes, multibyte safe strings, and enum aware sessions. It expands collections and resources tools, improves queue and database hint handling, and patches leaks for a smoother dev experience.
- [12.x] Clean up compiled views after parallel testing by @dxnter in #58440
- [12.x] Support "where subquery between columns" by @gdebrauwer in #58441
- [12.x] Use searchable prompt for db:table command by @sakshamgorey in #58442
- [12.x] keep single NotificationSender instance by @rodrigopedra in #58452
- [12.x] Allow enum keys in Cache::flexible() and withoutOverlapping() by @jackbayliss in #58444
- [12.x] Add preserveKeys method to AnonymousResourceCollection by @comhon-project in #58443
- Bump tar from 7.5.3 to 7.5.6 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot [bot] in #58454
- [12.x] Fix memory leak in Arr::dot() by @benjamin-commentor in #58458
- 12.x fix: use multibyte-safe functions in Str::afterLast() by @irabbi360 in #58457
- [12.x] Ensure Session now() and flash() accept enums by @jackbayliss in #58459
- [12.x] Revert "feat: aliasing when selecting database expressions ( #58436 )" by @u01jmg3 in #58469
- [12.x] Add hasSole() method to collections by @JosephSilber in #58463
- [12.x] Skip message serialization when log level is not handled by @dxnter in #58475
- [12.x] Add missing @param documentation to SessionGuard constructor by @jackbayliss in #58493
- [12.x] do assignment instead of mutating to handle immutable carbon object. by @MrPunyapal in #58498
- Enhance index hint validation for multiple indexes by @FlexIDK in #58505
- [12.x] Make QueueFake assertPushedTimes public by @jackbayliss in #58511
- [12.x] Ignore deadlock on DatabaseLock release by @jackbayliss in #58507
- [12.x] Allow down command --retry option to accept datetime values by @alies-dev in #58509
- January 2026
- No date parsed from source.
- First seen by Releasebot:Jan 26, 2026
- Jan 20, 2026
- Date parsed from source:Jan 20, 2026
- First seen by Releasebot:Dec 3, 2025
- Modified by Releasebot:Jan 27, 2026
- Jan 20, 2026
- Date parsed from source:Jan 20, 2026
- First seen by Releasebot:Jan 21, 2026
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
- Jan 20, 2026
- Date parsed from source:Jan 20, 2026
- First seen by Releasebot:Jan 21, 2026