Home / Blog / Kotlin Multiplatform in 2027

App Development · Field Notes

Kotlin Multiplatform in 2027: Is It Finally Worth Trying?

You keep hearing KMP is finally good. Compose Multiplatform for iOS went stable back in May 2025, big companies ship it, and the tooling stopped being weird. So should your small team run a spike before you lock in next year's roadmap? Short answer: probably yes, if the fit is right.

App Development · Field Notes

Key takeaways

  • KMP is stable on Android, iOS, JVM desktop, JVM server, and Kotlin/JS web. Kotlin/Wasm web, watchOS, and tvOS are still Beta.
  • Compose Multiplatform for iOS went stable in May 2025 (version 1.8.0) and has been shipping steady quality-of-life releases since — 1.11 in May 2026 turned on concurrent rendering by default.
  • You can share most business logic and, if you want, most of the UI between iOS and Android from one Kotlin codebase.
  • It's an easy yes for internal apps, brand-consistent products, and Kotlin-fluent teams. It's a no for animation-heavy consumer apps and Swift-first teams.

Every year or so, someone in your group chat sends "okay THIS time Kotlin Multiplatform is ready." And for a few years running, the honest answer was: kind of, but the iOS story still had rough edges. If you're sketching a 2027 roadmap right now, the calculus really has changed — and the thing worth knowing is that it changed a while ago, not last week.

Below is the friendly, unhyped version: what actually works today, what still bites, and how KMP stacks up against Flutter, React Native, and just-write-it-twice. If you've read our breakdown of web apps vs native apps, this is that same fit-first framework applied to KMP specifically.

What actually changed

Two things stopped being asterisks:

  • KMP itself is stable. Not "stable-ish, watch for compiler regressions." Actually stable, and has been since 2023, on Android, iOS, and JVM. K2 stopped being "the new compiler" and just became Kotlin; the current stable release is 2.4.10, out in July 2026.
  • Compose Multiplatform on iOS grew up. The milestone was Compose Multiplatform 1.8.0 in May 2025, when Compose for iOS was declared stable and production-ready. Everything since has been polish: 1.10 (January 2026) made Compose Hot Reload stable and bundled by default, unified @Preview into commonMain, and brought Navigation 3 to non-Android targets. 1.11 (May 2026) flipped concurrent rendering on by default on iOS. 1.12 is in RC as we write this.

The ecosystem caught up too. Ktor for networking and SQLDelight for persistence are boring-in-a-good-way now. Coroutines, serialization, KSP2, DI — all fine. You can build a real app with real libraries without stitching together beta releases. Tooling settled down in a less glamorous way: JetBrains abandoned its standalone Fleet-based KMP IDE in early 2025 and put the effort into IntelliJ IDEA and Android Studio instead. That's the supported path now, and Google backs KMP on Android officially, so you're not betting on a side project.

Where each target actually stands

The most useful thing to internalize before a spike is that "KMP" is not one maturity level. It's a stack of them:

Target or featureStatus as of mid-2026
Android, iOS, JVM desktop, JVM serverStable
Web via Kotlin/JSStable
Web via Kotlin/WasmBeta
watchOS, tvOSBeta
Compose Multiplatform UI on iOSStable since 1.8.0 (May 2025)
Compose Multiplatform UI on webBeta since 1.9.0, with a Kotlin/JS fallback mode
Swift export (idiomatic Swift APIs)Alpha, opt-in

Read that table as a scope filter. Phone apps: green. Desktop companion: green. A web build from the same codebase: possible, but you're an early adopter. Watch app: wait.

The pitch was never "write once, run everywhere." It's "share the boring 80% and stay native for the interesting 20%." That's a much better deal.

Who's actually shipping this in production?

You don't have to be an early adopter to try KMP anymore. JetBrains keeps a public case-study list, and it stopped being hand-wavy a while back:

  • McDonald's, Forbes, Cash App, Bitkey by Block, Duolingo, Bolt, Philips, VMware, Wrike, Meetup and Quizlet all share business logic across iOS and Android.
  • Google ships KMP inside Workspace apps, including Google Docs.
  • Instabee is the interesting one for small teams: they migrated their Android app's logic and UI and brought it to iOS with Compose Multiplatform.
  • Booking.com published a detailed write-up of two production KMP use cases in June 2026, worth reading before your own spike.

"Big companies use it" is not itself a reason to pick a stack — but it does mean the landmines got mapped by people with deeper pockets than yours.

Start with a shared-logic spike, not shared UI. Put your networking, models, and validation in a KMP module first. Ship it inside your existing Android app and a small SwiftUI shell. If that goes well, then try Compose Multiplatform for a screen or two.

What still bites

KMP is good, not magic. In no particular order, the things that still make you sigh:

  • iOS build times. Kotlin/Native plus Xcode is not fast. It has genuinely improved — K2 and successive Kotlin/Native release-build optimizations moved the baseline, and JetBrains showed further build and memory gains at KotlinConf in May 2026 — but a cold clean build still tests your patience. "Grab a coffee" is still a thing.
  • Swift interop is the real rough edge. Swift export — the feature that gives you idiomatic Swift APIs instead of Objective-C-flavored headers — is still Alpha, still opt-in, and still doesn't do cross-language inheritance or real generics. Production apps go through the Objective-C interop path. This is the biggest thing to watch as you plan into 2027.
  • Native module bindings. When you need a Swift-only API — a specific StoreKit flow, a fresh HealthKit permission, a vendor SDK — you're writing Swift and bridging. It's fine, but budget for it.
  • Compose UI is close, not identical. Scrolling, haptics, and default look-and-feel are near-native on iOS, and 1.11 added an experimental native text-input path. But you still can't fully replicate the newest SwiftUI polish — the Liquid Glass refresh landing with iOS 27 this fall, some system animations — without native bits.
  • Smaller ecosystem than Flutter or React Native. Libraries exist, but the third-party pool is shallower. You will occasionally need to write your own binding.

