İçeriğe geç
Two contrasting river stones balanced side by side on a pale oak shelf
Rehber

Native vs cross-platform app development: how to choose in 2026

Kısa özet

Native or cross-platform? How Swift, Kotlin, React Native, Flutter and Kotlin Multiplatform really differ in performance, effort, hiring and upkeep, and a step-by-step way to choose the right approach for your app.

15 dk okuma

Short answer: build native (Swift for iOS, Kotlin for Android) when the app's value depends on deep platform features, peak performance or the exact look and feel of each operating system. Choose a cross-platform framework such as React Native, Flutter or Kotlin Multiplatform when most of the app is screens, forms, lists and API calls, and you want one team shipping to both stores. For most business apps in 2026, cross-platform is the sensible default, and native is a deliberate choice you make for specific reasons.

That answer is easy to say and harder to apply. The frameworks have changed a lot in the last two years, the app stores keep raising their technical requirements, and the honest trade-offs are rarely about raw speed. This guide explains what each option really is, where the differences still matter, how the choice changes effort and team shape, and how to decide without relying on a vendor's favourite tool.

What native and cross-platform actually mean

Native development means writing a separate app for each platform in the language and UI toolkit the platform owner provides: Swift with SwiftUI or UIKit on iOS, Kotlin with Jetpack Compose or Views on Android. Two codebases, two sets of tests, usually two specialists or two small teams. In exchange you get first-day access to every new operating system feature and the platform's own controls, behaviour and accessibility support.

Cross-platform development means writing most of the app once and running it on both platforms. The word hides very different technologies, though. Some frameworks share everything including the user interface; some share only the business logic and leave the screens native; some run a web app inside a native shell. Lumping them together is the most common reason this debate goes in circles.

A third option often gets forgotten: not building an app at all, and shipping a responsive web app or progressive web app (PWA) instead. We cover when that is the right call further down.

The five realistic options in 2026

These are the approaches serious teams actually choose between today. Each tab explains what it is and the kind of product it suits best.

Fully native

Swift and SwiftUI on iOS, Kotlin and Jetpack Compose on Android, as two separate apps. Best for products where the device is the product: camera and media apps, health and fitness apps that lean on sensors, apps with heavy offline processing, Bluetooth hardware companions, and consumer brands that want every interaction to feel exactly like the platform. Cost: you build and maintain most features twice.

React Native

JavaScript or TypeScript with React, rendering real native UI components on each platform. Its New Architecture replaced the old asynchronous bridge with a direct JavaScript-to-native interface and has been the default since version 0.76. Best for teams that already use React on the web, content and commerce apps, internal tools, and products that want to share logic and people between web and mobile. Tools such as Expo make builds and updates much easier.

Flutter

Dart with Google's own widget set. Flutter does not use the operating system's controls; according to its architectural overview it implements and paints every control itself. That gives pixel-identical screens on both platforms and makes custom, brand-heavy interfaces and animation straightforward. Best for apps with a strong visual identity, design-system-driven products and teams that want one UI codebase with predictable rendering.

Kotlin Multiplatform

Kotlin shared across platforms, typically for the business logic, networking, storage and validation, while each platform keeps a native UI. With Compose Multiplatform you can share the UI too. JetBrains lists both Kotlin Multiplatform and Compose Multiplatform as stable on iOS and Android, and Google says it officially supports Kotlin Multiplatform for sharing business logic. Best for teams with Android expertise, and for apps that want native screens without writing the logic twice.

Web inside a native shell

A web app packaged as an app with a runtime such as Capacitor, which wraps web code in a native container and exposes device features through plugins. Best for internal tools, field apps and products where the web app already exists and the main need is store presence, push notifications or a few device APIs. Weakest choice for consumer apps that must feel native, and it must still clear the app store review rules discussed below.

You will still see older names in proposals. Microsoft ended support for Xamarin, including Xamarin.Forms, on 1 May 2024; its successor is .NET MAUI. If a vendor proposes a framework that is out of support, treat it as a red flag about how current their practice is.

How the frameworks draw your screens, and why it matters

The most useful question to ask about any framework is: who draws the buttons? The answer explains most of the practical differences you will feel later.

  • Native apps use the platform's own controls. When Apple or Google change how a switch, sheet or navigation bar behaves, a native app picks it up with little or no work.
  • React Native describes the screen in JavaScript, but the components it shows are real platform views. You get native behaviour for standard controls, with a JavaScript layer in between.
  • Flutter paints every pixel itself with its own rendering engine. Since Flutter 3.27, its Impeller renderer is the default on iOS and on Android API 29 and above, precompiling shaders so animations do not stutter on first run. The trade-off is that Flutter's iOS-style widgets are reproductions, not Apple's own controls.
  • Kotlin Multiplatform with native UI keeps SwiftUI and Compose screens, so the UI behaves exactly as a native app's would. With Compose Multiplatform on iOS, the UI is drawn by Compose rather than UIKit.
  • Web-in-a-shell apps render HTML and CSS in a web view, so they behave like a website unless you put real effort into making them feel otherwise.

