Still on Laravel 11? A practical upgrade checklist for production apps
Laravel 11 stopped receiving security fixes in March 2026. If a client app is still on it, the upgrade is no longer a "nice to have". The good news: moving from 11 to 12 is one of the gentlest major upgrades Laravel has shipped. Most apps need under a day of work. Here is the checklist I follow on client projects.
1. Check your PHP version first
Laravel 12 needs PHP 8.2 or newer. Run php -v on the server, not just your laptop. Shared hosting and older VPS images often lag behind. Upgrade PHP first, deploy, and confirm nothing breaks before touching Laravel itself.
2. Bump the framework and first-party packages
In composer.json:
"laravel/framework": "^12.0", "phpunit/phpunit": "^11.0", "pestphp/pest": "^3.0" Then run composer update and read every conflict message. In practice, the blockers are usually third-party packages that haven't tagged a Laravel 12 release yet, not Laravel itself.
3. Carbon 3 is now required
Laravel 12 dropped Carbon 2. Carbon 3 is mostly compatible, but diffIn* methods now return floats and can be negative. Search your code for diffInDays, diffInMinutes and similar calls, especially in billing, trial-expiry and report logic.
4. UUIDs: v7 by default
The HasUuids trait now generates ordered UUIDv7 values. If any code depends on UUIDv4 (for example, external systems that validate the format), switch those models to HasVersion4Uuids.
5. Small behaviour changes worth a grep
- Image validation no longer accepts SVG by default. Use
image:allow_svgwhere you really need it. - The local filesystem disk now defaults to
storage/app/privatein new apps. Existing apps keep theirconfig/filesystems.php, so check it if you rebuild config from a fresh skeleton. -
mergeIfMissingnow handles dot-notation keys as nested arrays.
6. Run the test suite, then a staging deploy
If the app has no tests, write five smoke tests before upgrading: login, one create, one update, one payment or checkout path, and one queued job. That small safety net catches most real-world upgrade breakage.
7. Don't stop at 12
Laravel 13 is already out. Once you are on 12 with a green test suite, the next hop is far less painful than leaving a codebase two versions behind.
I wrote a longer comparison of what changed between the two versions, with the exact steps I use, here: Laravel 11 vs Laravel 12 — what changed and how to upgrade.
Arun Tyagi is a freelance Laravel and SaaS developer based in Noida, working with startups in India and the UAE.