Hill Tech Labs Contact

Lab notesNote 5.3

Mobile / 4 min read

Native vs. cross-platform

Two codebases or one? The honest answer depends on your users, your features, and who will maintain the app in three years. Here is how to decide.

A hand holding a phone that shows an app's onboarding screen
Fig. 01A phone showing an app's onboarding screen.

If your app has to run on both iPhones and Android phones, there are two broad routes. You can build two native apps, one in Swift for iOS and one in Kotlin for Android, each with its own codebase. Or you can build one cross-platform app with a framework such as React Native or Flutter, and ship it to both stores from a shared codebase.

Both routes are mature. React Native was open-sourced by Facebook in March 2015, and Flutter 1.0 was released by Google in December 2018. On the native side, Apple introduced SwiftUI in June 2019 and Google released Jetpack Compose 1.0 in July 2021, which made native interface code much faster to write than it used to be. The choice is no longer between a good option and a bad one, but between two sets of trade-offs.

The main options in 2026

  • Native: Swift and SwiftUI for iOS, Kotlin and Jetpack Compose for Android. Two codebases, each using the platform's own tools.
  • React Native: JavaScript or TypeScript, with platform-native interface components. Its New Architecture has been on by default since version 0.76, released in October 2024.
  • Flutter: the Dart language, with Flutter drawing its own interface, so the app looks the same on both platforms unless you choose otherwise.
  • Kotlin Multiplatform: shared business logic in Kotlin, declared stable by JetBrains in November 2023, with the interface either native on each platform or shared through Compose Multiplatform, whose iOS support became stable in May 2025.

How they compare

QuestionNative (two apps)Cross-platform (one app)
Codebases to maintainTwoOne, plus some platform-specific code
New OS featuresAvailable right awayOften needs a plugin or a framework update first
Platform look and feelNative by defaultClose, with some care
Demanding graphics, audio, or sensorsStrongest optionPossible, with more effort
Team you neediOS and Android skillsOne shared skill set
Cost of each new featureBuilt twiceBuilt mostly once

When native earns its cost

  • The app leans on device capabilities: Bluetooth hardware, background location, augmented reality, heavy audio or video processing.
  • You need new operating system features the day they ship, such as widgets or new platform integrations.
  • Performance is part of the product, as in games, drawing tools, or real-time media.
  • You only need one platform, for example an iPad app for your own staff.

When cross-platform is the sensible default

  • The app is mostly forms, lists, bookings, payments, and messages, which describes most business apps.
  • You need both stores at launch, on a budget that cannot carry two teams.
  • Features must reach iOS and Android users at the same time.
  • Your developers, or the team that will inherit the code, already know JavaScript or TypeScript.

There is also a middle path: share the business logic with Kotlin Multiplatform and keep a native interface on each platform. It suits teams that want platform-perfect screens without writing every rule twice.

Three people using their phones at a table with cups of coffee
Fig. 03Phones in everyday use, whichever way the app was built.

What stays the same either way

Some costs do not change with the framework. Both stores review every release; Apple says that on average, 90 percent of submissions are reviewed in less than 24 hours, but a rejection still adds days. Both platforms raise their requirements every year: Google Play has required new apps and updates to target Android 16 (API level 36) since August 31, 2026, and Apple has required uploads to be built with Xcode 26 or later since April 28, 2026. Whatever you choose, budget for yearly upkeep.

You also still need testing on real devices, accessibility work on both platforms, store listings, privacy disclosures, and a back end that both apps talk to. These shared costs are a large part of any mobile budget, so the gap between the two routes is usually narrower than a first comparison of codebases suggests.

A short decision checklist

  1. List the device features the first two releases need. Any that a cross-platform framework cannot reach well?
  2. Decide whether both platforms must launch together.
  3. Ask who will maintain the app after launch, and what they know.
  4. Prototype the riskiest screen or device feature in the chosen framework before committing.

Key points

  • Both routes are mature; the choice is about trade-offs, not quality.
  • Native wins on device features, new OS features, and demanding performance.
  • Cross-platform wins on cost and speed for typical business apps.
  • Store review and yearly platform updates apply either way.

Sources

  • Engineering at Meta, "React Native: Bringing modern web techniques to mobile" (March 26, 2015); React Native blog, "React Native 0.76" (October 23, 2024).
  • Google Developers Blog, "Flutter 1.0: Google's Portable UI Toolkit" (December 4, 2018).
  • Apple Newsroom, WWDC 2019 developer technologies announcement (June 3, 2019); Android Developers Blog, "Jetpack Compose 1.0" (July 28, 2021).
  • JetBrains, "Kotlin Multiplatform Is Stable" (November 1, 2023) and "Compose Multiplatform 1.8.0" (May 6, 2025).
  • Apple Developer, "App Review" and "Upcoming Requirements"; Android Developers, "Target API level requirements for Google Play apps".
Note 5.3 / Hill Tech Labs Next: Scoping an MVP

Not sure which route fits?

Tell us what the app has to do. We will recommend native or cross-platform, with the reasons in writing.

contact@hilltechlabs.com