Skip to main content

Native vs cross-platform apps

Most apps should be cross-platform. Some really should not.

Choose cross-platform, such as React Native with Expo, when you need iOS and Android from one team and the app is screens, data, and payments. Choose native Swift or Kotlin when the app is built around a platform feature, heavy on-device work, or ships on one platform only. We run both: Pullsy's iOS app in SwiftUI and three React Native apps.

Updated · Acasa Labs

At a glance

Native and Cross-platform, side by side.

What it meansNativeSwift or SwiftUI for iOS, Kotlin or Jetpack Compose for AndroidCross-platformOne codebase for both, in React Native or Flutter
CodebasesNativeOne per platformCross-platformOne, with native code only where needed
TeamNativeiOS and Android specialists, or one platform at a timeCross-platformOne team, often shared with the web app
New platform featuresNativeAvailable the day Apple or Google ships themCross-platformAvailable once a library supports them, or through your own native module
PerformanceNativeThe ceiling: direct access to every platform APICross-platformIndistinguishable for typical apps; extra work for heavy graphics or processing
Feature parityNativeTwo teams can drift apartCross-platformFeatures land on both platforms together
Widgets, watch, extensionsNativeFirst-classCross-platformPossible, but those parts are written natively anyway
Cost for both platformsNativeRoughly two buildsCross-platformOne build, plus platform polish

01

What cross-platform really costs and saves

Cross-platform frameworks save you a second codebase. One team writes the screens, the business logic, the API calls, and the tests once, and both stores get the same features in the same release. For an app that is mostly lists, forms, accounts, payments, and notifications, that is most of the work, and the saving is large.

What it does not remove is platform work. Push notification setup, in-app purchases, deep links, permissions, store listings, and review rules are still per platform. A good cross-platform team knows each platform well enough to handle those, and plans early for the parts that need native code.

02

When native is the better choice

Pick native when the app is built around something the platform does: home screen widgets, Apple Watch or Wear OS companions, Live Activities, deep background processing, or custom camera and audio pipelines. Those parts are written in Swift or Kotlin in a cross-platform app anyway, and if they are most of the app, the framework is overhead.

Pick native when you ship on one platform only. If your users are all on iPhone, there is no second codebase to save, and SwiftUI gives you the platform directly.

And pick it when on-device performance is the product: real-time graphics, heavy on-device machine learning, or audio processing where every millisecond is felt.

03

When cross-platform is the better choice

Pick cross-platform when you need both stores and one team. For most business apps, member apps, marketplaces, and companion apps for a web product, users cannot tell the difference, and you ship features to everyone at once.

Pick it when you have a web app. With React Native, a React or Next.js team can share types, API clients, and logic between web and mobile, and move between them.

And pick it when the budget is fixed. Building twice is roughly twice the cost to build and to maintain, and for an app whose value is in the data and the workflow, that money is better spent on the product.

04

The middle path most good apps take

The choice is rarely all or nothing. A React Native app can include native modules for the one feature that needs them: a widget, a custom media player, or a specific SDK. That keeps one codebase for the ninety percent of the app that is ordinary, and full native access for the rest.

Going the other way also works. A native app can embed a few shared screens. What matters is drawing the line on purpose, early, so you do not discover in month six that a core feature fights the framework.

05

What we have and have not built

We have shipped a native iOS app in SwiftUI and three cross-platform apps in React Native with Expo. We have not shipped a native Android app in Kotlin or Jetpack Compose, so on Android our production experience is through React Native. If your project needs a native Android specialist, we will tell you that before you sign.

From production

One native app, three cross-platform ones.

  • Native where there was one platform

    Pullsy

    Pullsy ships on the web and on iOS, so there was one mobile platform to build for. Its iOS app is SwiftUI on iOS 17+, with push notifications when something changes, on the same FastAPI backend as the web app.

  • Cross-platform for three apps at once

    GymFast

    GymFast has separate staff, member, and trainer apps for iOS and Android. In React Native with Expo, that is three apps from one monorepo and one API, not six native codebases.

  • Cross-platform beside a web app

    NoteTube

    NoteTube's Expo app shares a backend with its Next.js web app, Chrome extension, and MCP server. RevenueCat handles app store billing and a scheduled job keeps it in agreement with Stripe on the web.

  • A companion app that mirrors the web

    Kraftr

    Kraftr's mobile app gives brands the same studio as the web, from one Expo codebase for both stores.

How we choose

The five questions we ask before choosing

Both platforms, a web app, and a business workflow point to cross-platform. One platform, or a product built on device features, points to native.

  1. 01Do you need iOS and Android, or one platform first?
  2. 02Is the app built around widgets, watch apps, or background work?
  3. 03Does any feature need heavy on-device processing or graphics?
  4. 04Is there a web app the mobile app should share code with?
  5. 05How many people will maintain it after launch?

Questions

Native vs cross-platform apps, asked often.

Is a cross-platform app slower than a native one?

For typical business apps, users cannot tell. The gap appears in heavy graphics, real-time processing, or deep platform integration, where native code is the better tool.

Can a cross-platform app use native features?

Yes. Camera, location, push notifications, biometrics, and in-app purchases are all available, and anything missing can be written as a native module.

Is it cheaper to build cross-platform?

Usually, because there is one codebase to build and maintain instead of two. Platform-specific polish and store work still cost time on each side.

Do you build native Android apps?

Our Android apps are React Native. We have shipped native iOS in SwiftUI but not native Android in Kotlin, and we will say so if your project needs it.

Should we start on one platform?

If your users are mostly on one platform, often yes. Start native or cross-platform on that one, and keep the option to add the second.

Native vs cross-platform apps

Native or cross-platform? Ask before you build twice.

Tell us who uses the app and what it has to do on the device. We will tell you which approach fits, and why.

Ask which one fits

No pitch deck. You own the code from day one.

contact@acasalabs.com