What BLE code belongs in Kotlin Multiplatform shared layers?
Put BLE parsing, state machines, and domain models in Kotlin Multiplatform shared layers, but keep platform GATT clients in Android and iOS modules. A thin expect/actual boundary around connect, read, write, and notify should have identical semantics in tests. For example, share sensor payload decoding while letting each platform handle permissions and callback threading.
Published August 2026 · Last technically reviewed August 2026
Related
Need a second opinion on architecture?
We help connected product teams across BLE, Android, backend, and cloud before expensive rework starts.