Untangling a four-codebase mobile product
Three weeks of daily work, followed by a weekly one-hour check-in for several months.
Challenge
The founder had built the product with an external vendor and had been involved throughout, but was not technical and could not meaningfully assess the decisions being made. What the vendor delivered was four separate codebases: a Node.js backend, a native iOS app in Swift, a native Android app in Kotlin, and a React web frontend. Every feature change meant paying four engineering streams to build the same thing. Development was slow and expensive, and the cost structure was a real constraint on the company’s runway.
Approach
I reviewed the product architecture and the team’s actual delivery patterns. The backend was sound and stayed on Node.js. For the client side, React Native was the obvious choice. The backend was already JavaScript, which meant one full-stack developer could now cover what previously required separate iOS, Android, and web specialists. We consolidated iOS, Android, and the web frontend into a single React Native codebase. The client side ended up being maintained by a single fractional full-stack developer. From planning to execution the migration took three weeks.
Outcome
The migration was a real investment, but development costs afterwards dropped by roughly 60%. Feature delivery became fast and inexpensive instead of slow and expensive. The founder regained the ability to make product decisions without first weighing them against four parallel implementation costs, and the architecture was now simple enough that he could reason about it himself.