Start a project
Blog

One codebase, two app stores: what Expo actually buys you

Every app we ship, from a venue-discovery product with reservations to a technician marketplace, runs iOS and Android from one React Native codebase built on Expo. Client conversations keep circling the same question: is the single codebase real, or a demo trick that falls apart at scale? After several production apps, our answer is that it is real, with specific costs, and the costs are worth naming.

What you actually save

The saving is not "half the code". Screens, navigation, state, business logic and the API layer are genuinely shared, which in practice is most of the app. What is not shared: store metadata, review processes, payment plumbing differences, notification credentials and a steady trickle of platform-specific fixes. Budget for a shared core and two thin platform shells, not for one app that magically becomes two.

The build pipeline is the product

Expo's build service (EAS) turns "it works on my machine" into a reproducible artifact: a versioned build, signed correctly, submitted from a command line. When a client asks why we insist on this rather than building locally, the answer is bus factor and auditability. Anyone on the team can cut build 43 exactly like build 42, and the store submission is a log line, not a ritual.

The failure class that matters: works in Expo Go, dies in production

The sharpest lesson we have to pass on: an app can run flawlessly in development and crash on launch in a store build. We hit this with a dependency mismatch, where a library's version drifted from what the SDK expected. Development tolerated it; the production binary did not. The tooling has a first-line answer, and it is unglamorous: run the doctor command before every release build and treat its warnings as errors. Diffing the dependency tree against a known-good sibling app found ours.

Payments deserve their own paragraph

Subscriptions are where the single codebase meets two very different stores. We run purchases through a cross-platform entitlement layer with server-side verification, so the app asks "is this user entitled" rather than "what did Apple say". Grandfathering, trials and price changes then live in one place. The stores still each demand their own product setup, tax forms and review dance; no library removes that.

When we would not use it

Heavy per-frame graphics, unusual hardware access, or a team already deep in native expertise. None of our clients' products needed that, and for the directory-plus-transactions shape most businesses actually want, the single codebase ships months earlier for materially less money.

All articles
Start here

Tell us what you need.

One paragraph is enough. You'll get a straight answer on whether it's a fit, roughly what it takes, and what happens next.

Reply within one business day NDA on request Fixed-price quotes, no hourly billing
Company
NeedBridge LLC
Registered
United States
Studio
Morocco