Get a superior iOS developer experience in KMP

Use SKIE, a Swift-friendly API Generator for Kotlin Multiplatform

When Swift calls Kotlin through Objective-C, critical Kotlin language features are dropped. SKIE bridges modern types and coroutines in the best way: with real Swift.

Critical features for the KMP iOS developer experience

SKIE is packed with features that make Kotlin Multiplatform frameworks feel like native Swift. We carefully designed each feature to be intuitive, while staying consistent throughout many use-cases.

Direct Linking

The generated Swift is compiled and linked directly to the Xcode Framework. No extra deployment config required.

Flows

Use any Flow as an AsyncSequence from Swift, keeping the element type intact. Safe and smart.

Suspend Interop

Call Kotlin suspend functions the same way as Swift's async functions, with cancelation and background thread support.

Transparent Enums

Kotlin enums are transparently converted to proper Swift enums. This allows for exhaustive operations on the Swift side.

Sealed Hierarchies

Sealed class and sealed interface handling allows you to exhaustively switch on sealed Kotlin hierarchies from Swift.

Default Arguments

Overloaded methods are added to the exposed Swift interface to allow calling methods without specifying each argument.

Kotlin to Swift Code Transformations

SKIE improves interoperability between Kotlin and Swift by generating Swift wrappers for Objective-C headers created by the Kotlin compiler. It recreates features supported by both languages that are lost in the translation from Kotlin to Objective-C to Swift.

Flow Support

Kotlin Flows are automatically and transparently converted to Swift AsyncSequences.

  • Proper compile-time checking
  • Swift-native ergonomics
  • Flow, StateFlow and MutableStateFlow
Kotlin
No changes on Kotlin side

Suspend Interop

Kotlin suspend functions are converted to Swift's native async functions.

  • Cancellation support
  • Callable from any thread
  • No wrapping necessary
Kotlin
A regular suspend function

Sealed class wrapped as an enum

Sealed classes are unchanged, but an associated enum is generated, as well as a wrapper function to use in switch statements.

  • Exhaustively checked sealed classes
  • Similar to enums with associated values
Kotlin
Sealed classes are ever-present

Better APIs are valuable for everybody

androidAndroid Devs
appleiOS Devs
decision processEngineering Managers

Android Developers

No API Anxiety

Kotlin Multiplatform enables Android developers to write code that can be shared with their iOS colleagues. However, doing so results in a loss of many Kotlin language features even though both Kotlin and Swift support them. That makes it difficult for Android developers to judge what their code will look like from Swift.


With SKIE, Kotlin developers don’t have to worry about these complexities of cross-platform development. Their Kotlin code will retain its modern and expressive features and will seamlessly integrate with Swift. That way, developers can focus on more meaningful and engaging tasks.

Risk Mitigation

Adopting Kotlin Multiplatform can be challenging and introducing a new tool to your team might be daunting. Low entry barrier has been part of SKIE from the beginning.

Comprehensive Testing

We test SKIE against a thousand public KMP libraries along with hundreds of hand-written tests.

Immense Flexibility

No two projects are the same. SKIE has granular configurability, letting your team decide what to enhance.

Made by Touchlab

Touchlab has years of experience with Kotlin Multiplatform in production. We built SKIE to solve our problems, let it solve yours too.