I upgrade legacy Laravel applications — 5, 6, 7, 8, 9 — to a current release without a maintenance window and without a big-bang rewrite. The app keeps shipping while we migrate it, one deprecated pattern at a time, with the missing tests written on the way.
Upgrades rarely stall on Laravel itself. They stall on one of these four.
Three routes exist. Picking the wrong one is more expensive than any of them. Here's how I choose.
It means specific things, and it doesn't mean others. Anyone selling you a fully automated framework upgrade is selling you a diff that nobody understands.
Send me the version you're on and what's blocking the upgrade. I'll tell you which of the three routes fits — even if the answer is that you don't need me.
Get an upgrade plan →