← All posts
Multiplatform10 September 20269 min read

What Kotlin Multiplatform actually shares, and what it doesn't

Four apps in, here is the honest split between shared code and the platform work nobody warns you about.

Four apps in, here is the honest split between what Kotlin Multiplatform shares and what you still write twice.

What genuinely shares

  • Domain models and validation
  • Use cases and business rules
  • Networking, serialisation, and the repository layer
  • Room, via the multiplatform artifact

That is the majority of the code in most apps, and it really does compile once.

What does not

Compose Multiplatform renders on iOS, but rendering is not the same as feeling native. Scroll physics, text selection, the share sheet, and every permission dialog still need platform work.

expect class Platform() {
    val name: String
    fun openSettings()
}

The part nobody warns you about

Gradle. A multiplatform build has more moving pieces than an Android one, and when a dependency does not publish an iOS artifact you find out late. Budget a day for the build before you budget anything for features.

Would I do it again

For Mathrid and Memento, yes — both shipped to two stores from one codebase. For an app that lives or dies on platform feel, I would still write it twice.

Written by Sulton UzDev. Get new posts by email →

Sulton UzDev
Senior Android Developer · Kotlin, Compose & KMP · I build the app and its backend
© 2026 Sulton UzDevUzbekistanBlogProjectsAboutSubscribe