Akforges
← All posts
MobileReact NativeiOSAndroid

React Native vs Native iOS and Android: How We Decide in 2026

React Native has improved significantly. Native still wins for certain use cases. Here's the framework we use to decide — with real trade-offs from production apps.

April 22, 20268 min readAkforges Studio

We get asked this question on almost every mobile project. The answer has changed over the last few years — React Native is genuinely good now — but native still wins for specific use cases. Here's the full decision framework.


What changed in React Native

React Native 0.73+ introduced the New Architecture (Fabric renderer + JSI) as stable. This removes the async bridge that caused most of React Native's historical performance issues. Direct synchronous JavaScript-to-native calls are now possible, which matters for gesture handlers, animations, and real-time data.

React Native has also improved significantly:

  • Expo SDK 51+ makes bootstrapping a production app much faster
  • Reanimated 3 enables 60fps animations that run on the UI thread
  • React Native Skia handles 2D graphics without a native module
  • Expo Router brings file-system routing (similar to Next.js App Router) to mobile

For most business apps — CRUD, forms, data display, push notifications, basic camera — React Native is now a serious production choice.


When we choose React Native

You have a Next.js or React web app and want code sharing.

With React Native + Expo and a shared design system, you can share 30–50% of business logic between web and mobile (API clients, data validation, state management, utility functions). This is real value if you have a small team maintaining both.

Your team is JavaScript/TypeScript-only.

Training a JavaScript team on Swift or Kotlin is a 3–6 month investment before they're productive. React Native lets them ship mobile immediately.

Your UI is data-heavy and standard.

Dashboards, feeds, forms, settings screens, content display — React Native handles all of these well with performance that users can't distinguish from native.

Time to market is the primary constraint.

React Native apps can be bootstrapped and submitted to the App Store faster. One codebase, one PR review cycle, one set of tests.


When we choose native Swift + Kotlin

You need platform-deep integrations.

ARKit, CoreML on-device inference, HealthKit, CarPlay, iOS Shortcuts, Android Auto, Android Automotive, background Bluetooth, precise GPS with background modes — these either require native code or have React Native wrappers that are months behind Apple/Google SDK releases.

Video calling is a core feature.

We learned this on Coastline Health. LiveKit, WebRTC, and CallKit integration on iOS works significantly better in native Swift. The React Native wrappers exist but you end up in native bridge debugging anyway. For video call quality and battery performance, native wins clearly.

You're building a game, media editor, or graphics-heavy app.

Metal (iOS) and Vulkan (Android) are not accessible from React Native. If your app is computationally intensive or requires frame-level rendering control, native is the only path.

Long-term performance at scale matters.

For apps targeting 1M+ DAUs with complex real-time state, the React Native JS thread can become a bottleneck. Native gives you full control over threading, memory, and rendering. This is a rare scenario — most apps never hit this ceiling — but for consumer apps competing with tier-1 products, the ceiling matters.

HIPAA or security-sensitive apps.

Secure Enclave access, biometric authentication with advanced fallback, certificate pinning, and on-device encryption are all possible in React Native — but require native modules that are often not actively maintained. In Swift and Kotlin, these are first-party APIs. For Coastline Health (telehealth, HIPAA), we used the Secure Enclave directly for credential storage and implemented Signal Protocol in Swift. The equivalent React Native setup would have required multiple third-party packages with varying maintenance status.


The hybrid approach

For some projects, the right answer is neither pure React Native nor pure native — it's a combination.

React Native app with native modules: The main app is React Native, but performance-critical or platform-deep features are written as native modules in Swift/Kotlin and exposed to React Native via JSI. This gives you code sharing for the majority of the app while keeping full native capability for the parts that need it.

Native app with WebView for web content: For apps where 20–30% of screens are content or settings that don't need native performance, embedding a WebView for those screens reduces total code duplication. Not pretty, but pragmatic.

We use the hybrid approach when a client has an existing React Native codebase that's mostly working but has one or two features that need native depth.


The real cost comparison

This is often the deciding factor.

| | React Native | Native (iOS + Android) | |---|---|---| | Initial build time | 1x | 1.6–1.8x | | Ongoing maintenance | Lower | Higher (two codebases) | | Performance debugging | JS bridge profiling | Platform-native tools | | Platform API access | Via wrappers (lag) | Immediate | | App Store submission | One process | Two separate submissions | | Team skill requirement | React/TypeScript | Swift AND Kotlin |

For a startup with 2 frontend engineers, the 1.6x cost multiplier for native is significant. For a company where mobile is core to the business (healthcare, fintech, consumer social), the performance ceiling and platform depth of native justify the cost.


Our decision checklist

When scoping a new mobile project, we run through these questions in order:

  1. Does the app require any of these? Video calling, AR, on-device ML, CoreBluetooth, HealthKit, CarPlay/Android Auto, advanced biometrics → Native
  2. Is there an existing React/Next.js web app with shared business logic?React Native
  3. Is the team JavaScript-only with no time to learn Swift/Kotlin?React Native
  4. Is this a high-stakes consumer app where performance ceiling matters?Native
  5. OtherwiseReact Native (faster, cheaper, good enough)

What we tell clients who ask

React Native is no longer the "second choice" it was in 2019. For most business applications, it's the right choice — faster to ship, cheaper to maintain, and genuinely performant.

Native Swift + Kotlin is the right choice when you need platform depth, long-term performance headroom, or are building features that React Native's ecosystem simply can't support cleanly.

The mistake we see most often: choosing React Native to save cost on a project where video calling, advanced sensor access, or high-performance animation is a core feature. You end up writing native modules anyway, and you've added the complexity of the bridge on top.


If you're scoping a mobile project and not sure which approach fits, we offer a free 30-min architecture call. We'll tell you honestly which path makes sense for your specific requirements.

Work with us

Need help applying this to your stack?

Free 30-min strategy call. We'll scope your problem and tell you honestly what the fix looks like.

Book a strategy call