Your application runs, but its stack has aged. AngularJS, an end-of-life version of PHP, a library that hasn’t been maintained in years. Hiring gets hard, every change takes longer than it used to, and security patches grow scarce. The question is no longer whether to modernise, but how to do it without breaking what works.
The full-rewrite trap
The temptation is to throw it all out and start clean. It’s almost always a mistake. A full rewrite means months with no new value for your users, a real risk that the new version won’t reproduce every behaviour of the old one, and a project that stalls before finishing about half the time. Your current app holds years of business rules, including the ones nobody wrote down.
The gradual method
There’s a better approach: wrap the old application and replace it piece by piece. You build the new code alongside the old, route one journey at a time to the modern version, and the old part disappears once it’s no longer used. At every step the app stays in production and keeps serving your customers. The risk is cut into small pieces instead of one big leap.
Where to start
Start with what hurts most, or with what’s most dangerous. A dependency with a known security hole comes before a cosmetic refresh. A module you change every week matters more than a corner of the app nobody ever touches. You modernise where it pays off, not where it’s most visible.
Keep the app running
The non-negotiable principle: at no point should your users hit an outage. Every switchover is reversible, tested on the critical paths, and rolled out gradually. A successful migration is one nobody notices from the outside.
When a full rewrite is still justified
There are exceptions. A tiny app, or a stack so dead you can’t even get it to run, can be redone in one go. But that’s rare, and it’s decided after an audit, not on principle. In the vast majority of cases, the gradual migration costs less and puts far less at risk.
An outdated stack doesn’t force you to start over. It calls for a plan, some patience, and modernisation in stages. That’s exactly what I put in place on a project rescue: I audit what exists, set the order of the steps, and modernise without ever stopping your app.
Your stack has become a brake? Get an audit. I’ll give you a realistic migration plan, step by step.
Frequently asked questions
Can we migrate without stopping the app? Yes. That’s the whole point of the gradual approach: the old and new versions coexist, and the switch happens one journey at a time.
How long does a gradual migration take? Longer than a rewrite on paper, but without the months of downtime and without the risk of losing everything. You keep shipping value throughout.
Do we have to change the whole stack at once? No. You replace the layers one at a time, starting with the riskiest or the most expensive to maintain.
