Served Online Studio
About Projects Now Blog Contact TenderNest
← All posts
5 August 2026 · 1 min

Building the same app twice

The sensible way to build an app for both iPhone and Android is to build it once (React Native, Flutter, pick your framework) and ship the same thing to both platforms. I didn't do that. TenderNest is two completely separate native apps: SwiftUI on iOS, Jetpack Compose on Android. Built twice, essentially, from the ground up.

Which is more work. A lot more work. Every screen gets designed and built twice, and there's no shared codebase quietly keeping the two in sync for you. That job is just me, eyeballing one platform against the other, screen by screen, trying to keep them looking and feeling like the same app underneath.

So why bother? Because cross-platform apps have a tell. You can usually feel when something isn't quite native, even if you can't always name why: the way a sheet slides up, the way the back gesture behaves, small things that are easy to notice and hard to fake. Building natively means all of that comes for free instead of being something you spend weeks fighting a framework to approximate.

I did try to save myself some of the pain where I reasonably could. The way the Android app is structured (screens, navigation, the networking layer) mirrors patterns I already use on other projects, so switching between codebases doesn't mean relearning a completely different mental model every time I context-switch. Small mercy, but a genuinely useful one when it's just you.

Two codebases is a real, ongoing cost for a solo developer. I knew that going in and made the trade anyway, because I'd rather ship something that feels right on both platforms and takes longer, than ship something faster that feels slightly wrong everywhere.

tendernest
Get in touch
contact@servedonlinestudio.co.uk
LinkedIn