You want to build for iPhone and iPad. You have a Mac. Quality and polish matter most.
Path: Swift + SwiftUIYou want to build for Android phones and tablets. You know Java or want the modern Android stack.
Path: Kotlin + Jetpack ComposeYou want one codebase for iOS and Android. You already know JavaScript. Speed matters more than peak performance.
Path: TypeScript + React NativePath A: Swift for iOS
Swift is Apple's language — designed from the ground up for iOS and macOS development. SwiftUI is the modern declarative UI framework (think React for iOS). If you're targeting iPhones, this is the right choice. You'll need a Mac and Xcode (free).
What makes Swift good for iOS: Tight integration with Xcode, access to the full Apple ecosystem (HealthKit, ARKit, CoreML), excellent performance, and deep platform knowledge that cross-platform solutions can't match. SwiftUI previews give you instant visual feedback.
What to learn first: Swift basics (optionals, structs, protocols, closures) → SwiftUI Views and state → async/await for networking → Codable for JSON → storing data with SwiftData or Core Data.
Path B: Kotlin for Android
Kotlin is Google's preferred language for Android development and the modern replacement for Java on Android. Jetpack Compose is the declarative UI framework. Android Studio (free) is the development environment.
What makes Kotlin good for Android: Null safety baked into the type system, concise syntax, 100% Java interoperability, coroutines for async, and Google's full backing. Jetpack Compose drastically reduces boilerplate compared to the old XML layout system.
What to learn first: Kotlin basics (null safety, data classes, scope functions, coroutines) → Jetpack Compose → ViewModel and state management → Retrofit for networking → Room for local storage.
Path C: TypeScript + React Native for cross-platform
React Native lets you write one TypeScript codebase and deploy to both iOS and Android. It compiles to native components (not a web view), so performance is reasonable for most apps. If you already know JavaScript/TypeScript from web development, this is the fastest path to shipping a mobile app.
The honest trade-off: You won't have access to the latest platform APIs on day one, debugging is harder, and some features require writing native code (Swift/Kotlin) anyway. For most apps — social, productivity, e-commerce — it's fine. For games, AR/VR, or highly performance-sensitive apps, go native.
What to learn first: TypeScript (if you haven't) → React fundamentals → React Native components → Expo (easiest setup) → navigation → fetching data.