Cross-Platform App Development Services

One codebase, two apps, and an honest account of the trade

Cross-platform genuinely does save most of the build cost. It does not save you from two app stores, two sets of rules, or the parts that still have to be written twice. Here's exactly where the line falls.

One team, one codebase, two releases Both accounts stay in your name We'll say when native is the better call

The actual mechanics

"One codebase" means most of it, not all of it

The shared portion is large and it's where the saving comes from. What's left still has to be handled per platform, and pretending otherwise is how cross-platform projects end up over budget.

Roughly how the work divides

Written once
Twice

Shared

Screens, navigation, business logic, data handling, API calls, and state. The bulk of any normal app.

Per platform

Setup, permissions, notifications, store listings, releases, and anything touching device hardware.

Built once, runs on both

  • Every screen and the navigation between them
  • All the business rules and calculations
  • Talking to your backend or API
  • Forms, validation, and error handling
  • Local storage and offline behaviour
  • Most of the testing effort

Still needs doing twice

  • Project setup, signing, and build configuration
  • Push notification setup on each platform
  • Permission handling, which differs meaningfully
  • Store listings, screenshots, and disclosures
  • Submission and release for every update
  • Testing on real devices from both ecosystems

Being straight about it

Six situations where we'd tell you to go native instead

Cross-platform is the right answer for most business apps and the wrong answer for a recognisable set of them. Better to find out now than halfway through.

Heavy graphics or real-time media

Games, video editing, camera processing, or anything rendering continuously. The abstraction layer costs you exactly where you can least afford it.

Deep hardware integration

Sustained Bluetooth, sensor streams, or specialised peripherals. Bridges exist, but you spend the savings writing and maintaining them.

Serious background work

Continuous location tracking or long-running background tasks. Both platforms restrict this differently and the shared layer doesn't hide that.

Only one platform matters

If your users are almost entirely on one side, you're paying a small tax for portability you'll never use. Build native for the platform you have.

You need day-one platform features

Cross-platform support for brand new OS capabilities lags behind. If being first on something matters commercially, native is the safer bet.

Widgets and system integrations

Home screen widgets, watch apps, and deep system extensions are written natively regardless. If they're central to the product, weigh that in.

None of these are absolute, and several can be handled with a native module inside a cross-platform app. The point is that they change the estimate, so they get identified during scoping rather than discovered later. If your case falls this way, see iOS or Android.

What doesn't halve

You still answer to two companies

One codebase, two stores. Every release goes through both, with different rules, different timelines, and different ways of going wrong.

The Apple side

AccountPaid annually, in your name, and it must not lapse
Every releaseReviewed before it ships, including one-line bug fixes
Watch forPayment rules on digital goods, and privacy declarations matching reality
TimelineUsually quick, occasionally not, and a rejection restarts it

The Google side

AccountRegistered and verified in your name, holding the signing key
Every releaseLighter review, and can be rolled out to a percentage first
Watch forData safety declarations and the target level Google raises each year
TimelineFaster to ship, with enforcement that continues after launch

This is the part that surprises people. The build cost drops substantially with one codebase, but the release and compliance work stays roughly the same as two native apps. Both accounts are set up in your name from the start, and we work inside them as team members.

The tooling

Two serious options, and the choice is rarely the interesting part

Both are mature, both are backed by large companies, and both will build your app well. The decision usually comes down to what you already have and who maintains it afterwards.

Option A

React Native

Built on JavaScript and React. Renders using the platform's own interface components, so it inherits native look and feel by default.

Leans this way when

You already have web developers working in React, or a web app sharing logic with the mobile one. The hiring pool is large, which matters if you ever bring it in house.

Option B

Flutter

Built on Dart, and draws its own interface rather than using platform components. That gives tight control over how everything looks and behaves.

Leans this way when

You want an identical custom design on both platforms, or animation and interface consistency matter more than matching each platform's native conventions.

We'll recommend one and explain the reasoning, and the deciding factor is who can maintain it in three years rather than which is technically more interesting. If you already have a team with skills in one of them, that usually settles it.

What you actually save

The saving is real, and it's not half

Anyone quoting cross-platform as fifty percent of two native builds is quoting the coding and forgetting everything around it.

Where you save the most

Feature work after launch. Every new screen or change is built once instead of twice, and that compounds over the years an app is in use. It's a bigger saving than the initial build.

Where you save less than expected

Testing and releasing. Both apps still need real device testing and separate submissions, and that work scales with platforms rather than with codebases.

Where you save nothing

The backend. If your app has accounts or syncs data, that's the same project either way, and it's frequently half the cost. It sits with web application development.

The hidden ongoing cost

Framework upgrades. Cross-platform tooling moves quickly, and an app left on an old version gets progressively harder to update. Budget for keeping current, not just for building.

Common questions

Questions we get about cross-platform

For a normal business app, no. Plenty of apps people use daily are built this way and nobody notices, because what users judge is speed and whether it behaves the way they expect.

Where it becomes noticeable is heavy animation, complex gestures, or graphics-driven interfaces. If that's your app, it's one of the cases for going native.

You can, and it's a reasonable strategy for proving an idea before committing to two full builds. The interface would be rebuilt, but the backend and the product decisions carry over intact.

It's worth being clear that it's a rewrite rather than a conversion, so the decision to switch should be driven by a real limitation rather than a preference.

That's normal and it's handled with a native module for that specific piece, written once per platform and used from the shared code.

It costs more than a purely shared feature and far less than building both apps natively. Anything likely to need this gets flagged during scoping so the estimate reflects it.

No, and often they shouldn't. Navigation patterns and back behaviour differ between the platforms, and following each one's conventions makes the app feel correct rather than ported.

How far to go with that is a design decision. Some products want a single consistent identity, others want to feel native on each side, and both are achievable.

Not really, and it's a fair thing to ask. Both frameworks have large communities and are widely used commercially.

It's part of why the framework recommendation weighs your existing team. If you already have React developers, one option becomes obviously easier to maintain than the other.

Usually, and the first question is how far behind the framework version has fallen. That, more than the code itself, determines how much work is needed before anything new can be added.

We'd also need the store accounts and, on the Android side, the signing key. Without the key, updating the existing listing isn't possible.

Cross-platform is part of our app development service

For most business apps this is the sensible default. Where it isn't, we'll say so and price the native route instead. Pricing sits on the main app development page.

App development

Other app services

Bring the app and we'll tell you which route fits

Thirty minutes on what it does, who uses it, and whether one codebase genuinely serves you here.

Or email hello@culmen.digital
Book a free strategy call