Lessons learned after building apps with Kotlin Multiplatform
Abstract:
With Kotlin Multiplatform and Compose Multiplatform, you can share code and UI across multiple platforms, from Android and iOS to macOS, Windows, and Linux. But building apps on all these platforms brings unexpected challenges you don’t anticipate at the beginning.In this talk, I’ll share what I’ve learned (often the hard way) while developing apps with Kotlin Multiplatform. You’ll hear why sharing less code can sometimes save more time, how dealing with the iOS Keychain from background services turned into a debugging odyssey, and why placing your database in the wrong Windows folder can lead to silent data loss during app updates. We’ll also cover sandboxing on macOS, the trade-offs between using interfaces and `expect/actual`, and the complexities of distributing apps across platforms.
Whether you’re just getting started with Kotlin Multiplatform or already deep into it, this talk might just save you from a few future debugging headaches..
Slides:
Resources:
- ReaderFlow
https://readerflow.app - FeedFlow
https://feedflow.dev - Airalo
https://airalo.com - X Post: Don’t keep binaries in a repo
https://x.com/kpgalligan/status/1723364386046173493?s=20 - Apple Developer Documentation: Distributing Binary Frameworks as Swift Packages
https://developer.apple.com/documentation/xcode/distributing-binary-frameworks-as-swift-packages - KMMBridge Documentation
https://touchlab.co/kmmbridge/ - Why Kotlin Multiplatform Teams Should Share Source, not Binaries
https://touchlab.co/kmp-teams-use-source - Gradle Documentation: Composite Builds
https://docs.gradle.org/current/userguide/composite_builds.html - SKIE
https://skie.touchlab.co/ - Kotlin Documentation: Native Swift Export
https://kotlinlang.org/docs/native-swift-export.html - CrashKiOS Documentation
https://crashkios.touchlab.co/ - Apple Developer Documentation: Configuring App Groups
https://developer.apple.com/documentation/xcode/configuring-app-groups - touchlab/SQLiter GitHub Repository
https://github.com/touchlab/SQLiter/ - Apple Developer Documentation: Using Background Tasks to Update Your App
https://developer.apple.com/documentation/uikit/using-background-tasks-to-update-your-app - Multiplarform Settings
https://github.com/russhwolf/multiplatform-settings/ - Local vs LocalLow vs Roaming Folders in Windows Explained
https://windowsreport.com/local-locallow-roaming-difference/