The Native Trap | Why We Bet on a "Shared Brain"
- Udayaditya Barua

- Jan 10
- 3 min read
Startups are told to choose: Speed (Flutter) or Quality (Native). We chose neither. How we used Compose Multiplatform to build a shared brain with a native face.
In the startup playbook, there is a golden rule that hasn’t changed in ten years: “Build the iOS app first. Launch on Android later.”
The logic is efficient. iPhone users historically spend more money, and it is easier to build for one operating system than to manage the fragmentation of Android. For a two-person team like ours, focusing on one platform seems like the smart, logical move.
But we ignored that logic. We are launching on Android and iOS simultaneously.
Here is why the standard advice is a "trap" for a mental health company, and how we built a system to escape it.
The "Uncanny Valley" of Cross-Platform
If you don't go "iOS First," the industry alternative is to use a cross-platform tool like Flutter or React Native. These promise the engineering holy grail: Write code once, run it everywhere.
For a food delivery app or a ticket-booking platform, these tools are fantastic. But for Flammingo, they presented a fatal glitch.
Flammingo isn't a utility; it's a mirror. It deals with your darkest thoughts, your anxiety loops, and your private history. In the mental health space, Trust is the product.
When an app is built with cross-platform wrappers, it often hits the "Uncanny Valley." The scrolling feels slightly too fast. The animations are a millisecond off. The keyboard pops up a little differently than your phone’s native apps.
In a banking app, that "jank" is annoying. In a mental health app, it destroys intimacy. If the app feels glitchy or "cheap," your brain subconsciously signals that your data isn't safe. You stop sharing.
We couldn't afford "janky." But we also couldn't afford to hire two separate engineering teams (one for Swift, one for Kotlin).
The Solution: The Shared Brain
We bet the company on Compose Multiplatform (KMP).
Unlike other frameworks that force the UI to look the same everywhere, KMP allows us to separate the app into two distinct mechanical parts: The Brain and The Face.
1. The Brain (Shared) This is the heavy lifting. The AI logic, the local database, the pattern recognition algorithms, and the API calls. We write this once in Kotlin. It serves as the single source of truth for the entire system.
2. The Face (Native) This is what you touch. The UI. The animations. The way the scroll snaps back when you hit the bottom of a list.
By using KMP, we share nearly 90% of our business logic (The Brain) across platforms, while keeping the UI (The Face) 100% native.
Escaping the Trap
The "Native Trap" forces founders to choose between Quality (Native) or Speed (Cross-Platform).
This architecture gave us a third option.
We didn't double our team size. I write the logic once, and it propagates to both platforms instantly.
We didn't sacrifice performance. The app runs directly on the metal of your device, not inside a web browser wrapper.
We didn't leave anyone behind. In a country like India, ignoring Android means ignoring the majority of the population. We couldn't claim to be "democratizing self-insight" if we only built for iPhones.
The Verdict
Building with KMP wasn't without its headaches—the ecosystem is new, and sometimes you have to build the road as you drive on it.
But today, Flammingo is live on Android, and the iOS build is running off the exact same brain. We didn't choose between speed and quality. We just built a better system.



Comments