A concrete example: in 2025 Apple introduced Liquid Glass, a new translucent design language across iOS 26 and its other platforms, with updated SwiftUI, UIKit and AppKit APIs for developers to adopt it. Apps built from Apple's own controls could adopt the new look through those APIs. Apps that draw their own widgets had to recreate it themselves or wait for their framework and its community to catch up. Neither outcome is a disaster, but it shows the real cost of drawing your own UI: you own the gap every time the platform changes.

Performance: where the gap is real and where it is not

Older articles claim cross-platform apps are slow. For typical business apps that is no longer true in any way users notice. React Native's New Architecture removed the serialisation cost that used to slow communication between JavaScript and native code, and Flutter compiles Dart ahead of time to native machine code. A list of orders, a booking flow or a dashboard will feel the same to users whichever of these you choose, provided the team builds it well.

The React Native team itself warns that switching on the New Architecture may not immediately improve performance without refactoring. That is the general lesson: most slow mobile apps are slow because of how they were built (oversized images, chatty APIs, re-rendering whole screens, no caching), not because of the framework.

The gap is still real in a few places:

  • Heavy real-time work on the device: video and audio processing, computer vision on the camera feed, augmented reality and games. Native code, or native modules called from a cross-platform app, is the safer choice.
  • Startup time and app size: cross-platform apps ship a runtime or engine, which adds weight to the download and some work at launch. It is usually acceptable, but measure it on low-end Android devices, not just the latest iPhone.
  • Very long, complex lists and gestures: achievable in every framework, but it takes more care outside native code.
  • Background execution: location tracking, Bluetooth and sync in the background are governed by strict platform rules. Cross-platform apps can do all of it, but through native code and plugins whose quality varies.

The framework rarely decides whether an app feels fast. The team's discipline about images, network calls and rendering decides it.

Side-by-side comparison

This table summarises the trade-offs for a typical business or consumer app. Read it as a starting point; your product's constraints may change individual rows.

FactorNative (Swift + Kotlin)React NativeFlutterKotlin Multiplatform
Code shared across iOS and AndroidLittle or noneMost of the app, UI includedMost of the app, UI includedBusiness logic; UI optional
Who draws the UIThe platformThe platform, driven by JavaScriptFlutter's own engineThe platform, or Compose
Access to new OS featuresDay oneVia native modules; often quickVia plugins or platform channelsDay one in native UI code
Platform look and feelExactClose, uses real controlsReproduced; very consistent across platformsExact with native UI
Typical teamiOS and Android specialistsReact or TypeScript engineers plus native know-howDart engineers plus native know-howKotlin engineers plus an iOS engineer
Overlap with your web teamLowHigh if the web uses ReactLow to moderateModerate on the backend if it uses Kotlin
Best fitDevice-centric, high-polish consumer appsContent, commerce, internal and React-heavy teamsBrand-led UI, design systems, many screensNative UX with shared logic
How the main approaches compare for a typical business or consumer app

Effort, timeline and team shape

The usual pitch is that cross-platform halves your cost. It does not, and you should distrust anyone who promises that. What it does is remove most of the duplicated work, while some work stays the same or appears for the first time. Here is how the effort actually splits.

  • Work that does not change: product discovery, UX and UI design, the backend and APIs, authentication, analytics, store listings, privacy declarations and release management. On many projects this is a large share of the total, and no framework touches it.
  • Work that is shared by cross-platform: screens, navigation, state management, validation and business rules, which native builds twice.
  • Work that remains per platform: testing on real devices for both operating systems, push notification set-up, deep links, payments, platform-specific permissions, and any feature that needs native code.
  • Work that cross-platform adds: framework upgrades, plugin maintenance, and occasionally debugging problems that sit between the framework and the operating system.

A worked example

Take an illustrative first release of a clinic booking app: sign-up and login, a search for practitioners, a booking flow with payments, reminders by push notification, a profile and booking history, roughly twenty screens, backed by a new API. These figures are an example of how planning works, not a quote.

  • Native: a designer, a backend engineer, one iOS engineer and one Android engineer, with a senior engineer leading. The two mobile engineers build the same screens in parallel. Expect around 12 to 16 weeks to a store-ready first version, with mobile engineering hours close to double the cross-platform figure.
  • Cross-platform (React Native or Flutter): a designer, a backend engineer and two engineers on one shared codebase, one of whom is comfortable with native iOS and Android tooling. Screens are built once, so the same scope typically lands a few weeks sooner, or the same weeks buy more scope. Device testing still covers both platforms.
  • Kotlin Multiplatform with native UI: shared logic written once in Kotlin, with SwiftUI and Compose screens built separately. Effort sits between the other two: less than fully native, more than a shared-UI framework, in exchange for fully native screens.

