Laravel 12 shipped on 24 February 2025. Three days later I upgraded the portfolio locally — not for an “upgraded” badge, to see what actually breaks on a project with Spatie Translatable, Vite, and a populated Configuration admin.
What I tested first
composer update laravel/frameworkon a throwaway branchphp artisan test(Pest) — contact, newsletter, admin auth- A pass through
/admin/configuration: SMTP, AI, maintenance
If RuntimeConfigApplier dies, the public site can still “work” while admin lies. I check both.
composer update laravel/framework --with-all-dependencies
php artisan optimize:clear
php artisan test --filter=Contact
What I deliberately ignore
Official starters (Livewire Flux, etc.) are fine for greenfield. For Vannalec or the portfolio, I do not migrate admin to a new UI kit “because it’s trendy”. Craft means shipping without breaking the client.
Decision
I adopt Laravel 12 for DX and long-term maintenance. I do not adopt rewrite theatre. Next on clients: the same bump on Allan / Vannalec once the portfolio has been stable for two weeks.