Mobile App WikiMobile App Wiki
WikiApp DiscoverDiscuss

Wiki

    mobileapp.wiki

    Wiki

    • ASO17
    • Monetization14
    • Store Policies20
    • Metrics15
    • Development25
    • Marketing15
    • Legal9
    • UI/UX14
    • Testing10
    • Infrastructure10

    mobileapp.wiki

    Home/Development/Kotlin Multiplatform (KMP) and Compose Multiplatform in 2026
    Development6 min read

    Kotlin Multiplatform (KMP) and Compose Multiplatform in 2026

    Kotlin Multiplatform in 2026: sharing logic across Android and iOS, Compose Multiplatform status, key libraries, iOS interop and a KMP vs Flutter comparison.

    Kotlin Multiplatform (KMP) and Compose Multiplatform in 2026

    Table of Contents

    What Is Kotlin Multiplatform?What to Share and What to Keep NativeCompose MultiplatformProject Structureexpect/actualKey LibrariesiOS IntegrationThe Objective-C BridgeSwift ExportKMP vs Flutter vs React NativeWhen to Choose KMPMigrating an Existing Android AppRelated Topics

    What Is Kotlin Multiplatform?

    Kotlin Multiplatform (KMP) compiles Kotlin for several targets: the JVM for Android, Kotlin/Native for iOS, and JavaScript or WebAssembly for the web. Unlike Flutter or React Native, KMP does not force a shared UI. You decide how much to share, from one networking module to the entire app.

    KMP has been stable since late 2023, and Google officially supports it for sharing business logic between Android and iOS. As of October 2026 the latest stable Kotlin release is 2.4.21, with 2.5.0 planned for December 2026.

    What to Share and What to Keep Native

    LayerTypically shared?Notes
    Domain models and business rulesYesPure Kotlin, easiest win
    Networking and serializationYesKtor + kotlinx.serialization
    Local storage and cachingYesSQLDelight, Room, DataStore
    ViewModels and stateOftenJetpack ViewModel and Lifecycle support KMP
    UIOptionalNative UI or Compose Multiplatform
    Platform APIs (camera, payments, widgets)RarelyWrap behind interfaces

    A common starting point is "shared logic, native UI": Jetpack Compose on Android, SwiftUI on iOS, one Kotlin module underneath.

    Compose Multiplatform

    Compose Multiplatform (CMP) is JetBrains' declarative UI framework based on Jetpack Compose. Compose Multiplatform 1.8.0, released on May 6, 2025, declared iOS support stable. As of October 2026, the 1.12 line is current (1.12.2 was released in October 2026).

    PlatformKMP coreCompose Multiplatform
    AndroidStableStable
    iOSStableStable
    Desktop (JVM)StableStable
    Web (Kotlin/Wasm)BetaBeta

    CMP draws its own UI on iOS instead of using UIKit components, similar to Flutter. You can mix approaches: host a Compose screen in a SwiftUI app, or embed native iOS views inside Compose.

    Project Structure

    A typical KMP project has a shared module with source sets per platform:

    shared/
      src/commonMain/   // code for all platforms
      src/androidMain/  // Android-specific implementations
      src/iosMain/      // iOS-specific implementations
    androidApp/         // Android application
    iosApp/             // Xcode project
    

    expect/actual

    When common code needs a platform API, declare an expect in commonMain and provide an actual in each platform source set. Expect/actual functions and properties are stable; expect/actual classes are still Beta. The official guidance is to prefer an interface plus a factory function:

    // commonMain
    interface Platform { val name: String }
    expect fun getPlatform(): Platform
    
    // iosMain
    actual fun getPlatform(): Platform = object : Platform {
        override val name = UIDevice.currentDevice.systemName()
    }
    

    Key Libraries

    NeedLibrary
    Async and streamskotlinx.coroutines (suspend, Flow)
    JSONkotlinx.serialization
    HTTPKtor client (OkHttp engine on Android, Darwin on iOS)
    SQL databaseSQLDelight or Room (KMP)
    Key-value storageDataStore (KMP)
    Dependency injectionKoin
    Date and timekotlinx-datetime
    ArchitectureJetpack ViewModel, Lifecycle, Navigation (KMP versions)

    Before adding a dependency, check that it publishes artifacts for every target you use, including iosArm64 and iosSimulatorArm64.

    iOS Integration

    The shared module compiles to an Apple framework. Integrate it directly through a Gradle build phase in Xcode, or distribute it as an XCFramework via Swift Package Manager.

    The Objective-C Bridge

    By default, Kotlin exposes its API to Swift through Objective-C headers. Some Kotlin features translate poorly: sealed classes do not become Swift enums and Flow needs wrappers.

    SKIE (by Touchlab) is a popular Gradle plugin that improves this: sealed classes become exhaustive Swift enums, suspend functions become async, and Flows become AsyncSequence. SKIE support for new Kotlin versions can lag, so check compatibility before upgrading Kotlin.

    Swift Export

    Swift export generates Swift APIs directly from Kotlin, without the Objective-C layer. As of October 2026 the official docs list it as Alpha: it requires direct integration, has limitations around generics, and breaking changes are expected. The Kotlin roadmap lists moving it to Beta. Evaluate it, but keep the default bridge for production for now.

    KMP vs Flutter vs React Native

    Kotlin MultiplatformFlutterReact Native
    LanguageKotlinDartJavaScript / TypeScript
    UINative or Compose MultiplatformOwn rendering engineNative components
    What you shareAnything from one module to everythingUsually the whole appUsually the whole app
    Adopt in an existing native appIncremental, module by modulePossible, less commonPossible, less common
    Android outputRegular Kotlin/JVM codeDart runtime + engineJS runtime + native modules
    iOS team experienceSwift calls a Kotlin frameworkMostly DartMostly JS/TS

    When to Choose KMP

    • You already have a Kotlin Android app and want to reuse its logic on iOS.
    • You want native UI on each platform but one source of truth for business rules.
    • Your team has strong Kotlin skills; Swift developers can still own the iOS UI.
    • You need deep platform integration that a shared UI layer would make harder.

    For a brand-new app from a small team that wants one UI codebase, Flutter or React Native can be simpler.

    Migrating an Existing Android App

    1. Isolate pure Kotlin code. Move models, validation and use cases into a shared module with no Android imports.
    2. Replace Android-only dependencies. Swap Retrofit for Ktor, Gson or Moshi for kotlinx.serialization, java.time for kotlinx-datetime, and move persistence to Room KMP or SQLDelight.
    3. Ship one iOS feature. Use the shared module for a single iOS flow and check build times, binary size and Swift API ergonomics.
    4. Expand gradually. Share repositories and ViewModels next; consider Compose Multiplatform screens later.

    Related Topics

    • Kotlin and Jetpack Compose: Modern Android Development
    • Swift and SwiftUI: Native iOS Development in 2026
    • Flutter: Google's UI Toolkit for Multi-Platform Apps
    • React Native: Cross-Platform Mobile Development

    How did you find this content?

    Share

    ← Previous

    React Native: Cross-Platform Mobile Development

    Next →

    Flutter: Google's UI Toolkit for Multi-Platform Apps

    Related Content

    React Native: Cross-Platform Mobile Development

    A complete guide to React Native for building cross-platform iOS and Android apps with JavaScript and a single shared codebase in 2026.

    Flutter: Google's UI Toolkit for Multi-Platform Apps

    A comprehensive guide to Flutter for building natively compiled apps for mobile, web, and desktop platforms from a single Dart codebase.

    Expo: The React Native Platform for Fast Development

    Complete guide to the Expo platform for building, deploying, and updating React Native apps with managed infrastructure and cloud builds.

    CI/CD for Mobile Apps: Automating Build, Test, and Deploy

    How to set up continuous integration and continuous delivery pipelines for iOS and Android mobile apps using modern tools and practices.

    iOS Code Signing: Certificates, Profiles, and Provisioning

    Understand iOS code signing with certificates, provisioning profiles, App IDs, and entitlements to successfully build and distribute apps.