Laravel upgrades, one tested version at a time
Stuck on Laravel 5, 6, 7 or 8? We step Laravel applications through each major version to a supported release running on PHP 8.5, with feature tests and Larastan at every step and no long-lived upgrade branch.
- One major version per step
- Larastan and feature tests
- Packages upgraded or replaced
Why old Laravel versions become a problem
Laravel releases a new major version every year, and each gets bug fixes for 18 months and security fixes for two years. An application that hasn’t been upgraded for a few years is running an unsupported framework, usually on an unsupported PHP version too, since older Laravel releases don’t run on modern PHP.
The gap also compounds. Packages such as Passport, Horizon, Nova and Cashier, and most third-party packages, track recent Laravel versions only. The further behind you are, the more of your composer.json is stuck.
How we upgrade Laravel applications
Laravel upgrades go one major version at a time, because each version’s upgrade guide assumes the one before it. We make each step routine:
- Tests first. Feature tests on the routes, jobs and commands that matter, using Laravel’s own HTTP testing tools, written before anything changes.
- Larastan baseline. PHPStan with Larastan understands Eloquent, facades and the container, so it finds problems a generic scan misses.
- One major at a time. For each version we work through the official upgrade guide, apply the matching Rector Laravel rules, update first-party and third-party packages, then run the full suite.
- PHP upgraded alongside. As the framework reaches versions that support it, PHP moves up too, finishing on PHP 8.5.
- Staged release. Queues, scheduled tasks and caches are checked on staging before production switches over with a rollback plan.
What usually takes the time
- Abandoned packages pinned to an old Laravel version, which need replacing or forking.
- The
str_*andarray_*helpers removed in Laravel 6, still common in apps that started on Laravel 5. - Carbon, Flysystem and Symfony component upgrades that arrive with new Laravel majors and change behaviour in small ways.
- Custom code that relies on framework internals, such as overridden core classes or undocumented behaviour.
We don’t force you onto Laravel’s newer, slimmer application structure unless you want it. Existing apps can keep their structure and still upgrade.
Cost
Every Laravel upgrade starts with the fixed-price £350 audit: a Composer compatibility check, Rector and Larastan runs, and a written plan covering each major version step. The upgrade is then a fixed quote.
Frequently asked questions
Can you skip Laravel versions?
Can we keep adding features while you upgrade?
Is Laravel Shift enough on its own?
Related services
- PHP 7.4 upgrade Still on PHP 7.4? Get to PHP 8.5 in tested, reviewable steps, past the PHP 8.0 and 8.1 changes that break most sites.
- Symfony upgrades Deprecation-driven upgrades from Symfony 3, 4 and 5 to a supported LTS on PHP 8.5.
- White-label upgrades for agencies Overflow capacity for agencies: we upgrade your client estate under your name, in your repos, under NDA.
- PHP 5.6 to 8.5 migration Old mysql_* code, mcrypt and a framework nobody maintains? We migrate the whole way to PHP 8.5 without a big-bang rewrite.