Member-only story
SKIE: The missing bridge for KMP on iOS
Stop writing wrappers. Let SKIE speak Swift for you.
If you are not Medium Member click this link to read it free.
I’ve always been driven to explore the frontiers of technology, and that curiosity is what pulled me into Kotlin Multiplatform (KMP). But if you’ve also made that journey, you know the ritual all too well. You write elegant business logic, an API client on Ktor, and database operations on SQLDelight. All of this is in the commonMain module. You feel on top of the world :)
And then… you need to connect this module to an iOS project.
And this is where the “pain” begins. The Kotlin code, compiled into a .framework, looks alien to a Swift developer, to put it mildly.
- Your
suspendfunctions turn into functions withcompletionHandlers (hello, callback hell). - Your
Flows require manual collection, cancellation, and wrappers likeCFloworCommonFlow. - Your elegant
sealed classes (forSuccess/Error/Loadingstates) turn into cumbersome classes that you have to check in Swift viaif let...or a non-exhaustiveswitch.
Your iOS teammates look at this, shrug, and say: “It’ll be faster if I just rewrite this in Swift”. At that moment, your “shared logic” stops being shared :)