- Apr 28, 2026
- Date parsed from source:Apr 28, 2026
- First seen by Releasebot:Apr 28, 2026
v13.7.0
Laravel ships a broad 13.x update with stronger enum support, improved collection and queue behavior, better testing assertions, and numerous type and routing fixes. It also adds worker signal handling, lock enhancements, signed URL protection, and font optimization improvements.
[13.x] Apply rector fixes by @lucasmichot in #59787
Support enum in LazyCollection -> keyBy() by @Back1ng in #59809
[13.x] Add enum support to ConcurrencyManager driver method by @maherelgamil in #59801
[13.x] Allow arrays for assertSoftDeleted & assertNotSoftDeleted by @jackbayliss in #59796
[13.x] Extract exception context in JsonFormatter when ExceptionHandler is not bound by @cosmastech in #59799
[13.x] Add isLocked to the Lock class by @jackbayliss in #59791
Fix route registration for domain-scoped routes by @Bottelet in #59793
[13.x] Mark Scope@apply builder parameter as having covariant template by @jnoordsij in #59790
[13.x] Allowing DebounceFor attribute to be inherited by @TWithers in #59795
[13.x] Fix PendingDispatch resolving Cache for every dispatched job by @sumaiazaman in #59821
[13.x] Add bulk JSON path assertions to TestResponse by @cyrodjohn in #59829
[13.x] Fix false positives in LazyCollection::has() for duplicate keys by @Button99 in #59832
[13.x] Add UnitEnum type support for $limiterName on RateLimitedWithRedis by @trippo in #59841
[13.x] Allow jobs to react to worker signals by @jackbayliss in #59833
[13.x] Honor empty JSON:API sparse fieldsets by @prateekbhujel in #59813
[13.x] Fix flaky DynamoBatchTest timing assertions by @sumaiazaman in #59844
[13.x] Memoize credentials in SqsConnector by @kieranbrown in #59866
[13.x] Disable pausing on managed queue workers by @kieranbrown in #59870
[13.x] Fix getMigrationBatches return type annotation by @mahfuz-rahman007 in #59876
[13.x] Fix PHPDoc typo in MigrationRepositoryInterface by @mahfuz-rahman007 in #59875
[13.x] Add UnitEnum support to Cache Repository touch method by @shane-zeng in #59864
[13.x] Prevent array query params from bypassing signed URL validation by @maherelgamil in #59860
[13.x] Add enum support to setDefaultDriver in QueueManager, LogManager, and SessionManager by @maherelgamil in #59861
[13.x] Add enum support to RedisManager purge method by @genius-asif-hub in #59857
[13.x] Fix factory hasAttached method pivot JSON attribute handling by @rmd974 in #59856
[13.x] Implement CanFlushLocks on NullStore and MemoizedStore by @sumaiazaman in #59850
[13.x] Introduce WorkerInterrupted event by @jackbayliss in #59848
[13.x] Fix MigrationRepositoryInterface return type docblocks (object vs array) by @mosabbirrakib in #59887
int argument for Collection::sortBy() by @lorenzolosa in #59894
[13.x] Add detailed @return shape to Schema\Builder::getForeignKeys by @maherelgamil in #59903
[13.x] Fix EloquentModelDecimalCastingTest assertion across brick/math versions by @maherelgamil in #59904
[13.x] Correct Lock getCurrentOwner @return type to string|null by @mosabbirrakib in #59890
[13.x] Correct Batch fresh and add @return to self|null by @mosabbirrakib in #59891
[13.x] Align Mailable::cc @return with sibling fluent methods by @mosabbirrakib in #59892
[13.x] Add support for SortDirection enum to collections and Arr by @jnoordsij in #59859
Add @fonts Blade directive and Vite font optimization runtime by @WendellAdriel in #59584
[13.x] Refactor: add match by @alipowerful7 in #59914
[13.x] Refactor: remove unnecessary call function by @alipowerful7 in #59915
[13.x] Refactor: improve tests by @alipowerful7 in #59912
Align Enumerable all, times and range @return with implementations by @mosabbirrakib in #59911
Align Enumerable search and flatten @return with implementations by @mosabbirrakib in #59910
Specify Translation Loader namespaces shape by @mosabbirrakib in #59913
Fix duplicate type key in getTypes/processTypes return shape by @mosabbirrakib in #59909
int argument for sortByDesc and Enumerable sort methods by @mosabbirrakib in #59907
Match processForeignKeys return shape to Builder::getForeignKeys by @mosabbirrakib in #59908
Original source - Apr 26, 2026
- Date parsed from source:Apr 26, 2026
- First seen by Releasebot:Apr 27, 2026
v12.58.0
Laravel memoizes credentials in SqsConnector for improved SQS handling.
[12.x] Memoize credentials in SqsConnector by @kieranbrown in #59867
Original source All of your release notes in one feed
Join Releasebot and get updates from Laravel and hundreds of other software products.
- Apr 22, 2026
- Date parsed from source:Apr 22, 2026
- First seen by Releasebot:Apr 22, 2026
v12.57.0
Laravel improves 12.x with a broad round of fixes and developer-friendly refinements, including better mock and spy typing, stronger filesystem and enum support, safer time helpers, Redis and PDO updates, and support for named SQS credential providers.
Preserve types on partialMock() and spy() by @AJenbo in #59384
Fix missing UnitEnum support in ModelNotFoundException by @jtheuerkauf in #59423
[12.x] Fix macros with static closures by @FeBe95 in #59449
Correct Storage::fake() return type by @AJenbo in #59469
[12.x] Fix callable type for freezeTime, freezeSecond, and travelTo by @nbayramberdiyev in #59466
[12.x] Support string abstract in mock/partialMock/spy PHPDoc by @kayw-geek in #59477
Document thrown exceptions in FilesystemAdapter by @AJenbo in #59534
Hint \Redis @mixin on Connection by @AJenbo in #59532
[12.x] Use PDO subclass polyfill by @jnoordsij in #59640
[12.x] Fix infinite rate limiter TTL on custom increments by @paulandroshchuk in #59693
[12.x] Support named credential providers for SQS queue connections by @kieranbrown in #59754
[12.x] Prevent array to string conversion in signature validation by @alies-dev in #59778
Original source - Apr 21, 2026
- Date parsed from source:Apr 21, 2026
- First seen by Releasebot:Apr 22, 2026
v13.6.0
Laravel ships a broad 13.x update with performance, testing, queue, validation, and framework polish. It adds JSON response support for the health route, debounceable queued jobs, enum support in several managers, safer assertions, and fixes for Vite, cursor payloads, and decryption checks.
[13.x] Use version_compare function by @lucasmichot in #59687
[13.x] Flip misordered assertions arguments by @lucasmichot in #59691
[13.x] Remove unused variable in catch() by @lucasmichot in #59689
[13.x] Fix number abbreviation rollover between unit tiers by @Button99 in #59692
[13.x ]Use Null and Isset coalescing when possible by @lucasmichot in #59690
[13.x] Change count array comparison to empty array comparison to improve performance by @lucasmichot in #59688
[13.x] testsuite by @lucasmichot in #59702
[13.x] Enforce static calls by @lucasmichot in #59704
[13.x] Allow Table Attribute on child to override parent by @jackbayliss in #59701
[13.x] Return null from Cursor::fromEncoded for malformed payloads by @bipinks in #59699
[13.x] Port forward rate limiter fix by @paulandroshchuk in #59706
[13.x] Add debounceable queued jobs by @matthewnessworthy in #59507
[13.x] Support JSON responses for the built-in health route by @WendellAdriel in #59710
[13.x] Ensure Queue::route string defaults to queue only by @jackbayliss in #59711
[13.x] Fix failOnUnknownFields query parameter handling by @cyrodjohn in #59728
[13.x] Fix flaky QueueWorkerTest by freezing time before computing retryUntil by @bipinks in #59727
[13.x] Allow array of pivot arrays to be passed to hasAttached by @jackbayliss in #59723
[13.x] Fix TypeError in digits_between validation rule on non-string values by @sumaiazaman in #59717
[13.x] Add enum support to PasswordBrokerManager by @sumaiazaman in #59714
[13.x] Add enum support to BroadcastManager by @sumaiazaman in #59713
Change attempts column type from tiny to small integer by @ju-gow in #59718
[13.x] Get rid of useless Mockery::close by @lucasmichot in #59730
[13.x] Fix Vite CSS not loaded from nested chunk imports by @karim1999 in #59662
[13.x] Support named credential providers for SQS queue connections by @kieranbrown in #59733
[13.x] Enforce stricter assertions by @lucasmichot in #59749
[13.x] Cast to string before preg_match in decimal, max_digits, and min_digits rules by @sumaiazaman in #59739
[13.x] Ignore PHPUnit security advisory GHSA-qrr6-mg7r-m243 by @sumaiazaman in #59761
[13.x] Allow assertDatabase has & missing to accept arrays by @jackbayliss in #59752
[13.x ] Normalize Carbon by @lucasmichot in #59750
[13.x] Implement CanFlushLocks on FailoverStore by @sumaiazaman in #59738
[13.x] Validate MAC across all decryption keys by @ma32kc in #59742
[13.x] Use generic TModel in additional places in Factory class by @jnoordsij in #59780
[13.x] Ensure assertModelMissing and assertModelExists dont silently pass by @jackbayliss in #59772
[13.x] Introduce JsonFormatter by @cosmastech in #59756
[13.x] Add prefersJsonResponses() to the application builder by @WendellAdriel in #59753
[13.x] Add support for Cloudflare Email Service by @dwightwatson in #59735
[13.x] Add enum support to NotificationChannelManager channel and driver methods by @yousefkadah in #59783
Original source - Apr 14, 2026
- Date parsed from source:Apr 14, 2026
- First seen by Releasebot:Apr 15, 2026
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
- Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:Apr 7, 2026
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
- Apr 1, 2026
- Date parsed from source:Apr 1, 2026
- First seen by Releasebot:Apr 1, 2026
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
- Mar 26, 2026
- Date parsed from source:Mar 26, 2026
- First seen by Releasebot:Mar 27, 2026
v12.56.0
Laravel fixes schedule:list timezone display, validation wildcard message errors, and mocked class typing.
- [12.x] schedule:list display expression in the correct timezone by @xiCO2k in #59307
- [12.x] Fix validation wildcard array message type error by @sadique-cws in #59339
- Preserve class type of mocked classes by @AJenbo in #59353
- Mar 26, 2026
- Date parsed from source:Mar 26, 2026
- First seen by Releasebot:Mar 27, 2026
v11.51.0
Laravel fixes schedule:list to display expressions in the correct timezone.
[11.x] schedule:list display expression in the correct timezone by @xiCO2k in #59340
Original source - Mar 24, 2026
- Date parsed from source:Mar 24, 2026
- First seen by Releasebot:Mar 25, 2026
v13.2.0
Laravel ships queue enum support for #[Queue] and #[Connection], adds expressive attributes and enum-friendly attribute passing, improves scheduler and exception handling, and delivers performance and worker lifecycle fixes across SQL bindings, Octane, and overlapping jobs.
- feat(queue): support enums in #[Queue] and #[Connection] by @innocenzi in #59278
- Improve raw SQL binding substitution performance by @gufoe in #59277
- [13.x] fix: add missing negate for SeeInHtml assertion by @jesperbeisner in #59303
- [13.x] Allow for passing enums to attributes by @riesjart in #59297
- [13.x] Add releaseOnSignal param to withoutOverlapping by @jackbayliss in #59298
- Add symmetrical, expressive attributes by @jasonmccreary in #59284
- [13.x] Fix LazyPromise::wait() signature compatibility with Guzzle's PromiseInterface by @shavonn in #59301
- [13.x] schedule:list display expression in the correct timezone by @xiCO2k in #59286
- Handle exceptions in eventStream to prevent fatal error by @WendellAdriel in #59292
- [13.x] Ensure connectUsing works with UnitEnum / FileManager drive docblock by @jackbayliss in #59306
- [13.x] Include columns and index in UniqueConstraintViolationException by @cosmastech in #59299
- [13.x] Add TimedOut worker stop reason by @jackbayliss in #59310
- Fix Table attribute incrementing not working for Pivot models by @sadique-cws in #59336
- [13.x] Ensure ScopedBy Attribute works with inheritance by @jackbayliss in #59332
- Modify sum callback to include item key by @mathieutu in #59322
- [13.x] Bound error page query listener to prevent memory bloat in Octane by @JoshSalway in #59309
- [13.x] Allow opting out of worker Job exception reporting by @jackbayliss in #59308
- [13.x] Adds mobile safe-area-inset support to exception renderer by @dr-codswallop in #59341
- [13.x] Allow passing multiple arrays to has factory method by @jackbayliss in #59343
- [13.x] Allow Backoff Attribute to be variadic by @jackbayliss in #59354
- Mar 18, 2026
- Date parsed from source:Mar 18, 2026
- First seen by Releasebot:Mar 25, 2026
v13.1.1
Laravel breaks queue dependency in a new update.
Break queue dependency by @taylorotwell in #59275
Original source - Mar 18, 2026
- Date parsed from source:Mar 18, 2026
- First seen by Releasebot:Mar 18, 2026
v13.1.0
Laravel releases a coordinated set of 12.x and 13.x updates with bug fixes and subtle enhancements across queue handling, tests, HTML assertions, Carbon::now usage, Uri toString, and PHP 8.5 deprecation fixes, boosting reliability and compatibility.
12.x
- [12.x] Correct truncate exceptions at by @bretto36 in #59239
- [12.x] Fix float pluralization in trans_choice() by @JulianGlueck in #59268
- [12.x] Fix tests on PHP 8.5 by @SanderMuller in #59251
13.x
- [13.x] Remove useless \Mockery::close() by @lucasmichot in #59253
- [13.x] Use Carbon::now() instead of now() helper by @lucasmichot in #59252
- [13.x] Fix null broadcaster deprecation warning in PHP 8.5 by @mortenscheel in #59269
- [13.x] Add toString to Uri by @dwightwatson in #59259
Uncategorized
- Fix: Batch::add() wipes queue assignment on first job in array chains by @ProjektGopher in #59233
- Improvements for asserting HTML in text by @jasonmccreary in #59161
- Mar 18, 2026
- Date parsed from source:Mar 18, 2026
- First seen by Releasebot:Mar 18, 2026
v12.55.1
Laravel ships 12.x fixes addressing truncate exceptions, float pluralization in trans_choice, and PHP 8.5 test updates.
- [12.x] Correct truncate exceptions at by @bretto36 in #59239
- [12.x] Fix float pluralization in trans_choice() by @JulianGlueck in #59268
- [12.x] Fix tests on PHP 8.5 by @SanderMuller in #59251
- Mar 17, 2026
- Date parsed from source:Mar 17, 2026
- First seen by Releasebot:Mar 17, 2026
v13.0.0
Laravel releases a broad 13.x update with numerous fixes and enhancements across the framework. Highlights include PHP 8.3 minimum, Symfony 7.4/8.0 compatibility, API and queue improvements, new or refined query/build features, and test/CI reliability fixes. The long changelog signals real shipped changes.
Release notes
- Revert "[12.x] Query builder PDO fetch modes" by @taylorotwell in #54709
- [13.x] Prepare branch alias for Laravel 13 by @crynobone in #54701
- [12.x] Query builder PDO fetch modes + columns fix by @bert-w in #54734
- [13.x] Fix Tests/CI environments by @crynobone in #54760
- [13.x] Requires PHP 8.3 as minimum version by @crynobone in #54763
- [13.x] Add missing parameters to Response methods throw() and throwIf() by @cosmastech in #54798
- [13.x] Fix scope removal in nested where conditions by @willrowe in #54816
- [13.x] Remove function existence checks by @xurshudyan in #54876
- [13.x] Removed unneeded default argument by @AndrewMast in #54900
- [13.x] Fix unresolved merge conflict in Concurrency composer.json by @jnoordsij in #55233
- [13.x] Fixes merge conflict by @crynobone in #55294
- [13.x] Error exit code for clear command by @mbardelmeijer in #55355
- [13.x] Add #[\Override] to the BatchFake class methods by @imanghafoori1 in #55358
- [13.x] PDO Fetch modes by @bert-w in #55394
- Allow Listeners to dynamically specify deleteWhenMissingModels by @L3o-pold in #55508
- [13.x] Do not allow new model instances to be created during boot by @willrowe in #55685
- Fix typo in Blueprint: datetime => dateTime by @TheJoeSchr in #55859
- Feature: add support straight join in mysql by @jferdi24 in #55786
- [13.x] Register subdomain routes before routes that are not linked to a domain by @gdebrauwer in #55921
- [13.x] Supports Symfony 7.4 & 8.0 by @crynobone in #56029
- [13.x] Change to hyphenate prefixes by @u01jmg3 in #56172
- [13.x] Use exception object in JobAttempted event by @bert-w in #56148
- [13.x] remove superfluous element by @browner12 in #56303
- Add eventStream signature to ResponseFactory contract by @csfh in #56306
- fix: align ResponseFactory::eventStream signature with interface by @KIKOmanasijev in #56484
- [13.x] Cache::touch() & Store::touch() for TTL Extension by @yitzwillroth in #55954
- [13.x] Make QueueBusy event consistent with other queue events by @AhmedAlaa4611 in #56673
- [13.x] use clearer pagination view names by @browner12 in #56307
- [13.x] Update countBy docblock in Enumerable interface to allow for enum callback by @jnoordsij in #56897
- [13.x] Generate plural morph pivot table name by @willrowe in #56832
- [13.x] Resolve Symfony Console add() method deprecation by @KIKOmanasijev in #56488
- [13.x] Add command method to contract by @rodrigopedra in #56978
- Refactor: replace strpos check with str_contains for clarity by @arshidkv12 in #57042
- Remove unnecessary parameters by @arshidkv12 in #57047
- [README.md] change laravel bootcamp to laravel learn by @MoZayedSaeid in #57176
- [13.x] Resolve issues with tests by @jackbayliss in #57258
- [13.x] Bind manager instances to custom driver closures by @daniser in #57173
- [13.x] Compile full DELETE with JOIN including ORDER BY and LIMIT in MySQL grammar by @tegos in #57196
- [13.x] Flush Str factories when tearing down test case by @cosmastech in #57296
- [13.x] Update reset password notification subject by @ganyicz in #57882
- [13.x] Update verification email subject capitalization by @ganyicz in #57884
- [13.x] Simplify preg_replace_array callback by removing unnecessary foreach loop by @sumaiazaman in #57924
- [13.x] Fix changes from Laravel 12 by @crynobone in #57919
- [13.x] Default PendingRequest@pool() to use 2 for concurrency by @cosmastech in #57972
- [13.x] Copy Symfony\Component\HttpFoundation\Request::get() functionality to avoid breaking changes. by @crynobone in #58081
- [13.x] Defer registering schedule registered using ApplicationBuilder::withScheduling() by @crynobone in #58160
- [13.x] Return data object from ModelInspector to make show:model more flexible by @cosmastech in #58230
- [13.x] Add ability to default queue by class type by @jackbayliss in #58094
- [13.x] Add reason to WorkerStopping event by @jackbayliss in #58341
- [13.x] Add starting to Monitor Contract by @jackbayliss in #58399
- [13.x] add dispatchAfterResponse to the Dispatcher Contract by @jackbayliss in #58428
- [13.x] Add origin verification to request forgery protection by @benbjurstrom in #58400
- [13.x] Improve Enumerable interface docblock types by @jnoordsij in #58181
- Add missing chain method to interface by @Jeroen-G in #58429
- [13.x] Use unescaped unicode in Js support class by default by @jnoordsij in #58471
- [13.x] Add enum types to repository contract / allow enums for tagged caches by @jackbayliss in #58481
- [13.x] Restore eager-loaded relations when deserializing collections by @dxnter in #58477
- [13.x] Bump minimum PHPUnit by @crynobone in #58537
- [13.x] Respect default value for class dependencies in BoundMethod::call by @comhon-project in #58553
- [13.x] Bump minimum symfony/process by @crynobone in #58548
- [13.x] Fix illuminate/json-schema dependencies by @crynobone in #58612
- [13.x] Add hasSole and hasMany to the Enumerable interface by @JosephSilber in #58610
- [13.x] Ensure bootstrap withMiddleware works for the DownCommand by @jackbayliss in #58571
- [13.x] Remove override attribute on removed method by @crynobone in #58628
- [13.x] Ensures compatibility with symfony/console 8 by @crynobone in #58629
- [13.x] Add cc to Mailer contract by @jackbayliss in #58667
- Fix ThrottleRequests over-throttling with multiple distinct rate limit keys (#54386) by @HeathNaylor in #58707
- [13.x] Add markEmailAsUnverified to MustVerifyEmail interface by @amirhshokri in #58701
- [13.x] Adds previous exceptions in exception view by @DarkGhostHunter in #58680
- Attributes by @taylorotwell in #58578
- [13.x] Accept CarbonInterval for PendingProcess timeouts by @riesjart in #58842
- [13.x] Add Setup/TearDown trait attributes by @jackbayliss in #58685
- [13.x] Allow aliases to be set in Signature Attribute (#58853) by @jackbayliss in #58874
- [13.x] Adds PHPUnit 13 support by @nunomaduro in #58890
- [13.x] Display route binding fields in route:list output by @jackbayliss in #58889
- [13.x] feat: respect DeleteWhenMissingModels attribute on queued notifications by @calebdw in #58908
- [13.x] Resolve DeleteNotificationWhenMissingModelTest by @jackbayliss in #58919
- [13.x] add missing methods to Queue interface by @cosmastech in #58914
- [13.x] chore: define closure type on Middleware by @calebdw in #58929
- [13.x] Ensure SyncQueue JobAttempted gets the actual exception by @jackbayliss in #58954
- [13.x] Throw exception when served disks share the same URI by @jackbayliss in #58960
- [13.x] withoutOverlapping docblock by @jackbayliss in #58973
- [13.x] Fix composer.json by @crynobone in #58975
- [13.x] Update the dependencies version by @lucasmichot in #58995
- [13.x] Normalize composer.json by @lucasmichot in #58996
- [13.x] Add flushLocks() support to Cache stores by @amirhshokri in #58907
- [13.x] Add cache flushLocks() events by @amirhshokri in #59006
- [13.x] Refactor parameter names that are implemented from the interface by @mrvipchien in #59015
- [13.x] Add missing @throws into docblock for various methods by @mrvipchien in #59016
- Add insertOrIgnoreReturning method by @antonkomarev in #59025
- Add corner case tests for insertOrIgnoreReturning by @antonkomarev in #59028
- Extra validation on query builder upsert by @antonkomarev in #59029
- [13.x] Add ErrorBag attribute support for FormRequest by @Tresor-Kasenda in #59033
- [13.x] Add controller middleware attribute by @JurianArie in #59030
- [13.x] Add Authorize controller middleware attribute by @JurianArie in #59048
- [13.x] Fix symfony/translation deps by @crynobone in #59054
- [13.x] Remove supports for laravel/serializable-closure v1 by @crynobone in #59053
- Add saveOrIgnore Eloquent Model method for conflict-safe inserts by @antonkomarev in #59026
- [13.x] Add support for named arguments in event dispatching and broadcasting by @ph7jack in #59075
- [13.x] Supports pda/pheanstalk 8.0+ and remove 5.x by @crynobone in #59072
- [13.x] Bump dependencies by @crynobone in #59069
- [13.x] Add ability to set channel name via Log contextual attribute by @cosmastech in #59101
- [13.x] Ensure insertOrIgnoreReturning only marks records as modified when rows are inserted by @jackbayliss in #59083
- [13.x] Clean up ModelInfo by @cosmastech in #59080
- [13.x] Clean up JsonApi by @cosmastech in #59079
- [13.x] Indicate that raw queries should be literal strings by @axlon in #59081
- [13.x] Update brick/math constraint and rounding mode constant by @balu-lt in #59107
- [13.x] fix: MorphToMany morphClass type by @calebdw in #59110
- [13.x] Rename Middleware attribute parameter from $value to $middleware by @SanderMuller in #59133
- [13.x] fix: QueueRoutes docblocks for getRoute and $routes property by @SanderMuller in #59119
- [13.x] fix: DoesntContain docblock typo by @SanderMuller in #59117
- [13.x] BusFake assertNothingDispatched should check all dispatches by @jackbayliss in #59118
- [13.x] fix: Align JsonApiResource flushState maxRelationshipDepth with trait default by @SanderMuller in #59116
- [13.x] Make Cache touch() TTL required and remove redundant value fetching by @SanderMuller in #59121
- [13.x] Fix previousPath() for external referrers by @faytekin in #59159
- Add depth parameter to Arr::dot() by @faytekin in #59150
- [13.x] Drop method_exists checks in MonitorCommand by @jackbayliss in #59151
- [12.x] Add strict integer validation to Numeric validation rule by @RIESjart in #59156
- [12.x] Add *OrFail transaction methods to BelongsToMany by @SanderMuller in #59153
- [13.x] Add Exception to BatchCanceled event by @jackbayliss in #59163
- [13.x] Add support for brick/math 0.16 by @balu-lt in #59165
- Bump tar from 7.5.9 to 7.5.11 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot[bot] in #59164
- [12.x] Add missing *OrFail transaction methods to BelongsToMany by @erhanurgun in #59168
- [12.x] Add inOrderOf() method to query builder by @faytekin in #59162
- [12.x] Add tcp_keepalive option to PhpRedis connector by @heikokrebs in #59158
- [13.x] Add schedule:pause / resume command by @jackbayliss in #59169
- [12.x] untap PendingRequest by @cosmastech in #59188
- [12.x] Fix float to int deprecation in trans_choice() for certain locales by @hamedelasma in #59174
- [12.x] Allow touch() to accept multiple columns by @devajmeireles in #59175
- Revert "Add composite index to jobs table migration for improved queue polling" by @taylorotwell in #59202
- [12.x] Add fluent string validation rule builder by @SanderMuller in #59201
- [13.x] Add schedule resume and pause events by @jackbayliss in #59172
- [13.x] insertOrIgnoreReturning with multiple unique keys by @tpetry in #59187
- Update Command::withProgressBar phpdoc to account for arrow functions and non-void return types by @billypoke in #58766
- [12.x] Lazily evaluate value for constraints in HasOneOrManyThrough by @Jacobs63 in #59231
- Add string helper to get initials from a string by @denjaland in #59230
- fix: Strip gzip-compressed output from concurrent process response by @NikhiltGhalme in #59224
- [12.x] Fix failing tests introduced by #59201 by @SanderMuller in #59207
- [12.x] Avoid redundant Util::getParameterClassName() call in container resolution by @SanderMuller in #59220
- [12.x] Add missing conditional validation rule builders by @SanderMuller in #59209
- [12.x] Skip placeholder replacements when message does not contain them by @SanderMuller in #59211
- [12.x] Use array_push with spread operator in MessageBag::all() by @SanderMuller in #59217
- [12.x] Cache Route instances in CompiledRouteCollection::getByName() by @SanderMuller in #59221
- [13.x] Add additional Artisan attributes for usage, help and hidden by @ziadoz in #59204
- [12.x] Accept CarbonInterval for retry sleep duration by @riesjart in #59232
- [12.x] Fix failing phpstan by @GrahamCampbell in #59245
- [12.x] Update comments for PlanetScale MySQL and PostgreSQL by @GrahamCampbell in #59244
- [12.x] Use big integers for database cache expiration column by @tanerkay in #59243
- [13.x] Allow brick/math ^0.17 by @jackbayliss in #59249
- [12.x] Display file path and line number for closure routes in route:list by @devajmeireles in #59237
- [12.x] Add wantsMarkdown() and acceptsMarkdown() request methods by @joetannenbaum in #59238
- [13.x] Ensure RequiredUnless handles null by @jackbayliss in #59235
- Mar 17, 2026
- Date parsed from source:Mar 17, 2026
- First seen by Releasebot:Mar 17, 2026
v12.55.0
Laravel releases a broad 12.x update with new features and fixes across validation, query building, relationships, caching, and routing. Highlights include OrFail methods for BelongsToMany, inOrderOf, strict int validation tweak, PhpRedis keepalive option, and improved route, test stability, and helper utilities.
Release notes
- Add depth parameter to Arr::dot() by @faytekin in #59150
- [12.x] Add strict integer validation to Numeric validation rule by @riesjart in #59156
- [12.x] Add *OrFail transaction methods to BelongsToMany by @SanderMuller in #59153
- Bump tar from 7.5.9 to 7.5.11 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot[bot] in #59164
- [12.x] Add missing *OrFail transaction methods to BelongsToMany by @erhanurgun in #59168
- [12.x] Add inOrderOf() method to query builder by @faytekin in #59162
- [12.x] Add tcp_keepalive option to PhpRedis connector by @heikokrebs in #59158
- [12.x] untap PendingRequest by @cosmastech in #59188
- [12.x] Fix float to int deprecation in trans_choice() for certain locales by @hamedelasma in #59174
- [12.x] Allow touch() to accept multiple columns by @devajmeireles in #59175
- Revert "Add composite index to jobs table migration for improved queue polling" by @taylorotwell in #59202
- [12.x] Add fluent string validation rule builder by @SanderMuller in #59201
- Update Command::withProgressBar phpdoc to account for arrow functions and non-void return types by @billypoke in #58766
- [12.x] Lazily evaluate value for constraints in HasOneOrManyThrough by @Jacobs63 in #59231
- Add string helper to get initials from a string by @denjaland in #59230
- fix: Strip gzip-compressed output from concurrent process response by @NikhiltGhalme in #59224
- [12.x] Fix failing tests introduced by #59201 by @SanderMuller in #59207
- [12.x] Avoid redundant Util::getParameterClassName() call in container resolution by @SanderMuller in #59220
- [12.x] Add missing conditional validation rule builders by @SanderMuller in #59209
- [12.x] Skip placeholder replacements when message does not contain them by @SanderMuller in #59211
- [12.x] Use array_push with spread operator in MessageBag::all() by @SanderMuller in #59217
- [12.x] Cache Route instances in CompiledRouteCollection::getByName() by @SanderMuller in #59221
- [12.x] Accept CarbonInterval for retry sleep duration by @riesjart in #59232
- [12.x] Fix failing phpstan by @GrahamCampbell in #59245
- [12.x] Update comments for PlanetScale MySQL and PostgreSQL by @GrahamCampbell in #59244
- [12.x] Use big integers for database cache expiration column by @tanerkay in #59243
- [12.x] Display file path and line number for closure routes in route:list by @devajmeireles in #59237
- [12.x] Add wantsMarkdown() and acceptsMarkdown() request methods by @joetannenbaum in #59238