How to Upgrade Your Laravel Project to the Latest Version (Laravel 13 in 2026)
⚙️ Updated for Laravel 13 (March 2026). If you are still on Laravel 9, 10, or 11, the steps below still apply — the upgrade mechanics haven’t changed, only the PHP requirements and the packages to review.
One of the most common questions among Laravel developers is how to upgrade a project to the latest version without breaking it. The good news is that recent major releases — especially Laravel 13 — have been shipped with an explicit “zero breaking changes” promise and an upgrade path that takes about 10 minutes. The caveat: if your project started on Laravel 9 or earlier, it’s best to upgrade one major version at a time rather than skipping several at once.
Current versions and support (2026)
| Version | Status | Minimum PHP | Bug fixes | Security support |
|---|---|---|---|---|
| Laravel 13 | Current (March 2026) | 8.3 (8.4 in practice) | Q3 2027 | Q1 2028 |
| Laravel 12 | LTS / Bug fixes | 8.2 | Until 2027 | Until 2028 |
| Laravel 11 | Security only | 8.2 | Closed | Until 2026 |
| Laravel 10 | End of life | 8.1 | Closed | Closed |
| Laravel 9 and earlier | End of life | 8.0 | Closed | Closed |
If you are on Laravel 9 or 10, upgrade now — you are no longer receiving security patches. If you are on 11 or 12, the jump to 13 is trivial.
Prerequisites for Laravel 13
- PHP 8.3 minimum. In practice, from Laravel 13.3 onward the Symfony 8 dependencies require PHP 8.4, so that is the recommended target.
- Composer 2.7 or higher.
- A supported database (MySQL 8, MariaDB 11, PostgreSQL 16, SQLite, SQL Server).
php -v
composer --version
Step 1: Back up and create a working branch
Before touching anything, create a dedicated Git branch and back up your database.
git checkout -b upgrade/laravel-13
mysqldump -u user -p my_project > backup.sql
Step 2: Update Laravel to the latest patch of your current version
Before jumping to the next major, bring yourself up to date within your current major.
composer update
php artisan test
If tests fail here, fix them before continuing.
Step 3: Edit composer.json
Update the version constraints for the framework and main packages. Example for upgrading to Laravel 13:
"require": {
"php": "^8.3",
"laravel/framework": "^13.0",
"laravel/sanctum": "^4.0",
"laravel/tinker": "^2.10"
},
"require-dev": {
"phpunit/phpunit": "^11.0",
"nunomaduro/collision": "^8.0",
"spatie/laravel-ignition": "^2.7",
"fakerphp/faker": "^1.23",
"laravel/pint": "^1.13"
}
If you are going to Laravel 12 from 11, set "laravel/framework": "^12.0" and review each corresponding package.
Step 4: Update dependencies
composer update --with-all-dependencies
If Composer reports conflicts, they are almost always third-party packages that do not yet support the new major. Your options are:
- Wait for the package to release a compatible version.
- Find an actively maintained fork.
- Replace the package with a modern alternative (many packages have been absorbed into the Laravel core in recent versions).
Step 5: Read the official upgrade guide
This is the most important step. Each major version has a detailed official guide:
Read it in full before executing, and apply every change marked Likelihood of impact: High. For Laravel 13 there are very few: minor helper changes, some method signatures, and the update to Symfony 8.
Step 6: Clear caches and rebuild
php artisan optimize:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan event:clear
php artisan cache:clear
composer dump-autoload -o
Step 7: Regenerate framework files if needed
Some releases (notably Laravel 11) changed the project skeleton (bootstrap/app.php replaced several configuration files). If you are coming from a much older version, consider comparing your structure against a fresh laravel new project and manually migrating the critical files.
Step 8: Run tests and verify manually
php artisan test
php artisan migrate:status
Then manually walk through the admin panel, API routes, and any critical user flows. The most common issues tend to be:
- Custom middleware with outdated signatures.
- Service providers registering deprecated bindings.
- Abandoned third-party packages.
- Notifications and mailables with changed method signatures.
Step 9: Take advantage of what’s new in Laravel 13
While you’re upgrading, it’s worth reviewing the features Laravel 13 ships out of the box:
- Laravel AI SDK built in: a unified API for LLMs, embeddings, agents with tool calling, and vector stores.
- Passkey authentication and vector search as first-class features.
- Native PHP attributes for controllers and jobs:
#[Middleware],#[Authorize],#[Tries],#[Backoff],#[Timeout].
Common errors and how to fix them
- “Composer detected issues in your platform”: you need to upgrade PHP. Install 8.4 locally with Laravel Herd.
- “Class X not found”: check the moved namespaces in the official guide.
storage/with broken permissions: runphp artisan storage:linkand verify permissions.- Sessions being invalidated: regenerate with
php artisan key:generateonly if it is safe to do so (it will invalidate all existing sessions in production).
Conclusion
Upgrading Laravel is no longer the ordeal it used to be. If you keep your project up to date (one major per year), each upgrade takes a couple of hours at most. If you’ve fallen behind and need to skip several versions, do it one at a time, run your tests between each step, and always consult the official guide.
If you are already on Laravel 13 and want to take advantage of the new AI SDK, I recommend continuing with How to Build an AI Agent with Laravel and MCP and How to Integrate the OpenAI API with Laravel.
Did you run into any errors during the upgrade? Leave a comment and we’ll take a look.