Kotlin Multiplatform in Production: When It Works and When It Doesn't
Rashad Cureton
Founder, Cure Consulting Group

The Promise vs. Reality
Kotlin Multiplatform (KMP) has graduated from experimental to production-ready. JetBrains marked it stable in late 2024, and adoption has accelerated through 2025-2026. Companies like Netflix, VMware, and Cash App have shipped KMP in production.
But "production-ready" doesn't mean "right for every project." After integrating KMP into multiple enterprise codebases, here's an honest breakdown.
What KMP Actually Is (and Isn't)
KMP is: A way to write shared business logic in Kotlin that compiles to JVM (Android/backend), native (iOS via Kotlin/Native), and JavaScript (web).
KMP is not: A UI framework. Unlike Flutter or React Native, KMP doesn't try to share your UI. Your Android UI is still Jetpack Compose. Your iOS UI is still SwiftUI. KMP shares everything behind the UI.
This is its greatest strength and its most common point of confusion.
The Architecture That Works
The sweet spot for KMP is sharing the layers that don't touch the screen:
Shared (KMP Module)
- Data models — your
User,Transaction,Vehicletypes - Networking — Ktor client with shared API definitions
- Business logic — validation, calculations, transformations
- Local persistence — SQLDelight for shared database schemas
- Serialization — kotlinx.serialization for JSON parsing
Platform-Specific
- UI — Compose (Android), SwiftUI (iOS)
- Platform APIs — camera, Bluetooth, push notifications
- Navigation — platform-native navigation
- DI — Hilt (Android), native Swift DI patterns (iOS)
┌─────────────┐ ┌─────────────┐
│ Android UI │ │ iOS UI │
│ (Compose) │ │ (SwiftUI) │
└──────┬──────┘ └──────┬──────┘
│ │
└────────┬─────────┘
│
┌──────────┴──────────┐
│ Shared KMP Module │
│ • Data Models │
│ • Networking (Ktor)│
│ • Business Logic │
│ • SQLDelight DB │
└─────────────────────┘Where KMP Shines
1. Shared Data Models
This alone can justify KMP. When your Android and iOS apps parse the same API, maintaining two sets of data models is a constant source of bugs. KMP eliminates this entire category of errors.2. Networking Layer
Ktor + kotlinx.serialization gives you a shared HTTP client that handles authentication, retries, and response parsing identically on both platforms. One API change, one code update.3. Business Rules
Validation logic, price calculations, eligibility rules — anything that should behave identically across platforms. We've seen clients maintain divergent business rules across Android and iOS for years without realizing it.4. Offline Sync Logic
SQLDelight provides a shared database schema and query layer. The sync logic — conflict resolution, queue management, retry policies — is written once.Get insights like this in your inbox
Practical tips on AI, mobile & cloud — no spam.
Where KMP Struggles
1. Kotlin/Native Memory Model
While dramatically improved since the new memory manager (released 2022), there are still edge cases around concurrency in Kotlin/Native. Coroutines work, but some patterns that are natural on JVM require care on Native.2. iOS Developer Experience
Your iOS team needs to understand Kotlin, or at least be comfortable debugging into it. The interop layer (Kotlin → Objective-C → Swift) can produce confusing stack traces. Also, IDE support for KMP in Xcode is limited — most KMP development happens in Android Studio or Fleet.3. Build Complexity
KMP adds complexity to your build system. Gradle multiplatform builds are slower than pure Android builds, and CI configuration requires maintaining both Android and iOS build pipelines.4. Library Ecosystem
While growing rapidly, the KMP library ecosystem is smaller than native Android or iOS. You may need to write expect/actual implementations for platform-specific libraries, or use wrapper libraries that may not be as mature.The Decision Framework
Choose KMP when:
- You have both Android and iOS apps with significant shared business logic (40%+ code overlap potential)
- Your team includes strong Kotlin developers
- You're building a new project or have a planned architecture overhaul
- Consistency between platforms is a business requirement (fintech, healthcare)
Stay native when:
- One platform is significantly more important than the other
- Your iOS team is Swift-only and resistant to learning Kotlin
- Your app is primarily UI-intensive with minimal shared logic
- Time-to-market pressure doesn't allow for KMP learning curve (3-6 months)
Choose Flutter instead when:
- You want shared UI and logic (and accept the tradeoffs)
- Your team is comfortable with Dart
- Your app is primarily CRUD/content display
- You're an agency building apps for different clients quickly
Real Numbers from Production
From a recent enterprise KMP integration:
| Metric | Before (Separate) | After (KMP) |
|---|---|---|
| Shared code | 0% | 47% |
| API-related bugs | 12/quarter | 3/quarter |
| Feature parity time | 3-4 weeks | Same sprint |
| Build time (CI) | 8 min Android + 12 min iOS | 15 min combined |
| Team ramp-up | — | 3 months |
Getting Started: The Incremental Approach
Don't rewrite your app. Start with:
- Extract your data models into a KMP module
- Move your networking layer to use Ktor
- Share one business logic module — pick the one with the most duplicated logic
- Expand gradually — add modules over 2-3 quarters
This approach lets you validate KMP with low risk while building team expertise.
Evaluating KMP for your mobile strategy? Book a free architecture review — we'll assess your codebase and tell you honestly whether KMP is worth the investment for your specific situation.
Written by
Rashad Cureton
Founder & Principal Engineer
Rashad is the founder of Cure Consulting Group. Previously an engineer at JP Morgan, Ford, Clear, NYT, Kickstarter, and Big Nerd Ranch. He builds full-stack web and mobile apps for startups and companies of every size.
Related Articles

Android Architecture in 2026: What We Ship at Scale
Jetpack Compose is table stakes now. The real question is how you structure state, handle offline, and ship reliably to 200M+ devices. Here's what we've learned building Android at Ford and beyond.
9 min

Mobile App Development: Native vs Cross-Platform in 2026
The native vs. cross-platform debate has shifted dramatically. KMP, Flutter, and React Native have all matured — but 'it depends' isn't useful advice. Here's a concrete decision matrix.
10 min

The Real Cost of Technical Debt: A CFO's Guide
Technical debt isn't just an engineering problem — it's a financial one. Here's how to quantify it, communicate it to the board, and decide when paying it down makes business sense.
10 min