To see how scope, platforms and team shape change an estimate for your own idea, try the software cost calculator, and read our guide on what custom software development costs for the drivers behind any estimate. If you are still deciding what belongs in the first release, scoping an MVP without wasting budget matters more than the framework choice.

What still needs native code, whatever you choose

This is the part most comparisons leave out. Even a fully cross-platform app usually contains some native code, and some features can only be written natively. Plan for them up front so they do not surprise you halfway through.

  • Home screen and lock screen widgets, Live Activities and watch apps. On iOS these are separate extensions built with Apple's frameworks, so they are written in Swift even when the main app is not.
  • Deep integration with car, TV, wearables or health platforms. CarPlay, Android Auto, HealthKit and Health Connect integrations are possible from cross-platform apps through plugins, but the tricky parts often need native code.
  • Hardware companions. Bluetooth Low Energy devices, NFC and custom accessories work across frameworks, but reliability in the background depends on native code and good plugins.
  • Brand-new operating system features. Native code gets them first. Cross-platform frameworks follow, sometimes within weeks, sometimes much later for less common APIs.
  • App store compliance work. Privacy manifests, permission strings, account deletion, in-app purchase rules and store metadata are platform tasks regardless of framework.

The practical consequence: a cross-platform team still needs at least one person who is comfortable in Xcode and Android Studio. A team that only knows JavaScript or Dart will get stuck the first time a build fails for a native reason.

Maintenance, store rules and the long run

An app is never finished, because the platforms underneath it keep moving and the stores enforce it. Since 28 April 2026, Apple requires apps uploaded to App Store Connect to be built with Xcode 26 and the iOS 26 SDK or later. Google Play requires new apps and updates to target Android 16 (API level 36) from 31 August 2026, and apps that fall too far behind stop being offered to new users on newer devices. These requirements arrive every year.

How each approach absorbs that churn:

  • Native apps deal with platform changes directly. You update two codebases, but with nothing in between you and the platform.
  • Cross-platform apps depend on the framework supporting the new SDK first, then on every plugin you use being updated. A neglected plugin can block a release. Choose plugins maintained by the framework team or by active organisations, and keep the list short.
  • Framework upgrades are a recurring line item. Budget a few days per platform release for upgrading the framework and dependencies, and do it regularly rather than in one painful jump every two years.
  • Over-the-air updates are a real advantage of JavaScript-based apps. Tools such as EAS Update can ship JavaScript, styling and image changes without a store release, but changes to native code, permissions or the SDK version still need a new build, and updates must follow store rules.

Hiring matters too. Developer surveys show the two large cross-platform frameworks with similar reach: in Stack Overflow's 2024 survey, 9.4% of respondents had used Flutter and 8.4% React Native in the past year. More useful than market share is your own context. If your web product is built in React, React Native lets the same people move between web and mobile. If your backend is Kotlin, Kotlin Multiplatform fits naturally. If you have neither, pick the framework you can hire for in your market and still support in five years.

When you should not build a mobile app at all

Before choosing between native and cross-platform, check that you need an app. A well-built responsive web app is cheaper to build and update, needs no store review, and works on every device with a browser. Progressive web apps can be installed on the home screen, work offline and, since iOS 16.4, receive web push notifications on iPhone once the user adds them to the Home Screen.

A web app is usually enough when people use your product occasionally, mostly at a desk, or after following a link; when the job is forms, dashboards and content; and when you do not need background location, Bluetooth or deep OS integration. An app earns its place when people use it often enough to keep it on their home screen, when it needs device features a browser cannot reach, or when being in the app stores is part of how customers find and trust you.

Be careful with the middle path of wrapping your website in an app. Apple's review guidelines say an app should offer features and UI that elevate it beyond a repackaged website, and that it may not download code that changes its features. A thin wrapper is a common reason for rejection. Our guide on what mobile app development services include covers the wider build process, and web development services covers the web route.

A practical way to decide

Work through these questions in order. Stop at the first one that gives a clear answer.

  1. Do you need an app at all? If a responsive web app or PWA covers the job, build that first and revisit later.
  2. Is the device the product? If the core value is camera, sensors, AR, audio, real-time processing or hardware, go native, or plan native modules for those parts from day one.
  3. Must the app feel exactly like each platform, and change when the platform changes? Choose native, or Kotlin Multiplatform with native UI, or React Native with platform components.
  4. Is a strong, identical brand experience on both platforms more important than platform conventions? Flutter is built for this.
  5. What does your existing team know? React on the web points to React Native. Kotlin on Android or the backend points to Kotlin Multiplatform. A clean slate means hiring for whichever you can staff and support long term.
  6. What are the next three years of features? List the likely features, flag any that need native code, and check that the framework and its plugins handle them today, not on a roadmap.
  7. Prototype the riskiest screen. If one feature worries you, build a throwaway version of it in the candidate framework within a week or two before committing.

