Skip to main content
Digital Space

iOS, Android, and cross-platform

Why we build from one shared codebase for iOS and Android, and how that connects to the same platform as your website.

Reading time
2 min

An app that only runs on iPhone misses every Android user, and vice versa: for almost any small business, that's a significant chunk of potential customers or staff ruled out before the app even launches. Building and maintaining two entirely separate native apps (one in Swift for iOS, one in Kotlin for Android) means paying for development and fixes twice, and watching the two versions slowly drift apart as features get added to one before the other.

We build from a single cross-platform codebase instead, using React Native, with Expo for most projects, or bare React Native when a project genuinely needs a native module Expo doesn't support. The practical effect is one codebase producing both an iOS and an Android app that behave consistently, built and maintained by one team rather than two, with one place to fix a bug rather than two.

This matters even more in the context of how we build: because your website is also built on a modern, component-based foundation, a React Native app can share real logic, design tokens, and sometimes entire features with the website rather than reimplementing them from scratch. That's the core of what we mean by building your website and app together: a shared codebase keeps both fluid and integrated, so a change doesn't have to be made twice by two different teams on two different timelines.

Cross-platform doesn't mean a compromised experience on either platform. Both apps are built to feel native to their platform, respecting each platform's own navigation and interaction conventions, rather than looking like a generic app dropped onto two different phones. Where something genuinely needs a platform-specific capability, that's scoped and built directly rather than forced into a one-size-fits-all compromise.

The main trade-off worth knowing about: a small number of highly specialised native capabilities (certain advanced camera or hardware integrations, for example) can require bare React Native rather than Expo, which adds a little setup complexity. We flag this during scoping if your app's requirements point that way, rather than discovering it partway through a build; it's a scoping decision, not a surprise.

Ready to talk it through?

Tell us a bit about your business and we will be in touch within one business day.