Kotlin Multiplatform Mobile — wat is het, kernbegrippen en architectuur van KMM

Auteur: IT Sectr Gepubliceerd: 2026-05-02 Leestijd: 9 min

Kotlin Multiplatform Mobile (KMM) — is een technologie van JetBrains voor het gebruik van gedeelde code in Kotlin in apps voor iOS en Android met behoud van native UI's op elk platform. In tegenstelling tot hybride frameworks gebruikt KMM geen WebView en rendert het de interface niet via abstracties — bedrijfslogica wordt eenmalig geschreven en de gebruikersinterface blijft volledig native. Volgens gegevens van JetBrains, 2025 wordt KMM gebruikt door meer dan 40 duizend teams wereldwijd. expect/actual — het belangrijkste Kotlin-mechanisme waarmee platformafhankelijke API's in gedeelde code kunnen worden gedeclareerd.

Belangrijkste punten

  • KMM — JetBrains-technologie voor het delen van bedrijfslogica tussen iOS en Android in Kotlin
  • expect/actual — mechanisme voor het declareren van platform-API's in een gedeelde module met implementatie voor elk besturingssysteem
  • Native UI — de interface wordt apart geschreven in SwiftUI en Jetpack Compose, zonder WebView
  • Shared-module — bevat datamodellen, netwerkverzoeken, validatie en bedrijfsregels
  • Ktor en Kotlinx — JetBrains-bibliotheken voor netwerkcommunicatie en serialisatie in gedeelde code

Wat is Kotlin Multiplatform Mobile?

Kotlin Multiplatform Mobile (KMM) — is een technologie waarmee je de gemeenschappelijke bedrijfslogica van een mobiele app in Kotlin kunt schrijven en deze op iOS en Android kunt gebruiken zonder code te dupliceren. In tegenstelling tot Ionic of Cordova rendert KMM de interface niet in WebView — de UI blijft volledig native en wordt geschreven in SwiftUI (iOS) en Jetpack Compose (Android).

KMM werd in 2019 door JetBrains aangekondigd als onderdeel van de Kotlin Multiplatform-strategie. Het belangrijkste verschil met andere cross-platform oplossingen — het framework probeert niet de UI te uniformeren, maar richt zich op het delen van precies die code die echt hetzelfde is voor beide platforms: netwerkverzoeken, datamodellen, formuliervalidatie, bedrijfsregels en werken met databases.

Volgens de JetBrains Developer Survey (2025) wordt KMM gebruikt door 14% van de mobiele ontwikkelaars en dit cijfer groeit met 5% per jaar. De technologie wordt gekozen door bedrijven met hoge eisen aan prestaties en native gebruikerservaring, voor wie hybride oplossingen onacceptabel zijn.

KMM-architectuur: shared-module en platformimplementaties

De KMM-architectuur bestaat uit drie modules: shared (gedeelde code in Kotlin), iosApp (native iOS-app in Swift) en androidApp (native Android-app in Kotlin). De shared-module wordt gecompileerd naar JAR voor Android en naar een universeel framework (Apple Framework) voor iOS.

Shared-module: wat gaat naar de gedeelde code

In de shared-module komen alle platformonafhankelijke lagen: de netwerklaag op Ktor Client, datamodellen met serialisatie via kotlinx.serialization, repositories voor gegevensbeheer, formuliervalidatie en bedrijfsregels (bijvoorbeeld het berekenen van verzendkosten of het controleren van toegangsrechten).

De shared-module gebruikt de Gradle Multiplatform Plugin en bevat drie bronsets: commonMain (gedeelde code), androidMain (Android-specifieke implementaties) en iosMain (iOS-specifieke implementaties). De Kotlin/Native-compiler zet de gedeelde code om in een native bibliotheek voor iOS, die via XCFramework aan het Swift-project wordt gekoppeld.

Platformmodules

De Android-module — is een standaard Android-app in Kotlin met Jetpack Compose of ViewBinding. De shared-module wordt gekoppeld als een gewone Gradle-afhankelijkheid en alle klassen uit commonMain zijn direct beschikbaar.

De iOS-module — is een Xcode-project in Swift of Objective-C. De shared-module wordt gekoppeld via CocoaPods, Swift Package Manager of XCFramework. Kotlin/Native genereert Objective-C-headers voor het exporteren van Kotlin-types, waardoor ze toegankelijk zijn vanuit Swift.

Het expect/actual-mechanisme in KMM