Common mistakes to avoid

  • Choosing on benchmarks. Synthetic speed tests say little about a booking or banking app. Choose on features, team and maintenance.
  • Assuming cross-platform means one QA pass. Every release still needs testing on real iOS and Android devices, including older and cheaper Android phones.
  • Picking plugins casually. Each plugin is a dependency you must keep updated for every new OS version. Prefer few, well-maintained ones.
  • Ignoring accessibility. VoiceOver and TalkBack support, dynamic text sizes and contrast must be designed and tested in every framework. Native controls give you more of this for free; custom-drawn UI needs extra care.
  • Hiding native work in the estimate. Widgets, watch apps and background features need native skills. If a proposal does not mention them, ask.
  • Treating launch as the finish line. Budget for yearly store requirement updates, OS releases and framework upgrades from the start.

How Authect approaches this

We do not have a favourite framework to sell. When you talk to us, you talk to the founders who will build your project, and we start from your product: who uses it, how often, which device features matter, and what your team already knows. Every project is led by a senior engineer who has shipped both native and cross-platform apps and can explain the trade-off for your case in plain terms.

We build with small teams and AI-accelerated delivery, with an engineer reviewing every line. You own the code, the store accounts, the infrastructure and the designs from day one, so you are never locked in. Depending on certainty, we work as fixed-price projects, monthly sprints, or ongoing support and evolution once the app is live. You can see the kind of thinking we bring in our clinic booking app concept and our application development services. If you want a second opinion on your platform choice, get in touch.

SSS

Is cross-platform development cheaper than native?

Usually it costs less, but not half. Design, backend, APIs, testing on both platforms, store work and native-only features stay the same whichever framework you use. Cross-platform mainly removes the duplicated work of building screens and business logic twice. The real saving depends on how much of your app is shared screens versus platform-specific features.

Is Flutter or React Native better?

Neither wins in general. React Native renders real platform controls and suits teams that already use React on the web. Flutter draws its own widgets, which suits brand-heavy interfaces that should look identical on both platforms. Choose based on your team's skills, how platform-like the app must feel, and the plugins your features depend on.

Can a cross-platform app use device features like the camera, Bluetooth and GPS?

Yes. All the major frameworks reach these through plugins or native modules, and you can write your own native code when a plugin is missing or weak. Background behaviour, such as tracking location or talking to a Bluetooth device while the app is closed, needs the most care and often some native code.

What is Kotlin Multiplatform and when should I use it?

Kotlin Multiplatform lets you write business logic, networking and storage once in Kotlin and use it on iOS and Android, while keeping native screens or sharing them with Compose Multiplatform. It suits teams with Kotlin skills and products that want a fully native interface without duplicating the logic underneath.

Can I switch from cross-platform to native later?

Yes, and teams do it gradually. You can add native screens to a React Native or Flutter app, or embed Flutter in a native app, and move features one at a time. A clean API and well-separated business logic make this much easier, which is a good reason to insist on them from the start.

Will Apple reject an app built with Flutter or React Native?

No. Apple reviews what the app does, not the framework it was built with. Apps are rejected for thin website wrappers, missing functionality, privacy problems or downloading code that changes features. A well-built cross-platform app passes review like any native app.

Do I need separate teams for iOS and Android?

With native development you normally need iOS and Android specialists. With a cross-platform framework one team can build both, but it should include at least one person comfortable with native tooling for builds, signing, plugins and platform-specific features.

Pranas MickeviciusChief Executive Officer
Yayınlanma:
4 Kasım 2026
  • Mobile apps
  • iOS
  • Android
  • Flutter
  • React Native
  • Kotlin Multiplatform

Ayda bir, geliştirme notları

SaaS platformları, uygulamalar ve yapay zekâ özellikleri geliştirirken öğrendiklerimiz: pratik, kısa ve işi bizzat yapan kuruculardan.

Ayda bir e-posta. İstediğiniz zaman abonelikten çıkabilirsiniz. Gizlilik politikası

Ne geliştirdiğinizi anlatın. Bir iş günü içinde bir kurucumuz size yanıt verir ve projeyi sizinle birlikte geliştirir.

Talebinizle ilgili sizinle iletişime geçebilmek için bilgilerinizi CRM sistemimize ekleyeceğiz. Daha fazla bilgi için bkz.: gizlilik politikamız.