01Native iOS: Swift 6 and SwiftUI
Right when the app leans on iPhone hardware, Apple Intelligence or the iOS 26 design language, and iPhone users are the ones who pay. Later cost: a second codebase if Android follows, and a yearly pass through Apple's SDK deadline to stay accepted by review.
Swift 6 · SwiftUI · iOS 26 · Core ML
02Native Android: Kotlin and Jetpack Compose
Best when your audience skews Android, you need NFC, Bluetooth or background location, or tablets and foldables with Android 16 adaptive layouts matter. Later cost: keeping pace with Play's target API deadlines and testing across a wide range of devices.
Kotlin · Jetpack Compose · Android 16 · ML Kit
03React Native with Expo
Our default when one team must ship to both stores, the interface is mostly screens, forms and lists, and you already have TypeScript developers. Later cost: native modules for anything unusual, an Expo SDK upgrade about once a year, and a larger app binary.
React Native · Expo · TypeScript · New Architecture
04Flutter
A strong fit for custom, animation-heavy interfaces that must look identical on iOS, Android, web and desktop, or for teams that already write Dart. Later cost: a smaller hiring pool, widgets that lag new platform design changes, and platform channels for native features.
Flutter · Dart · Custom UI · Multi-target
05Kotlin Multiplatform
Right when the hard part is business logic, networking or sync, and you still want native SwiftUI and Compose screens. Later cost: two UI codebases, iOS developers who must read Kotlin, and build tooling that needs an owner as the shared module grows.
Kotlin Multiplatform · Shared logic · Native UI
06On-device AI: Core ML, Foundation Models and Gemini Nano
Choose this when a feature must work offline, keep personal data on the phone or respond instantly: summarising, classifying, extracting text from photos. Later cost: device and OS gates for the newest models, a fallback for older phones, and re-testing at each OS release.
Core ML · Foundation Models · Gemini Nano · Privacy