Most Android developers who are aware of KMP know that you can code “once” then publish to iOS. That is technically true. However, as you progress beyond “POC” to integrating and shipping real production code, the design of the “SDK surface” becomes more complicated and nuanced (or, possibly, problematic).

Many SDK design considerations are common, whether you have a Kotlin module in a single monorepo, are an internal team publishing SDK’s for your org (a very common KMP use case), or a vendor publishing an SDK for public consumption.

Some topics we’ll cover:

An Android consumer can see all the richness of the Kotlin language, but the iOS side gets filtered through Objctive-C into Swift. Much can get lost along the way. You need to understand and plan for this.

Exposing too much to the iOS surface not only makes navigating documentation difficult but can have a significant binary size impact. We’ll discuss what to look for and the techniques to use.

Packaging and publishing of iOS artifacts have a number of things to consider, including format, package manager compatibility, location, etc.

We’ll walk through these topics and more to share what we’ve learned over the last few years of KMP/KMM production development.