PostShare
AndroidFebruary 11, 2026·8 min

Kotlin Multiplatform in Production: When It Works and When It Doesn't

RC

Rashad Cureton

Founder, Cure Consulting Group

Kotlin Multiplatform in Production: When It Works and When It Doesn't
Back to Blog

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, Vehicle types
  • 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:

MetricBefore (Separate)After (KMP)
Shared code0%47%
API-related bugs12/quarter3/quarter
Feature parity time3-4 weeksSame sprint
Build time (CI)8 min Android + 12 min iOS15 min combined
Team ramp-up3 months
The bug reduction alone justified the investment. API deserialization bugs were the #1 source of platform-specific issues, and KMP eliminated them entirely.

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.

KotlinKMPAndroidiOSCross-Platform
RC

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.

Found this useful?

Book a free 30-minute architecture review to discuss your project.

Book a Review

Related Articles