expect/actual — is een Kotlin Multiplatform-mechanisme waarmee je een API in gedeelde code kunt declareren (expect declaration) en de implementatie ervan apart voor elk platform kunt leveren (actual declaration). De compiler controleert of actual bestaat voor elk doelplatform.

Typische gebruiksscenario's van expect/actual: het ophalen van de huidige tijd met tijdzone, werken met SharedPreferences (Android) / UserDefaults (iOS), cryptografische functies en het genereren van UUID. Op elk platform wordt de eigen systeem-API gebruikt.

Zonder expect/actual zou het onmogelijk zijn om uniforme bedrijfslogica-code te hebben, omdat de API's voor het werken met het bestandssysteem, netwerk en opslag verschillen tussen iOS en Android op het niveau van systeemoproepen. Het mechanisme garandeert dat de ontwikkelaar niet vergeet het platformdeel te implementeren.

Voor platformoproepen zoals werken met de camera of biometrie biedt KMM de expect/actual-bibliotheek in combinatie met plugins vergelijkbaar met Cordova, maar in Kotlin/Native. JetBrains heeft ook de bibliotheek kotlinx-datetime uitgebracht die het werken met datums abstraheert.

Codevoorbeelden in KMM

Laten we de basisstructuur van een KMM-project bekijken met de declaratie van een expect-functie voor het genereren van UUID en de implementatie ervan voor iOS en Android.

kotlin
// commonMain — gedeelde declaratie
expect fun generateUUID(): String

// androidMain — implementatie voor Android
actual fun generateUUID(): String {
    return java.util.UUID.randomUUID().toString()
}

// iosMain — implementatie voor iOS
actual fun generateUUID(): String {
    return platform.Foundation.NSUUID().UUIDString
}

In de gedeelde code wordt expect fun generateUUID() gedeclareerd. Voor Android wordt java.util.UUID gebruikt, voor iOS — NSUUID uit het Foundation-framework. In de rest van de code van de shared-module wordt deze functie aangeroepen zonder rekening te houden met het platform.

Voorbeeld van een netwerkverzoek met Ktor Client in gedeelde code:

kotlin
import io.ktor.client.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import kotlinx.serialization.*
import kotlinx.serialization.json.*

@Serializable
data class User(
    val id: Int,
    val name: String
)

class UserRepository {
    private val client = HttpClient()

    suspend fun getUser(id: Int): User {
        val response: HttpStatement =
            client.get("https://api.example.com/users/$id")
        return Json.decodeFromString(response.bodyAsText())
    }
}

Deze code werkt op beide platforms zonder wijzigingen. Ktor Client gebruikt automatisch OkHttp op Android en NSURLSession op iOS, zonder extra configuratie. JSON-serialisatie via kotlinx.serialization is ook cross-platform.

Vergelijking van KMM met Flutter en React Native

KMM neemt een unieke positie in tussen cross-platform technologieën, omdat het niet probeert de native UI te vervangen in tegenstelling tot Flutter en React Native. KMM — is een oplossing voor het delen van logica, niet voor het uniformeren van de interface.

CriteriumKMMFlutterReact Native
UINative (SwiftUI / Jetpack Compose)Eigen engine (Skia)JavaScript → native componenten
TaalKotlin (shared) + Swift / Kotlin (UI)DartJavaScript / TypeScript
PrestatiesMaximaal (native UI)Hoog (eigen rendering)Gemiddeld (JS-Native brug)
Code delenBedrijfslogica (40–70%)UI + logica (80–95%)UI + logica (70–90%)
InstapdrempelHoog (twee talen)Gemiddeld (één taal)Laag (webontwikkelaars)

Het belangrijkste voordeel van KMM — volledige controle over de UI. Als de app er native uit moet zien en zich native moet gedragen op elk platform (bijvoorbeeld het gebruik van iOS TabBar en Android BottomNavigation met platformanimaties), is KMM de enige cross-platform oplossing die dit biedt zonder workarounds.

Nadeel — het team moet tegelijkertijd Kotlin, Swift, Jetpack Compose en SwiftUI beheersen, wat het aannemen bemoeilijkt. Flutter en React Native vereisen kennis van één taal en één framework.

Voordelen en uitdagingen van KMM-implementatie

Kotlin Multiplatform Mobile — is een krachtige technologie, maar de implementatie ervan vereist een evenwichtige aanpak. Laten we de belangrijkste voordelen en typische uitdagingen bekijken waarmee teams worden geconfronteerd.

