KMP v roce 2026: Architektura, založení a ekosystém multiplatformy Kotlin
Již léta je Kotlin Multiplatform (KMP) označován jako „zajímavý, ale ještě není připraven výroba“. V roce 2026 se tento příběh definitivně změnil: KMP dosáhl zralosti podnik se stabilním iOS API, Compose Multiplatform stabilní na všech hlavních platformách, e Rychlý export což konečně eliminuje potřebu přemostění Objective-C interoperabilita s nativním kódem Swift.
Tato příručka poskytuje komplexní přehled o ekosystému KMP v roce 2026: co se od té doby změnilo k předchozím letům, jak je to ve srovnání s Flutter a React Native, jaká je správná architektura pro multiplatformní projekt a jak vyhodnotit, zda je KMP správnou volbou pro váš případ použití.
Co se naučíte
- Architektura KMP: sdílené moduly, zdrojová sada a kód specifický pro platformu
- KMP vs Flutter vs React Native: technické srovnání aktualizováno na rok 2026
- Rychlý export a nativní spolupráce s iOS
- Compose Multiplatform: Aktuální stav a omezení
- Ekosystém knihoven KMP 2026: Ktor, SQLDelight, Koin
- Kdy zvolit KMP a kdy ne
Kvalitní skok v letech 2025-2026
KMP 1.0 již byl stabilní pro sdílení obchodní logiky, ale trpěl důležitými omezeními: Integrace iOS vyžadovala automaticky generované hlavičky Objective-C (ne příliš idiomatické pro Swift vývojáři) a Compose Multiplatform měly stále mnoho API v alfa verzi na iOS a desktopu.
Hlavní změny, ke kterým došlo v letech 2024 až 2026:
- Swift Export (stabilní v KMP 1.9+): Vygenerujte nativní rozhraní Swift API s pojmenováním idiomatické, protokoly, výchozí argumenty a žádný zprostředkující Objective-C. Vývojáři iOS nyní spotřebovává kód Kotlin, jako by to byl čistý Swift.
- Compose Multiplatform 1.7+ (stabilní na iOS): Plně sdílené uživatelské rozhraní v Kotlin/Compose na Android, iOS, Desktop (JVM) a Web (Wasm). Vykreslovací moduly specifické pro platformu jsou nyní vyspělé a výkon je přijatelný i pro složité aplikace.
- Systém sestavení Amper (beta): zjednodušená alternativa ke Gradle pro projekty KMP, s nastavením YAML namísto složitého Kotlin DSL.
- Vylepšené nástroje: Android Studio Ladybug a novější mají podporu KMP světové třídy s refaktorováním napříč platformami, laděním na vestavěném simulátoru iOS a profilováním.
Architektura projektu KMP
Základní architektura KMP je založena na oddělení sdíleného kódu (commonMain) a kód specifický pro platformu. Nejde o to „napsat všechno jednou“, jak sliboval React Native, ale sdílet logiku, která dává smysl sdílet a delegovat na platformu to, co je bytostně nativní.
// Struttura tipica di un progetto KMP nel 2026
shared/
├── src/
│ ├── commonMain/kotlin/
│ │ ├── data/
│ │ │ ├── repository/ # Repository patterns condivisi
│ │ │ ├── network/ # Ktor client (HTTP multiplatform)
│ │ │ └── local/ # SQLDelight (DB multiplatform)
│ │ ├── domain/
│ │ │ ├── model/ # Data classes pure Kotlin
│ │ │ ├── usecase/ # Logica business
│ │ │ └── repository/ # Interfacce repository
│ │ └── presentation/ # ViewModels (Compose o altri)
│ │
│ ├── androidMain/kotlin/
│ │ └── actual/ # Implementazioni Android-specific
│ │ ├── DatabaseDriver.kt
│ │ └── HttpEngine.kt
│ │
│ ├── iosMain/kotlin/
│ │ └── actual/ # Implementazioni iOS-specific
│ │ ├── DatabaseDriver.kt
│ │ └── HttpEngine.kt
│ │
│ └── desktopMain/kotlin/ # (opzionale, per desktop JVM)
│
androidApp/ # App Android con UI nativa
iosApp/ # App iOS con UI nativa (Swift/SwiftUI)
desktopApp/ # App desktop (opzionale)
composeApp/ # (alternativa: UI condivisa con Compose MP)
Hlavní princip: sdílet co nejvíce, v případě potřeby používat nativní API. Zralá aplikace KMP obvykle sdílí:
- 90–95 % obchodní logiky (vrstva domény)
- 80–85 % datové vrstvy (síť, perzistence, mezipaměť)
- 40–80 % prezentační vrstvy (závisí na tom, zda se používá Compose Multiplatform)
- 0–20 % vrstvy uživatelského rozhraní (pokud používáte nativní uživatelské rozhraní specifické pro platformu)
KMP vs Flutter vs React Native: Srovnání roku 2026
Otázka "který multiplatformní rámec použít?" má v roce 2026 jiné odpovědi než v roce 2022. Zde je upřímné srovnání:
// Matrice decisionale semplificata
| KMP | Flutter | React Native
--------------------|--------------|-------------|-------------
Linguaggio | Kotlin | Dart | TypeScript/JS
UI Engine | Nativa o CMP | Custom (Skia)| Nativa (bridge)
Performance | Ottima | Buona | Buona
Look nativo | Perfetto | Non nativo | Parziale
Team Android-first | Eccellente | Buono | Buono
Condivisione codice | ~70-80% | ~95% | ~80-90%
Ecosistema librerie | Crescente | Maturo | Maturo
Enterprise adoption | Alta (2026) | Alta | Diminuzione
Klíčový rozdíl: Flutter ke kreslení používá vlastní renderovací engine (Impeller). celého uživatelského rozhraní, což zajišťuje vizuální konzistenci napříč platformami, ale na úkor "nativního" vzhledu platforma. KMP s nativním uživatelským rozhraním vypadá přesně jako nativní aplikace, protože USA komponenty nativní pro platformu.
Kdy zvolit KMP
KMP je optimální volbou, když:
- Tým má silné odborné znalosti Android/Kotlin a chce tuto logiku přenést i do iOS
- „Nativní“ aspekt uživatelského rozhraní je nesmlouvavý požadavek (bankovní aplikace, podniky)
- Chcete sdílet obchodní logiku a zároveň si zachovat úplnou kontrolu nad uživatelským rozhraním specifickým pro platformu
- Aplikace má složitou obchodní logiku (nejlépe izolovat od problémů s uživatelským rozhraním)
- Přidáváte iOS do existující aplikace pro Android, aniž byste vše přepisovali
Flutter nebo React Native mohou být vhodnější, když:
- Tým má dovednosti pro web/React a chce je znovu použít
- Chcete maximalizovat sdílení uživatelského rozhraní (nejen logiku)
- Čas uvedení na trh je kritický a tým Kotlin nezná
Rychlý export: interoperabilita iOS v roce 2026
Před Swift Exportem byl sdílený kód Kotlin vystaven iOS prostřednictvím záhlaví Automaticky generovaný Objective-C. Výsledkem bylo API takto:
// PRIMA (Objective-C headers generati da KMP):
// Swift deve usare classi con nomi generati automaticamente
let viewModel = SharedUserViewModel()
let users = viewModel.users as! [SharedUser]
viewModel.loadUsers(completionHandler: { users, error in
// Gestione callback non-idiomatica
})
// DOPO (Swift Export in KMP 1.9+):
// Swift idiomatico, direttamente da codice Kotlin
let viewModel = UserViewModel()
let users: [User] = viewModel.users
await viewModel.loadUsers() // async/await nativo Swift
Swift Export automaticky překládá Kotlin coroutines do async/await rychlý,
datové třídy ve struktuře Swift (s automatickým vyrovnáním), zapečetěné třídy ve výčtech Swift,
a toky v asyncSequence. Výsledkem je, že vývojáři iOS využívají Kotlin API
jako by to bylo napsáno ve Swiftu.
Compose Multiplatform: Aktuální stav
Compose Multiplatform (CMP) vám umožňuje sdílet celé uživatelské rozhraní napsané v Compose Kotlin na Android, iOS, Desktop JVM a Web (přes Kotlin/Wasm). V roce 2026 byla zavedena na iOS a výrazně lepší ve srovnání s původními beta verzemi:
// commonMain: UI condivisa con Compose Multiplatform
@Composable
fun UserListScreen(
users: List<User>,
onUserClick: (User) -> Unit
) {
LazyColumn {
items(users) { user ->
UserCard(user = user, onClick = { onUserClick(user) })
}
}
}
@Composable
fun UserCard(user: User, onClick: () -> Unit) {
Card(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 8.dp)
.clickable(onClick = onClick)
) {
Column(modifier = Modifier.padding(16.dp)) {
Text(user.name, style = MaterialTheme.typography.titleMedium)
Text(user.email, style = MaterialTheme.typography.bodySmall)
}
}
}
The Compose UI is identical on Android and iOS. Rendering uses Skiko (Skia's Kotlin binding) na iOS místo nativních komponent UIKit, což znamená, že aplikace má konzistentní vzhled multiplatformní, ale ne identické s nativní aplikací SwiftUI.
Ekosystém knihoven KMP v roce 2026
Ekosystém vyspělých knihoven je nezbytný pro produktivitu. V roce 2026 jsou to tyto Základní knihovny pro projekt KMP:
// build.gradle.kts (shared module)
kotlin {
sourceSets {
commonMain.dependencies {
// Network: client HTTP multiplatform
implementation("io.ktor:ktor-client-core:2.3.10")
implementation("io.ktor:ktor-client-content-negotiation:2.3.10")
implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.10")
// Database: SQL multiplatform
implementation("app.cash.sqldelight:runtime:2.0.2")
// Serialization
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.0")
// Coroutines multiplatform
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
// Dependency Injection
implementation("io.insert-koin:koin-core:3.5.6")
// DateTime multiplatform
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.0")
// Logging multiplatform
implementation("co.touchlab:kermit:2.0.3")
}
androidMain.dependencies {
implementation("io.ktor:ktor-client-okhttp:2.3.10")
implementation("app.cash.sqldelight:android-driver:2.0.2")
}
iosMain.dependencies {
implementation("io.ktor:ktor-client-darwin:2.3.10")
implementation("app.cash.sqldelight:native-driver:2.0.2")
}
}
}
Úplný příklad: Úložiště vzorů v KMP
Podívejme se, jak implementovat jednoduché úložiště pro správu uživatelů v KMP, ukazující oddělení mezi běžným kódem a kódem specifickým pro platformu:
// commonMain: Interfaccia repository e modello
data class User(
val id: Long,
val name: String,
val email: String,
val createdAt: Instant
)
interface UserRepository {
suspend fun getUsers(): List<User>
suspend fun getUserById(id: Long): User?
suspend fun saveUser(user: User): User
}
// commonMain: Implementazione con Ktor + SQLDelight
class UserRepositoryImpl(
private val httpClient: HttpClient,
private val database: AppDatabase
) : UserRepository {
override suspend fun getUsers(): List<User> {
return try {
// Prima controlla il database locale
val cached = database.userQueries.selectAll().executeAsList()
if (cached.isNotEmpty()) {
cached.map { it.toDomain() }
} else {
// Poi scarica dalla rete e salva
val remote = httpClient.get("$BASE_URL/users").body<List<UserDto>>()
remote.forEach { database.userQueries.insert(it.toEntity()) }
remote.map { it.toDomain() }
}
} catch (e: Exception) {
// Fallback al cache anche se la rete fallisce
database.userQueries.selectAll().executeAsList().map { it.toDomain() }
}
}
}
Statistika přijetí podniku (2026)
Podle údajů o ekosystému Kotlin aktualizovaných do 1. čtvrtletí 2026:
- Adopce KMP ve společnostech Fortune 500: 18 % (v roce 2023 to bylo 7 %) většina ve fintech, e-commerce a B2B podnikových aplikacích.
- Hlavní případy použití: sdílení obchodní logiky mezi Androidem a iOS (82 %), Synchronizace JVM/Android backend (45 %), desktopové aplikace (12 %).
- Významné společnosti: Cash App (Block), VMware, Philips, Touchlab a mnoho malých a středních podniků Evropské technologické společnosti používají KMP ve výrobě.
- Čas na ocenění: týmy hlásí 30-40% zkrácení času implementace funkcí po prvních 3 měsících přijetí.
Úvahy o přijetí do týmu
Před přijetím KMP zvažte tyto praktické faktory:
- Týmové dovednosti: KMP vyžaduje vývojáře, kteří znají Kotlin. V ideálním případě tým Android přináší KMP do iOS, ne naopak.
- Křivka učení Gradle: sestavení systému KMP s Kotlin Multiplatform Gradle Plugin má strmou křivku učení. Investujte čas do porozumění zdrojové sady před spuštěním.
- Kompatibilita knihovny: ne všechny knihovny Java/Android jsou kompatibilní s Kotlin/Native (iOS). Před přidáním závislosti vždy zkontrolujte kompatibilitu KMP.
- Doba stavby: Projekty KMP mají delší dobu sestavení než aplikace jednoplatformní, zejména pro iOS (Kotlin/Native kompilace). Dobře nakonfigurovaný CI/CD s ukládáním do mezipaměti a nezbytné.
Závěry a další kroky
Kotlin Multiplatform v roce 2026 je vyspělá, stabilní platforma s ekosystémem knihoven podniková kvalita. Není to správné řešení pro každého – pokud je váš tým React-first, React Native nebo Expo dávají větší smysl – ale pro týmy se systémem Android, které chtějí přenést kód na iOS se idiomaticky stal KMP běžnou profesionální volbou.
Následující článek ukazuje jak Nastavte svůj první projekt KMP od začátku: struktura zdrojové sady, katalog verzí Gradle, první očekávané/skutečné funkce a integrace s Android Studio pro produktivní vývojový pracovní postup.
Série: Kotlin Multiplatform — Jedna kódová základna, všechny platformy
- Článek 1 (tento): KMP v roce 2026 — Architektura, Establishment a Ecosystem
- Článek 2: Nakonfigurujte svůj první projekt KMP – Android, iOS a Desktop
- Článek 3: Architektura sdílených modulů – očekávaná/aktuální, rozhraní a DI
- Článek 4: Multiplatformní síť s klientem Ktor
- Článek 5: Multiplatformní vytrvalost s SQLDelight
- Článek 6: Compose Multiplatform – Sdílené uživatelské rozhraní pro Android a iOS
- Článek 7: State Management KMP — ViewModel a Kotlin Flows
- Článek 8: Testování KMP — Unit Test, Integration Test a UI Test
- Článek 9: Rychlý export – Idiomatic Interop s iOS
- Článek 10: CI/CD pro projekty KMP — GitHub Actions a Fastlane
- Článek 11: Případová studie — Fintech App s KMP ve výrobě







