Laravel Version Support Matrix and Upgrade Checklist
Two questions come up in nearly every upgrade conversation we have: "Is our Laravel version still supported?" and "What PHP version can we run?" The tables below answer both, using the official Laravel and PHP support schedules. After them is the checklist we follow when we upgrade an application one major version at a time.
Laravel's policy is the same for every release: bug fixes for 18 months, security fixes for two years. PHP branches get two years of active support, then two years of security fixes only.
Laravel version support matrix
| Laravel | PHP | Released | Bug fixes until | Security fixes until | Status |
|---|---|---|---|---|---|
| 13 | 8.3 – 8.5 | Mar 17, 2026 | Q3 2027 | Mar 17, 2028 | Supported |
| 12 | 8.2 – 8.5 | Feb 24, 2025 | Aug 13, 2026 | Feb 24, 2027 | Security fixes only |
| 11 | 8.2 – 8.4 | Mar 12, 2024 | Sep 3, 2025 | Mar 12, 2026 | End of life |
| 10 | 8.1 – 8.3 | Feb 14, 2023 | Aug 6, 2024 | Feb 4, 2025 | End of life |
| 9 | 8.0 – 8.2 | Feb 8, 2022 | Aug 8, 2023 | Feb 6, 2024 | End of life |
| 8 | 7.3 – 8.1 | Sep 8, 2020 | Jul 26, 2022 | Jan 24, 2023 | End of life |
| 7 | 7.2 – 8.0 | Mar 3, 2020 | Oct 6, 2020 | Mar 3, 2021 | End of life |
| 6 (LTS) | 7.2 – 8.0 | Sep 3, 2019 | Jan 25, 2022 | Sep 6, 2022 | End of life |
Dates and PHP ranges come from the support policy tables in the Laravel 13, Laravel 10 and Laravel 8 release notes. Laravel lists the Laravel 13 bug-fix end only as Q3 2027. For Laravel 9, older docs give PHP 8.0–8.1 and newer docs give 8.0–8.2; we show the newer range. Status is as of October 20, 2026. Laravel 5.x and earlier are long past end of life.
PHP version support
| PHP | Released | Active support until | Security support until | Status |
|---|---|---|---|---|
| 8.5 | Nov 20, 2025 | Dec 31, 2027 | Dec 31, 2029 | Active support |
| 8.4 | Nov 21, 2024 | Dec 31, 2026 | Dec 31, 2028 | Active support |
| 8.3 | Nov 23, 2023 | Dec 31, 2025 | Dec 31, 2027 | Security fixes only |
| 8.2 | Dec 8, 2022 | Dec 31, 2024 | Dec 31, 2026 | Security fixes only |
| 8.1 | — | — | Dec 31, 2025 | End of life |
| 8.0 | — | — | Nov 26, 2023 | End of life |
| 7.4 | — | — | Nov 28, 2022 | End of life |
From php.net supported versions and php.net unsupported branches. For end-of-life branches the last column is the end-of-life date. Status is as of October 20, 2026.
What this means right now
- Laravel 13 is the only release still getting bug fixes. It needs PHP 8.3 or newer.
- Laravel 12 gets security fixes only, until February 24, 2027. If you're on 12, plan the move to 13 in the next few months rather than waiting for the deadline.
- Laravel 11 and older no longer get security fixes. Laravel 11's ended on March 12, 2026.
- PHP 8.2 stops getting security fixes on December 31, 2026. If your Laravel 11 or 12 app still runs on 8.2, move it to PHP 8.3 or 8.4. Laravel 12 supports both, and you need 8.3 or newer for Laravel 13 anyway.
- PHP 8.1 and older are already end of life. An app that can't run on PHP 8.2 or later is on an unsupported runtime and an unsupported framework at the same time.
Laravel upgrade checklist
This is the order we work in. It assumes a production app that real users depend on, not a weekend side project.
1. Audit what you actually run
- Record the Laravel and PHP versions on every environment, not just your laptop: local, CI, staging, production web servers, queue workers and the box that runs the scheduler.
php artisan --versionandphp -von each. - List direct dependencies that are behind with
composer outdated --direct, and check for known vulnerabilities withcomposer audit. - Find what blocks the next major version with
composer prohibits laravel/framework 13.0(also available aswhy-not), using the version you're targeting. - Note anything that isn't Composer-managed: copied-in packages, patched vendor files, custom PHP extensions and server-level config.
2. Build a safety net before you change anything
- Get the existing test suite green on the current version first, so you can tell an upgrade regression from an old failure.
- If coverage is thin, add smoke tests around the paths that matter most: login, checkout or billing, key integrations, and anything that sends email or webhooks.
- Make sure error tracking and queue monitoring are in place on staging and production, so problems show up quickly after release.
3. Plan the PHP and Laravel steps together
- Use the matrix above to find a PHP version supported by both your current Laravel version and the next one, and move PHP on that overlap. For example, PHP 8.3 runs Laravel 11, 12 and 13.
- Upgrade one Laravel major version at a time: 10 to 11, then 11 to 12, then 12 to 13. Each step gets its own branch, tests and deploy.
- Read the official upgrade guide for each step at
laravel.com/docs/<version>/upgrade. The guides sort changes by likely impact, so start with the high-impact ones.
4. Use tooling, but review everything it changes
- Laravel Shift is a community-maintained, paid service that automates much of each upgrade as a pull request. Laravel's own upgrade guides mention it.
- Rector with the rector-laravel rules can make many of the code-level changes for you, and can pick the right rule sets from your
composer.json. - For 12 to 13, the Laravel 13 upgrade guide also describes Laravel Boost's guided upgrade command for AI coding assistants.
- Automated changes still need a human review and a full test run. The tools handle the mechanical changes well; behavior changes are what they miss.
5. Update dependencies deliberately
- Change the constraints the upgrade guide lists. For Laravel 13 that includes
laravel/framework ^13.0,laravel/tinker ^3.0, and PHPUnit 12 or Pest 4. - Check first-party and major packages (Nova, Horizon, Sanctum, Cashier, Livewire, Filament, Inertia) for the version that supports your target release. Some need their own upgrade guide.
- Replace or fork abandoned packages rather than pinning them forever. Then run
composer updatewith-Wso related dependencies move together, and commit the lock file.
6. Review configuration and behavior changes
- Compare your config files with the
laravel/laravelskeleton for the target version. You don't have to copy everything. For 10 to 11, the official guide specifically recommends not moving to the new, slimmer application structure. - Watch for changes that only show up at runtime. Laravel 13's guide has several: the CSRF middleware is renamed to
PreventRequestForgery. Default cache and Redis prefixes and the session cookie name change unless you setCACHE_PREFIX,REDIS_PREFIXandSESSION_COOKIE. A newserializable_classescache setting restricts which objects can be unserialized from cache. And switching session serialization tojsonlogs out every active user. - Search for anything relying on framework internals: overridden core classes, macros and custom drivers.
7. Handle queues, the scheduler and caches
- Let queues drain, or at least know which jobs are in flight, before you deploy a major upgrade. Jobs serialized by the old version are processed by the new code.
- Restart workers after the deploy (
php artisan queue:restart, orhorizon:terminatewith Horizon) so they load the new code. - Rebuild the config, route and view caches as part of the deploy (
php artisan optimize), and confirm scheduled tasks still run.
8. Deploy like it matters
- Run the upgrade on staging with production-like data first. If the app holds PHI or payment data, use de-identified or synthetic data.
- Have a rollback plan you've actually tried: the previous release ready to restore, a database backup, and migrations you know how to reverse.
- Release in a quiet window, then watch error rates, queue backlogs and key business events for the first few hours.
9. Stay current afterwards
- Apply minor and patch releases regularly. They shouldn't contain breaking changes, and small frequent updates are easier than big rare ones.
- New Laravel majors arrive roughly every first quarter, so put next year's upgrade on the calendar now. Check PHP end-of-life dates at the same time.
Want someone else to handle the upgrade?
We upgrade production Laravel applications one major version at a time, with tests at every step and each version as its own reviewable pull request. Start with a free review of your composer.json and composer.lock.
Sources
All checked on October 20, 2026.
- Laravel 13.x release notes: support policy
- Laravel 10.x release notes: support policy (Laravel 8–11 rows)
- Laravel 8.x release notes: support policy (Laravel 6 and 7 rows)
- Laravel 13.x upgrade guide and Laravel 11.x upgrade guide
- PHP: Supported Versions and PHP: Unsupported Branches
- Composer command-line reference
Related: Laravel upgrade service · Laravel development company · Hire Laravel developers