Philosophy: Logic vs UI
KMP assumes UI is culture. iOS users want iOS UI. Android users want Android UI. But the API calls and Data models? They are the same. Share them.
How it Works
Kotlin compiles to JVM (Android) and LLVM Native (iOS). You write 'Common' code, which becomes a framework in Xcode and a library in Android Studio.
Sharing Networking & Storage
Use Ktor for networking and SQLDelight/Room for databases. These libraries have platform-specific drivers but a common Kotlin API.
iOS Interop
Swift calls Kotlin code easily. New improvements (SKIE) make modern Swift features (Async/Await, Enums) map perfectly to Kotlin.
Compose Multiplatform
JetBrains now allows sharing UI too via Compose. It renders on iOS like Flutter (drawing on canvas). Optional, but powerful.
Pros vs Flutter/RN
No bridge performance cost. No "uncanny valley" UI. You can adopt it incrementally in existing native apps.
Adoption Strategy
Start with a small, isolated module (e.g., Analytics or a specific feature's data layer). Don't rewrite the whole app at once.