App development

Why cross-platform development?

This page does not answer which kind of construction is right, or which framework. It answers the economic question behind them: what changes when iOS and Android come from one codebase?

In short

Across three years, bug fixes, yearly system updates and small additions add up to more effort than the first pass. With one codebase that part falls due once instead of twice. The more often you ship after launch, the wider the gap gets.

Falls due once
Maintenance
Instead of two
A team
Grows with
Every change

The core

What changes with one codebase

Three consequences you feel in everyday project work. None of them is technical, which is why they hold.

  • One change reaches both platforms

    The practical difference day to day. A fix gets built once, tested once, shipped once. With two codebases the same change has to be written twice, tested twice, and afterwards explained twice, because it looks different on one platform.

  • The versions do not drift apart

    Separate teams develop different orderings and different readings of the same requirement. Support notices first, when the answer depends on which device someone is using.

  • One team instead of two specialisations

    This is settled less by the project budget than by staffing. Two native codebases need people for both platforms permanently, including in quiet years.

The sum

Where the saving really comes from

The usual sales line is that you save half because you write half as much code. It does not work like that, and the real reason carries further.

  • Not where most people expect it

    The saving does not come from writing half as much code. Interface and domain logic can be shared, the platform-level part cannot. What actually disappears is the duplicated coordination around the same code.

  • It lies in maintenance, not in building

    Building is the shorter stretch in an app's life. Across three years, bug fixes, adjustments to new system versions and small additions add up to more effort than the first pass. That is exactly the part that halves.

  • It grows with the number of changes

    For an app left untouched after launch, the difference is small. For one that ships every two weeks, it is the largest item on the bill.

Timeline

Counted across three years

Comparing only the first pass means comparing the shortest stretch. The difference grows with every year the app keeps running.

  1. 01

    Year one: the build

    Here the difference is smallest and easiest to miss. Comparing only the first pass shows you part of the picture.

  2. 02

    Year two: the obligations

    Apple and Google change their requirements for target versions, permissions and privacy declarations every year. That work falls per codebase, not per app.

  3. 03

    Year three: further development

    By this point it has usually become clear what actually gets used. What gets built then is the part where a shared codebase makes the biggest difference, because every change counts twice.

Limits

Where the sum does not work out

  • The platform-level share is large

    The more native modules of your own you need, the smaller the advantage. For those pieces you need knowledge of both platforms again, and then you are paying for the shared setup without using it.

  • Two established native teams are already in place

    When two established teams are working productively, the switch is a project of its own. It usually only pays off once a larger rebuild is due anyway.

  • The app is the edge case from the comparison

    Sustained high frame rates, demanding graphics, AR or continuous sensor processing. You are coding close to the system here anyway, and the shared layer stops helping.

FAQ

Frequently asked questions

How large is the saving in practice?

What holds up is the structure, not a percentage: one codebase instead of two, one team instead of two specialisations, across the whole lifetime. How large the difference turns out in a given case depends on the share of platform-level features and on how often you ship after launch. Anyone quoting you a fixed percentage up front does not know your project.

Does quality suffer?

Not because of the construction. Cross-platform apps sit in both stores and go through the same review. What suffers if you are careless is the platform feel: an app that behaves identically on both systems feels wrong on at least one of them.

What if we do need native after all?

Individual parts can be added as a native module without touching the rest. That is the usual route, and one of the reasons this decision is less final than it feels.

Can you move back to native later?

Yes, usually step by step: individual areas get replaced, the rest stays. How expensive it gets depends on how cleanly domain logic and data access are separated from the interface.

Can a web version come out of it too?

Partly. Domain logic and data access can be reused, the interface rarely unchanged, because different interaction patterns apply in the browser. It is a head start, not a free third platform.

What do you work with?

React Native and Expo, including for our own products. TypeScript carries app, backend and web here, which keeps knowledge portable between projects.

Next step

What the sum looks like for your project.

Two figures decide it: how large the platform-level share is, and how often you intend to ship after launch. With those, the difference can be quantified for your case instead of asserted in general.