KMP vs Flutter vs React Native vs Native

For the honest comparison, here's how the four realistic options actually feel to a small team right now:

FactorKMP + ComposeFlutterReact NativeNative (Swift + Kotlin)
LanguageKotlinDartTypeScript/JSSwift + Kotlin
Compiles toNative on each platformAOT native + Impeller rendererJSI + Fabric native viewsNative
Code sharing (iOS/Android)Logic + most UILogic + all UILogic + most UINone
Native interopVery good (Swift export still Alpha)OK, via platform channelsGood, ecosystem wideBest
Ecosystem sizeGrowingLargeLargestNative ecosystems
Current stable (mid-2026)Kotlin 2.4.10, Compose MP 1.11Flutter 3.44, Dart 3.120.83, legacy architecture removedSwiftUI + Jetpack Compose
Best when…You want native fidelity + shared codeUI-heavy consumer appsWeb team building mobileAbsolute fidelity, budget for double

If this table made you curious about the other side of the coin — Flutter vs React Native vs Native — the short version is that Flutter wins UI-heavy consumer work and React Native wins when your team already lives in TypeScript. And if you're still choosing which platform to launch on at all, start with iOS vs Android: where should you launch your first app?

When KMP is the right call for your 2027 roadmap

Green lights:

  • Internal or B2B apps where the UI is functional, not flashy.
  • Brand-consistent products that want the exact same look on both platforms.
  • Teams already fluent in Kotlin, or Android-first shops that want to add iOS without hiring a second team.
  • Products that expect to live for years — the "share the boring 80%" bet compounds over time.

Red lights:

  • Game-adjacent apps or anything with heavy custom animation and gesture choreography.
  • Teams already deep in Swift/SwiftUI shipping happily — there's no upside to disrupting that.
  • Products that need to ship day-one support for the newest iOS-only capabilities. The iOS 27 Liquid Glass refresh arrives this fall and Apple is steering everyone onto it; if your differentiator is being first with that look, stay native.
  • Roadmaps that depend on clean, idiomatic Swift APIs over your shared module. Swift export is coming, but it isn't here yet.
Don't underestimate the iOS build slowdown on day one. Your engineers will feel it before your users see any benefit. Bake CI caching and incremental builds into the spike, not later — morale is a real project risk.

Where people go wrong (and when to call a pro)

The classic KMP mistakes are all about module boundaries. Teams either share too little (a thin utils module) and get no leverage, or share too much (UI, navigation, platform-specific state) and end up fighting the compiler on both sides. The other landmine is iOS interop — the tricky 20% where you need a Swift-only API and someone has to write clean bindings the rest of the team can trust, which is still Objective-C-shaped work until Swift export matures. And CI/CD for KMP is its own small skill: the difference between a build you can live with and one that eats your afternoon is usually just knowing what to cache. A team that has shipped a KMP app before will save you weeks on all three.

If you'd like a hand designing the shared-module boundary, bridging the awkward iOS parts, or setting up CI so builds don't ruin the day — that's exactly the kind of work we do. Take a look at our services and tell us what you're building.

Frequently asked questions

Is Kotlin Multiplatform actually stable heading into 2027?
Yes for the parts most teams need. The KMP core has been stable since 2023, and Compose Multiplatform for iOS went stable in May 2025 with version 1.8.0. As of mid-2026 the stable targets are Android, iOS, JVM desktop, JVM server, and Kotlin/JS web. Kotlin/Wasm web, watchOS, and tvOS are still Beta, and Compose Multiplatform for web has been in Beta since version 1.9.0.
How much code can I actually share between iOS and Android with KMP?
Most teams share the large majority of their business logic, and with Compose Multiplatform you can share most of the UI too — Instabee moved its Android app logic and UI to iOS that way. Networking with Ktor and persistence with SQLDelight are mature. The last slice, deep platform integrations like biometrics or vendor SDKs, usually stays native, and that's fine.
How does KMP compare to Flutter or React Native?
KMP compiles to real native binaries on each platform, which keeps you closer to the metal and to native APIs than a Dart or JavaScript runtime. Flutter ships its own renderer and has the broader UI toolkit; React Native has the biggest community and, now that the New Architecture is mandatory, no JavaScript bridge. KMP wins for teams already fluent in Kotlin who want native fidelity without doubling the codebase.
When should a small team NOT choose Kotlin Multiplatform?
Skip KMP if your app is highly animation- or game-driven, if your team is already deep in Swift/SwiftUI, or if you need bleeding-edge iOS-only capabilities on day one (the iOS 27 Liquid Glass refresh, ARKit, brand-new HealthKit features). It is also worth waiting if your plan depends on idiomatic Swift APIs, because Swift export is still Alpha and opt-in.

Thinking about a KMP spike?

We'll help you pick the right slice to share — and ship it.

Ghostwire Systems designs shared-module boundaries, handles the iOS interop that trips people up, and sets up KMP CI/CD that doesn't ruin your day. Tell us what you're building.