Upgrade to Pro — share decks privately, control downloads, hide ads and more …

10 Reasons to Try Kotlin Multiplatform (updated...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for pahill pahill
January 20, 2026

10 Reasons to Try Kotlin Multiplatform (updated 2025)

Those in the know will surely be aware that the Kotlin ecosystem has been transforming. Thanks to new compilers, libraries, and frameworks, Kotlin has become a multiplatform environment. You can develop compelling apps on the desktop, iOS, Android, and even WebAssembly – all from a single codebase. As such, Kotlin Multiplatform is now in direct competition with technologies like Flutter and React Native.

Is multiplatform development a realistic proposition? What should drive you to choose Kotlin Multiplatform over the alternatives? In this talk, I’ll take a close look at the Kotlin Multiplatform technology and ecosystem and offer ten compelling reasons why you should give it a go!

Avatar for pahill

pahill

January 20, 2026
Tweet

More Decks by pahill

Other Decks in Programming

Transcript

  1. “I want to avoid code duplication by sharing code on

    a variety of platforms using an awesome, modern language.”
  2. “I want to adopt this technology flexibly in my new

    and existing projects with minimal risk.”
  3. Before Kotlin Multiplatform Business / Domain (Entities, Use Cases, Interactors)

    Data / Core (Repositories, HTTP Clients, Cache) UI (Views) Presentation (Presenters, View Models, Controllers) iOS Business / Domain (Entities, Use Cases, Interactors) Data / Core (Repositories, HTTP Clients, Cache) UI (Views) Presentation (Presenters, View Models, Controllers) Android Business / Domain (Entities, Use Cases, Interactors) Data / Core (Repositories, HTTP Clients, Cache) UI (Views) Presentation (Presenters, View Models, Controllers) Desktop
  4. With Kotlin Multiplatform iOS Android Desktop Platform-specific code Platform-specific code

    Platform-specific code Kotlin Multiplatform Anything you want to share
  5. • Server (JVM) • Mobile (Android, iOS) • Desktop (macOS,

    Windows, Linux) • Web (JS, Wasm) What platforms are supported?
  6. “I want to avoid code duplication by sharing code on

    a variety of platforms using an awesome, modern language.”
  7. The problem with native app dev https://kotlinlang.org/lp/multiplatform/case-studies/baidu • Inconsistencies in

    the app experience • High cost of verifying the business logic • High upgrade and maintenance costs #1: Avoid duplication
  8. “The complex and inconsistent business logic of the iOS and

    Android platforms led to increasing maintenance costs for the app.” - Baidu #1: Avoid duplication
  9. Unifying data layer https://kotlinlang.org/lp/multiplatform/case-studies/baidu • Data model • RESTful API

    requests • JSON data parsing • Caching logic #1: Avoid duplication
  10. The results ✓ Consistent experience ✓ Reduced cost of maintenance

    ✓ Reduced cost of testing ✓ Improved productivity https://kotlinlang.org/lp/multiplatform/case-studies/baidu #1: Avoid duplication
  11. What kind of platforms? Server Android iOS Desktop Web Kotlin

    Multiplatform Wasm JS #2: Extensive list of supported platforms
  12. What is Wasm? • WebAssembly (Wasm) is a binary instruction

    format for portable virtual machines • Smaller, faster than JavaScript • Write code in languages like Kotlin / Go / Rust, compile to Wasm • Already supported in most modern browsers, Node.js #2: Extensive list of supported platforms
  13. The results ✓ Type-safe APIs when marshalling objects ✓ Performance

    on Android/iOS improved ◦ 25x faster grading algorithm on iOS compared to JavaScript ✓ Android app size decreased ◦ 18MB down to 10MB ✓ Better developer experience ✓ Different team members keen to try writing shared code #2: Extensive list of supported platforms
  14. Before: Sharing data models Use a language-neutral, platform-neutral language like

    Protocol Buffers ✓ Use with any language - like Go ⛌ Need to learn yet another format ⛌ Need to generate data classes from .proto files on all platforms #2: Extensive list of supported platforms
  15. Sharing data models with Kotlin Multiplatform ✓ Use a familiar

    language with great tooling ✓ Write once, use everywhere ? Does it work with all your languages (server-side: only JVM) #2: Extensive list of supported platforms
  16. 3. Kotlin is a loved & trusted language for everyone

    1. Avoid duplication 2. Extensive list of supported platforms
  17. What do people say about Kotlin? • Concise • Expressive

    • Original • Sound https://www.youtube.com/watch?v=PsaFVLr8t4E (2018) #3. Because Kotlin
  18. Kotlin aims to be pragmatic • Readability over concision •

    Reuse over expressiveness • Interoperability over originality • Safety & tooling over soundness https://www.youtube.com/watch?v=PsaFVLr8t4E (2018) #3. Because Kotlin
  19. How does Kotlin make developers happier? • Makes developers more

    productive • Fewer crashes • Improved safety, correctness #3. Because Kotlin https://kotlinlang.org/docs/android-overview.html (2023) https://medium.com/androiddevelopers/fewer-crashes-and-more-stability-with-kotlin-b606c6a6ac04 (2020)
  20. “I want to adopt this technology flexibly in my new

    and existing projects with minimal risk.”
  21. Before Kotlin Multiplatform Business / Domain (Entities, Use Cases, Interactors)

    Data / Core (Repositories, HTTP Clients, Cache) UI (Views) Presentation (Presenters, View Models, Controllers) iOS Business / Domain (Entities, Use Cases, Interactors) Data / Core (Repositories, HTTP Clients, Cache) UI (Views) Presentation (Presenters, View Models, Controllers) Android Business / Domain (Entities, Use Cases, Interactors) Data / Core (Repositories, HTTP Clients, Cache) UI (Views) Presentation (Presenters, View Models, Controllers) Desktop #4: Choose what to share, what to write natively
  22. Sharing Business Logic Business / Domain (Entities, Use Cases, Interactors)

    Data / Core (Repositories, HTTP Clients, Cache) UI (Views) Presentation (Presenters, View Models, Controllers) iOS Kotlin Multiplatform Shared Module UI (Views) Presentation (Presenters, View Models, Controllers) Android UI (Views) Presentation (Presenters, View Models, Controllers) Desktop #4: Choose what to share, what to write natively
  23. Sharing UI Logic Business / Domain (Entities, Use Cases, Interactors)

    Data / Core (Repositories, HTTP Clients, Cache) UI (Views) iOS Kotlin Multiplatform Shared Module UI (Views) Android UI (Views) Presentation (Presenters, View Models, Controllers) Desktop #4: Choose what to share, what to write natively
  24. With ✨ Compose Multiplatform✨ Business / Domain (Entities, Use Cases,

    Interactors) Data / Core (Repositories, HTTP Clients, Cache) iOS Kotlin Multiplatform Shared Module UI (Views) Android Presentation (Presenters, View Models, Controllers) Desktop Platform-specific code Platform-specific code Platform-specific code #4: Choose what to share, what to write natively
  25. 6. Use in new or existing projects 4. Choose what

    to share, what to write natively 5: Share UI code
  26. Start small • Constants • Migrate common utilities • Write

    or migrate business logic #7: Start sharing gradually
  27. IntelliJ IDEA / Android Studio • Kotlin Multiplatform plugin from

    JetBrains ◦ Support for writing common and platform-specific code ◦ Support for running Android/iOS/desktop apps from the IDE ◦ New project multiplatform wizard ◦ Preflight checks ◦ Basic Swift support ◦ Runs on Windows* / Linux* / MacOS #9: Tooling support
  28. Xcode • De facto standard for iOS development ◦ Development,

    debugging, configuration tools • Mac required! (Apple requirement) #9: Tooling support
  29. Kotlinlang Slack Workspace • 72k+ members • Relevant channels: ◦

    #multiplatform ◦ #compose-ios • Q&A with JetBrains/Google/other knowledgeable experts #10: Supportive community
  30. Google Google Touchlab TouchlabHQ Philipp Lackner @plcoding John OʼReilly @joreilly

    Sebastian Aigner @sebi_io Annyce Davis @brwngrldev Tadeas Kriz TadeasKriz #10: Supportive community Márton Braun @zsmb13
  31. Why Kotlin Multiplatform • Kotlin: most awesome development language ;)

    • Easily write things natively • Excellent performance: code is compiled to native
  32. Previously… • Kotlin Multiplatform ecosystem, tooling still maturing • Not

    as many learning resources available, but rapidly growing
  33. But now… • Kotlin Multiplatform ecosystem, tooling still maturing •

    Not as many learning resources available, but rapidly growing • https://klibs.io/ and KMP plugin in IntelliJ and Android Studio • Many learning resources available
  34. How to decide • Existing team experience • What kind

    of app you’ll be building • Don’t make Frankensteins!
  35. Work out an experiment plan • Hypothesis: what do we

    think will happen? • Method: how will we go about our experiment? • Conclusion: how will we analyse our results?
  36. Work out an experiment plan • Team roles - who

    will contribute actively? • Workflow - how do you make, distribute changes? • Coding standards - how to write nice APIs • CI/CD - testing and rolling out • Monitoring production
  37. Gain trust, expand the scope • Retrospective - did this

    really work for us? • Yes - do we want to expand the scope? • No - why?
  38. 10 Reasons - Why you should adopt KMP 1. Avoid

    duplication 2. Extensive list of supported platforms 3. Kotlin is a loved & trusted language for everyone
  39. 10 Reasons - You can adopt it flexibly 4. Choose

    what to share, what to write natively 5. Share UI code with Compose Multiplatform 6. Use in new or existing projects 7. Start sharing gradually
  40. 8. Already used by big companies 9. Tooling from JetBrains

    10. Supportive community 10 Reasons - You are not alone