> Markdown version of [/videos/100143-the-dark-corners-of-kotlin-multiplatform?t=1385](https://www.wearedevelopers.com/videos/100143-the-dark-corners-of-kotlin-multiplatform?t=1385). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # The Dark Corners of Kotlin Multiplatform Are unannotated exceptions and type erasure silently crashing your iOS apps? Uncover the dark corners of Kotlin Multiplatform and discover pragmatic API workarounds to bridge the mobile divide. - **Speakers:** [Andrea Della Porta](https://www.wearedevelopers.com/@andrea-della-porta) - **Event:** World Congress 2026 Europe - **Published:** July 9, 2026 - **Duration:** 29:09 - **URL:** https://www.wearedevelopers.com/videos/100143-the-dark-corners-of-kotlin-multiplatform ## Summary While Kotlin Multiplatform (KMP) delivers on its promise of consolidating business logic, moving from tutorial environments to production reveals significant friction points—especially for Apple ecosystem compatibility. The core narrative focuses on the "dark corners" of KMP, illustrating how architectural disparities between Kotlin and iOS toolchains create unexpected runtime bugs, type erasure, and developer workflow bottlenecks. The deep-seated challenge often isn't the compiler itself, but managing the technical and relational gap between the Android developers advocating for the architecture and the iOS developers who must consume its generated artifacts. Several technical idiosyncrasies complicate cross-platform integration. Swift and Objective-C interop traditionally degrades Kotlin's robust type safety; sealed classes lose their compiler-enforced exhaustiveness, generic types are erased to simple `NSArray` or `Any` constructs, and default parameters are entirely stripped away. Error handling introduces dangerous pitfalls seamlessly—unannotated exceptions bypass catch blocks and crash the iOS app, while caught errors demand tedious "user info archaeology" to extract meaningful context from the `NSError` dictionary. Furthermore, the developer experience suffers from split tooling contexts where "Gradle screams, Xcode shrugs," alongside steep compilation penalties caused by sprawling target matrices. Successfully bridging these gaps requires pragmatic workarounds and robust tooling. Developers should utilize a sealed `Result` type return pattern at the API boundary, guaranteeing predictable, type-safe error states over fragile Swift exception bridging. Incorporating Touchlab's SKIE dramatically improves the Swifty-ness of generated APIs, while careful modularization, remote caching, and tools like KMMBridge help tame Xcode build times and simplify `.xcframework` distribution. Although Compose Multiplatform now offers stable iOS accessibility support, teams must validate UI testing and VoiceOver constraints screen-by-screen. Ultimately, early alignment on these architectural compromises preserves trust between mobile disciplines and transforms KMP from an operational headache into a sustainable, singular source of truth. **Keywords:** kotlin multiplatform production challenges, swift and objective-c interop, sealed classes exhaustiveness, ios generic type erasure, nserror metadata extraction, xcode and gradle tooling, touchlab skie integration, jetbrains swift export alpha, sealed result type pattern, xcframework distribution workflows, compose multiplatform ui testing, voiceover accessibility constraints, kmmbridge artifact sharing, cross-platform developer experience, kotlin native compilation optimization ## Chapters 1. **Navigating Kotlin Multiplatform beyond the happy path** (00:02) — Moving beyond theoretical tutorials reveals concrete friction points and unexpected crashes in real applications. 1. **Swift and Objective-C interoperability limitations and tools** (04:24) — Sealed hierarchies and typed generics often degrade through the traditional Apple bridge, requiring supplementary ecosystem tooling. 1. **Bridging Kotlin exceptions to Swift error handling** (11:07) — Unannotated Kotlin exceptions silently crash iOS applications, making explicit result types a preferable design choice. 1. **Build performance and Xcode tooling friction for iOS** (14:12) — Native compilation overhead and fragmented debugging environments complicate the daily workflow for native iOS developers. 1. **Testing and accessibility in Compose Multiplatform on iOS** (20:31) — Shared user interfaces can act as opaque views in legacy testing environments, requiring careful validation of accessibility guarantees. 1. **Architectural boundaries and the Kotlin Multiplatform survival kit** (23:05) — Selectively sharing business logic over user interfaces while implementing proactive workarounds minimizes friction across platforms. 1. **Designing cross-platform APIs with team collaboration** (27:49) — Kotlin developers must understand Swift capabilities and communicate directly with iOS colleagues to author usable shared code. ## Related Moments - [Solving cross-platform drawbacks with Kotlin Multiplatform](https://www.wearedevelopers.com/videos/4-kotlin-multiplatform-true-power-of-native-code-reuse) (from "Kotlin Multiplatform - True power of native code reuse") - [Key takeaways and future Kotlin Multiplatform improvements](https://www.wearedevelopers.com/videos/4-kotlin-multiplatform-true-power-of-native-code-reuse) (from "Kotlin Multiplatform - True power of native code reuse") - [How Kotlin Multiplatform differs from cross-platform frameworks](https://www.wearedevelopers.com/videos/276-introducing-kotlin-multiplatform-in-an-existing-project) (from "Introducing Kotlin Multiplatform in an existing project") - [Developing front-end client applications using Kotlin Multiplatform libraries](https://www.wearedevelopers.com/videos/1184-location-verification-without-gps) (from "Location Verification without GPS?") - [Understanding Kotlin Multiplatform and its compiler targets](https://www.wearedevelopers.com/videos/4-kotlin-multiplatform-true-power-of-native-code-reuse) (from "Kotlin Multiplatform - True power of native code reuse") - [Planning a production application with Kotlin Multiplatform](https://www.wearedevelopers.com/videos/4-kotlin-multiplatform-true-power-of-native-code-reuse) (from "Kotlin Multiplatform - True power of native code reuse") ## Related Articles - [Dev Digest 132 - Binging WADFlix?](https://www.wearedevelopers.com/magazine/473-dev-digest-132-binging-wadflix) - [Dev Digest 138 - Are you secure about this?](https://www.wearedevelopers.com/magazine/486-dev-digest-138-are-you-secure-about-this) - [Using Java 17 latest features in real world projects](https://www.wearedevelopers.com/magazine/121-using-java-17-latest-features-in-real-world-projects) - [Dev Digest 120 - Apple and peers](https://www.wearedevelopers.com/magazine/455-dev-digest-120-apple-and-peers) ## Related Jobs - [iOS Engineer, Swift/SwiftUI/Combine (B2C Broker)](https://www.wearedevelopers.com/jobs/ext/1611832-ios-engineer-swift-swiftui-combine-b2c-broker) at **Bitpanda** - [Founding Mobile Engineer (iOS)](https://www.wearedevelopers.com/jobs/ext/1648532-founding-mobile-engineer-ios) at **Almedia** - [Senior Software Engineer, Android (Earn Experience)](https://www.wearedevelopers.com/jobs/ext/1937627-senior-software-engineer-android-earn-experience) at **Bitpanda** - [Senior Software Engineer, Client Apps Platform](https://www.wearedevelopers.com/jobs/ext/1773893-senior-software-engineer-client-apps-platform) at **GitHub** - [Principal Software Engineer, Enterprise AI Platform](https://www.wearedevelopers.com/jobs/ext/1467292-principal-software-engineer-enterprise-ai-platform) at **GitHub** - [Senior Engineer, Infrastructure Platform](https://www.wearedevelopers.com/jobs/ext/328836-senior-engineer-infrastructure-platform) at **Intercom, Inc.**