Choose Mobile Stack
Mobile choices are permission and distribution choices first. UI framework preference comes second.
Decision Table
| Need | Pick | Why | Avoid when |
|---|---|---|---|
| Android-first, Android APIs, Play policy, SMS, budget devices | Kotlin + Jetpack Compose | Official native UI path, direct platform APIs, Material 3, Android Studio tooling | iOS parity is mandatory at launch |
| iOS-only, Apple-native experience | SwiftUI | Best Apple API and App Store fit | Android is the actual first market |
| Android+iOS with standard native APIs and React skills | Expo/React Native | EAS Build/Submit/Update, dev builds, curated native modules | Native modules dominate immediately |
| Highly branded identical UI across platforms | Flutter | One rendering model across mobile, desktop, and web | Native platform feel is the selling point |
| Android-first with future shared logic | Kotlin Multiplatform | Share business logic without forcing shared UI too early | You need fastest simple v1 and no shared logic yet |
| Forms/content with broad reach | PWA | Lowest install friction, one web codebase | Restricted permissions or reliable background work are core |
Android Native Wins When
- SMS, telephony, background work, local files, biometrics, widgets, or deep permissions are core.
- Play policy and permission declarations are part of the product risk.
- Budget Android devices are the real test environment.
- Native Android UX and Material 3 polish build trust.
Expo/React Native Wins When
- Android and iOS must ship together.
- The team is strongest in React/TypeScript.
- Native needs are standard enough for Expo SDK or development builds.
- EAS Build, Submit, and Update reduce release friction.
Flutter Wins When
- The UI should look consistent across platforms.
- You value one rendering model more than platform-native feel.
- Dart and Flutter-specific architecture are acceptable product costs.
Gotcha: Cross-platform mobile does not remove store policy, permission review, device testing, or native escape hatches. It just changes where you pay for them.