What KMP Shares

What Kotlin Multiplatform Shares and What It Does Not

A KMP module has one commonMain source set, compiled for every target, plus one source set per target (androidMain, iosMain, jvmMain, jsMain, wasmJsMain) for code that needs that platform's APIs. Common code sees only the Kotlin standard library and multiplatform libraries: no java.io.File, no android.content.Context, no String.format(). The line between the two decides what you can share:

What BookNest could share through Kotlin Multiplatform 25,990
Layer Shared in commonMain with Stays per platform
Models, rules, validation Plain Kotlin Nothing
Networking, JSON Ktor 274,728 client (Ktor Client), kotlinx.serialization 5,947 The HTTP engine (OkHttp 47,077 , Darwin, fetch)
Local database Room 3 234 (Room 3.0), SQLDelight 6,887 The driver and file location
Preferences, images DataStore 234 , Coil 3 11,909 (Images with Coil and Glide) Nothing
Dependency injection Koin (Koin) Hilt is Android-only
UI Compose Multiplatform 25,990 , if you choose SwiftUI or Jetpack Compose 234 otherwise
Camera, location, notifications Thin interfaces only CameraX 234 , Core Location, and so on

JetBrains rates the core technology Stable for Android, iOS, desktop JVM, server and Kotlin/JS, and Beta for web through Kotlin/Wasm; Compose Multiplatform is Stable on Android, iOS and desktop and Beta on the web. No bridge or interpreter runs at run time. On Android, shared code is ordinary Kotlin in the APK; on iOS it is a native framework that Swift calls through an Objective-C header (a direct Swift export is in Alpha). Many teams share only the data layer and keep native UIs; others share UI too.