Voordelen van KMM

Het eerste en belangrijkste voordeel — vermindering van codeduplicatie. Volgens JetBrains Case Studies (2024) verminderen teams die KMM hebben geïmplementeerd de hoeveelheid gedupliceerde code met 60–80% voor de netwerklaag en met 40–50% voor de bedrijfslogica als geheel. Dit heeft direct invloed op de ontwikkelsnelheid en het aantal bugs.

Het tweede voordeel — prestaties op het niveau van native apps. In tegenstelling tot hybride frameworks voegt KMM geen abstractielagen toe tussen de UI en het systeem. De code van de bedrijfslogica wordt net zo snel uitgevoerd als wanneer deze apart in Swift of Kotlin voor elk platform was geschreven.

Uitdagingen bij implementatie

De grootste uitdaging — de kwalificatie van het team. Ontwikkelaars moeten Kotlin kennen (voor de shared-module), evenals Swift en Jetpack Compose (voor de UI). Het vinden van een universele specialist is moeilijk, daarom wordt meestal een team gevormd van Android- en iOS-ontwikkelaars die gezamenlijk de shared-module beheren.

De tweede uitdaging — de tooling. KMM vereist configuratie van Gradle, CocoaPods of Swift Package Manager, evenals integratie met Xcode. In vroege projectfasen komen problemen met build-configuratie vaak voor, vooral bij het werken met C-bibliotheken.

De derde uitdaging — debuggen. Wanneer een bug optreedt op het snijvlak van Kotlin/Native en Swift, is het moeilijker om de oorzaak te achterhalen dan in een monolithische app. JetBrains verbetert voortdurend de debugtools, maar in de praktijk moeten teams tot 20% van hun tijd besteden aan infrastructurele taken.

Veelgestelde vragen

Kan KMM worden gebruikt voor iOS zonder Android?

Ja, KMM ondersteunt iOS als enige doelplatform. De shared-module wordt gecompileerd naar een iOS-framework dat via XCFramework aan het Swift-project wordt gekoppeld. De Android-module hoeft niet te worden aangemaakt. Dit is nuttig voor teams die Kotlin willen gebruiken voor de bedrijfslogica van een iOS-app.

Wat is het verschil tussen KMM en Kotlin/Native?

Kotlin/Native — is een compiler die Kotlin-code omzet in een native binary zonder virtuele machine. KMM gebruikt Kotlin/Native voor het compileren van de shared-module voor iOS. Voor Android gebruikt KMM de standaard Kotlin/JVM-compiler. Kotlin/Native — is de technologische basis van KMM.

Hoe werkt KMM met databases?

Voor het werken met lokale databases in KMM wordt SQLDelight gebruikt — een cross-platform bibliotheek die Kotlin-code genereert uit SQL-query's. Op Android werkt het via de Android SQLite API, op iOS via Native SQLite (CFNetwork). Alternatief — Realm Kotlin SDK van MongoDB.

Ondersteunt KMM UI-componenten?

KMM bevat standaard geen UI-componenten — de UI wordt apart geschreven in SwiftUI en Jetpack Compose. Er bestaan echter bibliotheken zoals Compose Multiplatform (van JetBrains) waarmee UI in Kotlin direct op iOS en Android kan worden gerenderd zonder native frameworks.

Welke bedrijven gebruiken KMM in productie?

KMM wordt gebruikt door grote bedrijven: Netflix (delen van aanbevelingslogica), McDonald's (mobiele app), VMWare (bedrijfsapps) en Leroy Merlin (app voor bouwmaterialen). De lijst groeit omdat JetBrains actief investeert in de ontwikkeling van het ecosysteem.

Samenvatting

  • KMM — JetBrains-technologie voor het delen van bedrijfslogica tussen iOS en Android in Kotlin met native UI
  • Architectuur omvat een shared-module en platformimplementaties via expect/actual
  • Shared-module bevat netwerkcommunicatie (Ktor), modellen (kotlinx.serialization) en bedrijfsregels
  • expect/actual — belangrijkste mechanisme voor platformafhankelijke implementaties in gedeelde code
  • Prestaties op het niveau van native apps, omdat de UI geen abstracties gebruikt
  • Uitdagingen omvatten hoge eisen aan teamkwalificatie en configuratie van de build-infrastructuur
  • Keuze voor KMM is gerechtvaardigd voor projecten waar native UX en een hoog percentage logica-deling cruciaal zijn

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook