App size best practices
Many people are interested in how big of an impact shared KMP code can have on their iOS app's size. This will depend on what kind of logic it contains and what third parties your KMP code uses.
Generally speaking, since Kotlin and Swift are both fairly static languages, there is not much difference between the binary size of a Kotlin class and a Swift class. So, what's the catch?
As you may recall from Chapter 2, Exploring the Three Compilers of Kotlin Multiplatform, we discussed how your Obj-C/Swift code can see this native output of the Kotlin/Native compiler by generating Obj-C adapters. Since Obj-C is a more dynamic language, it negatively impacts binary size.
So, what can you do to manage binary size? The simple answer is to limit how many Obj-C adapters you use. How? Mark everything that you don't need to expose through your shared code as internal.
If you notice that your binary size has increased in a non-linear, exponential...