Evidence First
Tepia reads the repository, crash logs, store reviews and release history before recommending anything, and explains the findings plainly.
Read: Legacy System Modernization and Mobile MigrationRefactor when the app's data model and architecture still match how the business works and the pain sits in specific modules; rebuild when the framework is end of life or the data model fights every new feature. Tepia decides with a code and architecture assessment in Discovery and, most of the time, recommends an incremental replacement over a big bang rewrite.
The right call depends on what is actually broken, which parts of the code are still sound and whether the business can keep shipping while the work happens.
Tepia reads the repository, crash logs, store reviews and release history before recommending anything, and explains the findings plainly.
Read: Legacy System Modernization and Mobile MigrationXamarin support ended in May 2024 and AngularJS in 2021; apps on them usually need a new client layer, while the backend can often stay.
Read: Xamarin Migration to .NET MAUI, Flutter or React NativeTepia prefers replacing one module at a time behind a stable API, so customers keep using the app while old code is retired underneath.
Read: App Rescue: Taking Over a Struggling AppIf a module now duplicates what a packaged product does well, Tepia will tell you to buy it rather than rebuild a commodity from scratch.
Figures Tepia keeps in mind when a team asks whether to rebuild or refactor.
Stripe's Developer Coefficient study found developers spend about 42 percent of their working week on maintenance and technical debt.
Joel Spolsky's widely cited essay notes Netscape went nearly three years between major releases while rewriting its browser.
Google Play requires app updates to target an Android API level within one year of the latest major release, so code cannot sit still.
Refactoring changes the internal structure of code without changing what users see: splitting an oversized view controller, replacing a tangled state layer, adding tests around checkout logic, upgrading libraries one at a time. The app stays in the stores throughout and each change ships in a normal release. Rebuilding means writing a new client, a new backend or both, then moving users and data across.
Between those two sits the option most teams actually need: replacing parts. You can keep a sound backend and rebuild only an outdated mobile client, or keep the client and move a fragile backend behind a new API. Tepia frames every modernization engagement around which layer is failing, because rebuilding a healthy layer wastes months and refactoring a dead framework only delays the inevitable.
Tepia scores an app against signals like these during Discovery. The pattern across rows matters more than any single one.
| Signal | Points to refactor | Points to rebuild |
|---|---|---|
| Framework status | Supported and receiving updates | End of life, such as Xamarin or AngularJS |
| Data model | Matches how the business works today | Needs workarounds for every new feature |
| Test coverage | Thin, but tests can be added around key flows | Untestable without restructuring everything |
| Crashes and reviews | Concentrated in a few screens | Spread across the whole app |
| Team knowledge | Someone understands the core modules | Original developers gone, no documentation |
| Store compliance | Meets current SDK and target level rules | Cannot reach the required SDK without major changes |
| Product direction | Same users, more features | New audience, new platform or new business model |
Weight framework status and data model double, since those two decide whether improvements stick. If your app sits on Xamarin, our Xamarin migration page covers the target options.
The classic rewrite story is Netscape: a team stops shipping to start over, competitors keep moving, and the new version arrives years later with fresh bugs and missing behaviors the old code handled quietly. The lesson is not to never rebuild. It is to never stop shipping while you do.
Tepia uses the strangler fig approach Martin Fowler described: put a stable API or routing layer in front of the old system, build new modules behind it one at a time, and switch traffic as each one proves itself. In a mobile app that might look like this:
Each step is a normal release with its own rollback plan. For larger systems, see our monolith to services refactoring and legacy system modernization work.
Sometimes the honest answer to rebuild or refactor is neither. Apps built years ago often contain modules that are now commodities: a homegrown chat feature, an internal ticketing tool, a custom email builder. Rebuilding those in a modern stack means owning them all over again. Tepia checks each module against what packaged tools and APIs offer today and recommends buying wherever the module is not part of what makes your product different.
That is the same reasoning as our build or buy software guide, applied module by module instead of to the whole product.
Typically Discovery runs 1 to 3 months and each development and QA stage 2 to 6 months. Read more on Tepia’s process.
Many rebuild questions start when the previous developer has gone. Before any verdict, Tepia secures access to source code, signing certificates, store accounts, cloud consoles and third party keys, because a missing Apple distribution certificate or a lost Android keystore on an older app can turn a simple refactor into a forced rebuild.
The next step is a working build. Tepia compiles the app from the repository on a clean machine, confirms it matches the version in the stores and lists every environment variable and service it depends on. Surprisingly often the code in the repository is not what is live, and that gap changes the recommendation more than any architecture diagram.
Our app rescue and takeover service starts with that checklist. If you are weighing this decision now, send Tepia the repository and store links and you will get a straight read on which path fits.
A paragraph or two with information on your product/service or describes a problem your product/service is designed to solve.
CEO
Senior Project Manager
VP & Operations Manager