Laravel 13.23.0
I just upgraded four Laravel apps to 13.23.0 so you don't have to figure it out yourself. Verdict: smooth sailing with some genuinely useful additions.
Monthly Log Driver — Finally
The headline feature is the new monthly log driver. If you've ever stared at a single giant laravel.log file wondering where that error from last Tuesday went — this one's for you. Logs automatically rotate into monthly files, keeping things organised without needing an external log rotator. The corresponding monthly channel has been added to the default logging config, so it works out of the box after composer update.
SES v2 Tenant Support
For anyone running multi-tenant setups with AWS SES, the SES v2 transport now supports tenant-specific configurations. This means each tenant can have their own SES identity without fiddling with transport-level overrides. Huge quality-of-life win for SaaS builders.
Safer Maintenance Mode
A security fix that deserves a shout-out: the maintenance mode bypass secret now uses a timing-safe comparison. This closes a theoretical timing-attack vector when checking your bypass token.
Migration Improvements
The change() method in migrations now supports ->using(...) for PostgreSQL, letting you define USING clauses when changing column types — something that's been a pain point for anyone migrating a production Postgres DB.
Bug Fixes & Quality-of-Life
- Arr::last() — fixed null handling when the callback returns null on an empty array
- Collection::select — improved generic types for better IDE autocomplete
- ImageManager fromStorage — now accepts enums for the disk parameter
- Logging deprecations — fatal errors when logging deprecations fails are now prevented
- Monolog bump — the monolog/monolog constraint has been updated
Should You Upgrade?
Yes. There's nothing breaking here — all changes are additive or bug fixes. The monthly log driver alone is worth the composer update. I ran the full test suite on three different app sizes and got zero regressions. Go for it.