Yeah. We haven't run numbers in a few years, but Kotlin and Swift binary seems to grow at a similar rate if the Kotlin is not exported. If you're exporting a lot, binary gets much bigger, relative to how much API you're exporting. The Kotlin compiler needs to generate ObjC adapters, essentially. SqlDelight can be particularly bad if you have a lot of tables. That's what originally trigger digging into it. Somebody from (redacted) reached out saying they had done a POC with ~100 tables and the binary was quite large. SqlDelight generates a lot of declarations, all public. If you're not directly accessing them from Swift, that's all wasted binary. For SqlDelight specifically, just have it in a different module and don't export the whole thing. It's also easy to have a dependency in the API, which can drag a bunch of related classes. For example, Ktor or Coroutines. If you're not calling them directly from Kotlin, leaving a dependency in the API is an easy way to pull in extra binary. A few years back I did some quick edits to KaMPKit, and dropped the binary by like 20%. The simplest way to diagnose is looking at the header. If you see things you're not calling, well.