Laravel 12.43.0 Is Now Released. Here's what's new!
Laravel 12.43.0 ships a focused set of improvements that sharpen type safety, harden cache and database behavior, and smooth out everyday developer workflows. From new PHPDoc callable types in Bus fakes to deadlock fixes in cache locks, enum support for Storage::fake(), and fresh collection helpers like mergeHidden and mergeVisible, this release is packed with small, high‑impact refinements that make large Laravel codebases easier to maintain and test.
Laravel 12.43.0, released on 16th December 2025, is a small but dense release focused on type-safety, cache/DB robustness, HTTP testing ergonomics, and a couple of nice DX additions.
High‑level changes
- Type & PHPDoc improvements across Bus, HTTP client, events, and collections to give better static analysis and IDE support
- Stability fixes around cache locks, database reconnection, Xdebug edge cases, and validation behavior
- Testing enhancements like new response assertions, Storage fakes with enums, and additional tests for core helpers
Type & PHPDoc improvements
- Added PHPDoc callable types for
BusFakemethods, improving auto-complete and static analysis when faking the bus - Improved type annotations for
$batchIdin theBatchabletrait and for synchronous HTTP client return types, tightening expectations when working with jobs andHttp::calls - Added missing docblock parameters in the
FailedOverevent and extra type hints/tests around higher-order proxies and collection behavior.
Runtime and bug fixes
- Fixed a deadlock bug in
cache_locksduring cleanup, improving reliability for distributed locks. - Fixed PHP 8.5 deprecations related to using a
nullcache store and passingnulltoarray_key_existsinAsPivot. - Fixed
hasEvenNumberOfParenthesesthrowingParseErrorwhen Xdebug is active and ensuredPassword::required()actually fails when the value is missing.
Framework behavior & minor tweaks
- Simplified clearing resolved instances for
Facadeclasses to clean up the container more predictably. PendingDispatch::afterResponseis now conditional, so after-response behavior is only registered when applicable.- Added
mergeHiddenandmergeVisibletoCollection, making it easier to merge visibility rules across model collections.
Tooling, tests, and integrations
Storage::fake()can now accept enums as disk names, aligning with enum-backed configuration patterns.- Added PHP 8.5 with Herd passthrough vars in
ServeCommand, updated GitHub Actionscheckoutto v6, and cleaned up theDynamoDbStore. - Added more tests (Support
Uriclass, HigherOrderProxy, Client Response tappable, etc.) and made the HTTP clientResponseclass tappable for more flexible middleware-like manipulation.
#v12.43.0
The following release notes are directly from the changelog. I have compiled a list of the changes from the changelog below:
- [12.x] Add PHPDoc callable types for BusFake methods by @alies-dev in https://github.com/laravel/framework/pull/58070
- Improve type annotations of
$batchIdinBatchabletrait by @markieo1 in https://github.com/laravel/framework/pull/58069 - [12.x] Fix deadlock in cache_locks on cleanup by @jackbayliss in https://github.com/laravel/framework/pull/58071
- feat: implement 'assertFailedDependency' response assertion by @artengin in https://github.com/laravel/framework/pull/58061
- [12.x] Fix using
nullcache store triggering PHP 8.5 deprecation by @jnoordsij in https://github.com/laravel/framework/pull/58074 - [12.x] Fix deprecated usage of passing
nulltoarray_key_existsinAsPivotclass by @jnoordsij in https://github.com/laravel/framework/pull/58073 - [12.x] Simplify clearing resolved instances for
Facadeclasses by @jnoordsij in https://github.com/laravel/framework/pull/58072 - [12.x] Add PHP 8.5 with Herd to passthrough variables in ServeCommand by @bashgeek in https://github.com/laravel/framework/pull/58080
- [12.x] Update actions/checkout v4 to v6 by @jackbayliss in https://github.com/laravel/framework/pull/58078
- [12.x] Let Storage::fake() accept enum as disk name by @bbredewold in https://github.com/laravel/framework/pull/58076
- Improve PHPDoc return type for synchronous HTTP Client methods by @khaled-sadek in https://github.com/laravel/framework/pull/58090
- [12.x] Adjust testCanRetrieveAllFailedJobs by @jackbayliss in https://github.com/laravel/framework/pull/58096
- [12.x] Allow Factory connection method to accept null by @jackbayliss in https://github.com/laravel/framework/pull/58108
- [12.x] Make PendingDispatch::afterResponse conditional by @kenneth-saey in https://github.com/laravel/framework/pull/58099
- [12.x] Add
mergeHiddenandmergeVisiblemethods to Collection class by @mahmoudmohamedramadan in https://github.com/laravel/framework/pull/58110 - Added "SSL error: unexpected eof" message to LostConnectionDetector by @GuidoHendriks in https://github.com/laravel/framework/pull/58113
- [12.x] Update git-auto-commit action by @jackbayliss in https://github.com/laravel/framework/pull/58118
- [12.x] Add tests for Support Uri class by @miladev95 in https://github.com/laravel/framework/pull/58114
- [12.x] Make the Client Response class tappable by @kevinb1989 in https://github.com/laravel/framework/pull/58115
- [12.x] Add missing docblock param in FailedOver event docblocks by @jackbayliss in https://github.com/laravel/framework/pull/58123
- [12.x] Clean up DynamoDbStore by @cosmastech in https://github.com/laravel/framework/pull/58116
- [12.x] Fix: Handle
ParseErrorinhasEvenNumberOfParentheseswhen Xdebug is active by @crynobone in https://github.com/laravel/framework/pull/58128 - [12.x] Fix Password::required() to fail when value is missing by @faisuc in https://github.com/laravel/framework/pull/58125
- [12.x] Add HigherOrderProxy tests (Collection & Tap) by @miladev95 in https://github.com/laravel/framework/pull/58138
- [12.x] Run
ConnectionEstablishedevent on database reconnection by @crynobone in https://github.com/laravel/framework/pull/58136
Join the conversation
What do you think?
Write a comment
No comments yet. Be the first to share a thought.