Laravel upgrades

Upgrading Laravel 5–9: step through each version or rebuild?

There are three routes off an old Laravel application: step through each version, move the code into a fresh install, or rebuild. For most applications, the middle route gives the best balance. Rebuilding is justified far less often than people expect.

By itmarkerz Technologies. Updated 30 October 2026.

Where the old versions stand

Laravel 6 to 9: PHP versions and support end dates
LaravelPHPReleasedSecurity fixes ended
98.0–8.2February 8, 2022February 6, 2024
87.3–8.1September 8, 2020January 24, 2023
77.2–8.0March 3, 2020March 3, 2021
67.2–8.0September 3, 2019September 6, 2022

The dates are from Laravel’s 8.x and 10.x release notes. For the current versions, see Laravel versions. The destination is Laravel 13, which has security fixes until March 17, 2028.

The PHP column is the real pressure. Of the PHP versions these releases support, only 8.2 still has security support on php.net, and that ends on 31 December 2026. So you’re exposed at two levels, and your hosting provider may be the one that forces the issue.

Route 1: step through each version

Upgrade one major at a time, running tests and releasing at each stage. It’s the safest route if your tests are good, because every failure traces back to a single version’s changes. The cost is repetition: you update packages again and again, and you also have to find an intermediate PHP version at each step.

These are the steps with the most in them, according to Laravel’s upgrade guides:

Automated tools help here. Laravel Shift charges per step, so a long chain is several purchases, though each is small next to the work it saves.

Route 2: move the code into a fresh install

Create a new Laravel 13 application, then bring your models, controllers, views and routes across in stages, fixing each as it lands. Your database stays as it is, or changes only through small, planned migrations. You skip the in-between versions and their package churn, and you end up with a clean skeleton rather than years of leftovers.

The risk is that it’s easy to lose behaviour that lived in odd places: a middleware, a config value, a scheduled command nobody mentioned. So list what the old application does first, including routes, scheduled tasks, queues and outgoing integrations, and tick each one off as it arrives. We’d use this route for most applications on Laravel 8 or older, when tests are thin.

Route 3: rebuild

Rebuilding means new code and often a new data model, working from what the business needs today. It’s the most expensive route and the riskiest, because the old code holds rules that nobody remembers until they’re missing. We’d consider it only when at least one of these is true:

  • The application no longer matches how the business works, so much of it would change anyway.
  • The data model is the real problem, and can’t be fixed in steps.
  • The front end has to be replaced regardless, and it’s tangled through the back-end code.
  • The old application barely follows the framework, so there’s little to upgrade.

How to choose

Choosing a route for an old Laravel application
If this is trueWe’d lean towards
Good tests, Laravel 8 or 9, few custom packagesStep through
Thin tests, conventional code, the business rules are still rightFresh install, moved in stages
Packages with no modern release at the centre of the applicationFresh install, with those parts replaced
The business process or data model has to change anywayRebuild, in stages, with the old system running beside it
You can’t say what the application doesStop and audit first

Packages can decide this for you. filament/filament 2 and livewire/livewire 2 both stop at Laravel 10, so an admin panel built on them is a project of its own. Check yours against the package compatibility matrix.

What two real legacy moves took

Neither of these started on an old Laravel version. Both started on plain PHP 5.6, so they’re a harder case than most readers of this page have. They do show how far scope moves the timescale.

We moved a loyalty-card management system we’d originally built ourselves onto Laravel in two months, keeping every card, balance and rule. We knew the code, and the job was to preserve it.

A cabinet manufacturer’s system took about eight months: ordering, dealer portal and inventory moved to Laravel 13, PHP 8.5 and MySQL 8, with a new Next.js front end. We audited the old code first, validated the database migration at each stage, and checked workflows against the old system running in parallel.

The second approach is how we’d handle anything with thin tests. If the old and new systems give the same answer on real work, you have evidence no test suite written after the fact can match.

What to do next

Our upgrade service starts by reading your code, and a route comes out of that. Published prices run $799–$2,999+ in USD by application size, and older systems can go beyond the top tier. Our cost guide explains why. If you’ve inherited the application and nobody can explain it, start with our first 10 days guide.

The two upgrades described above

Questions

Can I run Laravel 8 on PHP 8.3?

It isn’t supported. Laravel’s table lists PHP 7.3–8.1 for Laravel 8. Newer PHP versions raise deprecations and errors in older framework code, and the framework’s security fixes ended on January 24, 2023. Upgrade the framework and PHP together.

Can I jump straight from Laravel 6 to Laravel 13?

Composer only needs the final constraint, but your code still has to absorb every change in between. A direct jump works best on small applications where you can read all the code. On larger ones, stepping through, or moving code into a fresh install, makes faults easier to trace.

Is it cheaper to rebuild?

Rarely, if the application still does what the business needs. A rebuild has to rediscover every rule the old code holds. It starts to make sense when the front end, the data model or the business process has to change anyway.

What about Laravel 5?

The same reasoning applies, with further to go. The oldest release in Laravel’s published support tables that we track is Laravel 6, and code from 5.x often needs PHP changes that are as large as the framework ones. Treat it as a re-platforming project, and get a code assessment before committing to a route. Our published prices run $799–$2,999+ by application size, and an application this old can go beyond the top tier.

Running an old Laravel version?

Send us the repository. The assessment is free, and you’ll get a route, a fixed price, and an honest view on whether to rebuild.

We reply within one business day (IST).