If you need both an iOS app and an Android app, the traditional choice has been: build two completely separate codebases, or compromise with a cross-platform framework that ships a non-native UI. Kotlin Multiplatform (KMP) offers a third path that most developers underestimate until they actually try it.
What Kotlin Multiplatform Actually Does
KMP lets you write shared Kotlin code — business logic, networking, data persistence, domain models — and compile it to native binaries on each platform. On Android, the shared module integrates directly into an Android Studio project and works alongside Jetpack Compose. On iOS, it compiles to a native framework that you import into an Xcode project and use from SwiftUI.
Crucially, KMP does not touch the UI layer. This is what makes it fundamentally different from Flutter or React Native. The Android UI is written in Kotlin with Jetpack Compose. The iOS UI is written in Swift with SwiftUI. Each platform gets the UI that its users expect, built with the tools that Apple and Google recommend.
What You Share vs. What Stays Native
A typical KMP project structure looks like this:
Shared (Kotlin):
- HTTP client (Ktor)
- JSON serialization (kotlinx.serialization)
- Local database (SQLDelight)
- Business logic and use cases
- Domain models and data classes
- ViewModels / state holders (shared state management)
Android only (Android Studio):
- Jetpack Compose UI
- Android-specific APIs (camera, notifications, biometrics)
- Google Play Billing
iOS only (Xcode):
- SwiftUI / UIKit
- Apple-specific frameworks (HealthKit, ARKit, CoreNFC)
- StoreKit (in-app purchases)
Real Performance, Not Emulation
KMP compiles to native ARM binaries. There is no JavaScript engine, no virtual machine and no rendering bridge sitting between your code and the hardware. The shared Kotlin code on iOS becomes a native Swift-compatible framework — it calls the same CPU instructions as code written in Swift or Objective-C. This means KMP apps pass Apple’s App Review without workarounds and achieve the same performance as fully native apps.
When KMP Is the Right Choice
KMP shines when:
- Your app has complex business logic that would otherwise be duplicated across two codebases
- You have an existing Kotlin Android app and want to expand to iOS without rewriting everything
- Quality and platform feel matter — your users notice when something feels “off”
- Hardware integrations, offline-first behaviour or strict performance requirements rule out heavier frameworks
KMP is not the right choice when your team has no Kotlin experience, when the app is primarily UI and has minimal business logic, or when rapid prototyping is more important than long-term maintainability.
The State of KMP in 2025
Kotlin Multiplatform reached stability in late 2023. The tooling has matured significantly: Xcode integration is smooth, CocoaPods and Swift Package Manager are both supported, and the JetBrains ecosystem has produced stable libraries for every common need. Compose Multiplatform (the shared UI option, if you want it) is also stable for mobile. Major companies including Netflix, VMware, and McDonald’s use KMP in production.
Our Approach at Mokapp
We have deep expertise in both the Android (Kotlin, Jetpack Compose, Android Studio) and iOS (Swift, SwiftUI, Xcode) ecosystems. This means we can make the right architectural decisions for KMP projects — knowing exactly what to share and what to keep native — and we can deliver both the Android and iOS sides of the app to the same high standard.
If you are evaluating whether KMP is the right fit for your project, get in touch. We are happy to discuss your requirements and give you an honest assessment.

No responses yet