Much of Touchlab’s focus in the KMP library space is on iOS developer experience and on helping teams build with Kotlin. As the platform matures and adoption grows, updating and improving these tools is critical. For teams looking to get started with KMP, and for developers who have struggled with the exported iOS API, these updates are especially useful.
SKIE (Swift/Kotlin Interface Enhancer) is our flagship KMP and iOS Dev Ex tool. It targets the interface exported from Kotlin to iOS. As most people who have tried KMP know, Kotlin provides excellent interop to Swift, but this is relative to other options. For various technical reasons, much the rich modern language API provided by Kotlin is lost. SKIE augments the API to bring those features back.
SKIE introduces true Coroutines interop, as well as real Swift enums, sealed class support, and default parameters, among other quality-of-life features.
There’s a lot of magic in exactly how this all works, which is best left to the docs. In summary, SKIE is a drop-in enhancement that, among other things, produces real Swift code and true Swift APIs.
See the SKIE is Open Source announcement for all of the details.
SKIE Demo Project
The best way to really understand SKIE’s features is to check out the SKIE Demo Project. It is a very simple application that walks through exactly what each feature does.
Youtube Live SKIE Demo and Q&A
We’ll be doing a live code walkthrough of the demo project and answering questions! Check out the Youtube Live SKIE Demo and Q&A this coming Thursday, September 28th, 10am EST!
Kermit is our multiplatform logging library. We’ve released our first official 2.0 version. We’ve used the library in many projects, and have had lots of feedback. This update reflects a maturing of the API, and adds flexibility for users who would prefer a custom API surface on top of a flexible, configurable base library.
CrashKiOS allows production iOS applications to see symbolicated crash reports from Kotlin code, with Crashlytics or Bugsnag (possibly Sentry again soon). This update is mostly sample and version bumps, but also includes a critical fix for Bugsnag (shout out to Rick for figuring out the hard stuff :)).
Stately’s original purpose was to help with the Kotlin/Native strict memory model. That memory model has been deprecated. However, Stately has some other useful concurrency features, and not everybody has moved off of the strict memory model. Stately 2.0 provides concurrency primitives, concurrent collections, and updated “legacy” modules for teams still working with the strict memory model.
KMMBridge is Gradle tool that allows you publish Kotlin Xcode Framework binaries. This is necessary tooling for many teams integrating Kotlin into production environments. Since its introduction we’ve had a lot of feedback resulting in an overhauled and simplified design. Our first updated release should be launching in the next few days. Sign up for the newsletter🗞, watch the blog, or keep an eye on the #touchlab-tools channel in the Kotlin slack for updates!