Laravel 13.36, weekly updates and tip
Laravel 13.36
This week brings us to Laravel 13.36. Here are the highlights:
- Allow queue workers to flush sticky connections between jobs in #61915
- Add validation rule builders for remaining validation rules in #61833
- Add
backgroundconnection to the default queue config in #61917 - Batch Redis queue notification pushes in #61965
- Fix JSON path updates being lost after reading an
Attributeaccessor in #61962
You may review the full branch diff on GitHub for a complete list of changes.
Weekly Journal
Last week I shot my shot at converting Laravel's test suite from Mockery to Double. The PR is still open. Not merged. But, hey, not closed either. So I'm keeping an eye on that.
Last week I had a Human Shift to start perfectly during the flights home. This time upgrading a Laravel 5.5 app. The app was rather frontend heavy with Vue, so I was able to upgrade the backend with Shift and AI in about 6 hours. Spent about 2 hours refactoring some outdated dependencies and practices. Now I'm helping redeploy to Laravel Cloud.
Since I prioritize client work, I didn't finish the redesign of the laravelshift.com home page. I did land on a direction though. So to prioritize that, I'll probably work on it in tomorrow's livestream.
Weekly Tip
I noticed last week that AI (Claude) added some helper methods to a form request. I've noted in several old newsletters, but Form Requests are a completely underutilized feature in Laravel. Both within the community and the framework.
That is, they are a great place to encapsulate request logic. I think Laravel could autowire even more into these objects (but I understand the slippery slope that might create).
Anyway, I had a sort of dashboard form, and AI threw these nice helpers on the form request:
1public function range(): string 2{ 3 return $this->validated('range') ?? '7d'; 4} 5 6public function to(): Carbon 7{ 8 return now()->endOfDay(); 9}10 11public function version(): ?string12{13 return $this->validated('version') ?: null;14}15 16public function filters(): array17{18 return $this->version() !== null ? ['version' => $this->version()] : ['range' => $this->range()];19}