Laravel 13.13, weekly updates and tip

Laravel 13.13

I hope you don't have triskaidekaphobia, cause this week brings us to Laravel 13.13. Here are the highlights:

  • Added MariaDB vector index capability in #60334
  • Introduce Bus::bulk() in #60297
  • Hint unit in UniqueFor in #60289
  • Report MultipleRecordsFoundException from sole() in #60294
  • Enhance Cache attribute to support memoization in #60309
  • Fix Queue and Connection attributes in Mailable::queue() and later() in #60328
  • Add attachFromStorage helpers to notification MailMessage in #60268
  • Allow Http Client to be used as PSR Client in #60295

You may review the full branch diff on GitHub for a complete list of changes.

Weekly Journal

Last week the girls were off, so I mostly dabbled on my side-projects when I had free time. I launched one of them. It's not tech related. But I still built it with Laravel and my Fast Laravel practices.

Speaking of practices, I also pushed up a set of skills for the BaseCode practices. I still want to review these and add a few more. But this was the first pass. Again, I ran /basecode within a few of my own projects - it definitely found things.

I started this week off by patching a few boundary cases which were reported for Shift. I also finished a Human Shift - upgrading a Laravel 11 application, with a lot of Livewire 2 components.

Again, I have capacity for more Human Shifts over the coming months. So if you or your team has an outdated Laravel application you'd like upgraded, well, I'm your guy.

Weekly Tip

Not so much a tip, but a what if... What if form requests offered a GET response. So invalid requests would respond via GET, setting errors via query parameters instead of the session.

This may sound odd, but here's a use case. When caching pages, you don't want to rely on session data. That immediately takes form requests off the table. So you either don't use them, or you don't cache the page.

But that's not ideal. Consider a high-traffic site with a login. That login form has a few simple fields and likely displays a generic message when login fails. If form requests offered a GET response, you could easily cache the login form. Since the response would include a query string it would cache separate from the default form. The query parameters would also decide which errors to display.

Ideally the code would all be the same. Just a property or interface to inform the form request to return a GET response. Who knows, maybe the Blade directives could be smart enough to pull from the query parameters. No code changes. Just worked.