Should I upgrade to Laravel 11 to 12 now?
Laravel teams need a current decision card for whether to move to Laravel 12 now or temporarily hold on Laravel 11, because starter-kit changes and the PHPUnit 11 baseline can change upgrade effort and CI compatibility.
Blockers
- requires_version: framework/laravel-12 → package/phpunit-11
- requires_version: framework/laravel-12 → package/pest-3
- requires_version: framework/laravel-12 → package/carbon-3
Who this is for
- small-team
- enterprise
- monorepo
Candidates
Upgrade to Laravel 12 now and adopt the current framework baseline
As of 2026-04-02, Laravel 11 is already out of security support because its security-fix window ended on 2026-03-12, while Laravel 12 receives security fixes until 2027-02-24. Laravel's official 12.x release notes describe 12 as a relatively minor maintenance release and say most applications may upgrade without changing application code. The required baseline changes in the 12.x upgrade guide are `laravel/framework` `^12.0`, `phpunit/phpunit` `^11.0`, `pestphp/pest` `^3.0`, and Carbon 3, with Laravel 12 supporting PHP 8.2 through 8.5. Laravel 12 also formalized the new official starter-kit direction around React, Svelte, Vue, and Livewire, with optional WorkOS AuthKit integration.
When to choose
Use this by default if your app is already on PHP 8.2+ and your test suite can run cleanly on PHPUnit 10.5 or is already close to PHPUnit 11 compatibility. It is the right choice for teams that do not want to remain on an unsupported Laravel major and can absorb a short CI-and-test cleanup now.
Tradeoffs
You get back onto supported Laravel and align with the current starter-kit and testing ecosystem. The cost is immediate dependency churn in CI, test utilities, and any code affected by Laravel 12's documented behavior changes.
Cautions
The non-obvious caveat is that Laravel's starter-kit shift does not mean you should try to 'upgrade the starter kit' in an existing app; the official docs say there is no need to update the starter kit itself. Review Laravel 12 migration caveats that can surface in mature apps, especially the UUIDv7 switch in `HasUuids`, Carbon 3 requirement, the `local` disk default moving to `storage/app/private`, and SVG no longer being accepted by the `image` rule unless explicitly allowed. If you choose a new WorkOS-powered starter kit, WorkOS pricing as of 2026-04-02 is free up to 1 million active users, then `$2,500 / mo` per additional 1 million users, with custom domain priced separately at `$99 / mo`.
Hold on Laravel 11 only as a short blocker-clearing phase
As of 2026-04-02, this means deliberately staying on an unsupported framework version, because Laravel 11 security fixes ended on 2026-03-12. The only strong reason to do that is a temporary blocker such as CI images, internal packages, or a large test suite not yet ready for PHPUnit 11. PHPUnit 11 requires PHP 8.2 or later, promotes some PHPUnit 10 soft deprecations to hard deprecations or removals, and deprecates docblock metadata annotations that will be removed in PHPUnit 12. This makes Laravel 12 upgrade risk concentrate more in test and tooling compatibility than in framework code changes.
When to choose
Use this only if your upgrade is blocked by test-suite or CI compatibility and you can define a short exit window with owners and dates. The decisive factor is whether you need a brief stabilization sprint to eliminate PHPUnit 10.5 deprecation warnings and modernize test metadata before moving.
Tradeoffs
You reduce immediate delivery risk from a rushed CI or test migration. In exchange, you accept unsupported-framework risk, ongoing ecosystem drift, and a second round of work later instead of closing the gap now.
Cautions
Do not treat this as a neutral 'wait and see' option. PHPUnit's own guidance says you should not try to upgrade to PHPUnit 11 until the suite runs on PHPUnit 10.5 without deprecation warnings, so a Laravel 11 hold should be explicitly framed as a remediation window for tests and build tooling, not as a medium-term platform choice.
Try with your AI agent
$ npm install -g pocketlantern $ pocketlantern init # Restart Claude Code, Cursor, or your MCP client, then ask: # "Should I upgrade to Laravel 11 to 12 now?"