Idiomatic use of expect/actual declarations in Kotlin Multiplatform, when to prefer interfaces + DI instead, and how to design platform abstractions that age well. Use when you need platform-specific behavior in commonMain.
Canonical Kotlin Multiplatform project layout — source set hierarchy (commonMain, androidMain, iosMain, jvmMain, jsMain, wasmJsMain), module graph, and Gradle composite build patterns. Use this when bootstrapping a new KMP repo or restructuring an existing one.
How to split a Kotlin Multiplatform codebase into shared modules (domain, data, ui-shared, feature-), keep DI boundaries clean across targets, and avoid "one giant shared module" pitfalls. Use when the shared/ module starts ballooning.
GitHub Actions CI/CD for Kotlin Multiplatform — matrix builds (ubuntu for JVM/Android/JS, macOS for iOS), caching, Maven Central / SPM / CocoaPods publishing. Use when wiring CI or a release pipeline.
Gradle Kotlin DSL patterns for KMP — version catalogs, hierarchical source sets, convention plugins, assembling XCFrameworks and fat frameworks. Use when wiring or refactoring a KMP build.
Building an offline-first repository in KMP with Ktor + SQLDelight, including conflict resolution, background sync, and NetworkBoundResource-style flow. Use when designing features that must work without a connection.
Using kotlinx.serialization in a KMP codebase — JSON config, polymorphism, sealed hierarchies, custom serializers, and CBOR/ProtoBuf. Use when defining DTOs or wire formats.
Setting up the Ktor HTTP client in commonMain with per-platform engines, auth, interceptors, retries, and logging. Use when implementing networking for a KMP app.
Using SQLDelight 2 for typed SQL in KMP — schema, queries, migrations, coroutines-extensions, and per-platform drivers. Use for any multiplatform local database.
Incrementally extracting an existing Android (Kotlin + Jetpack) codebase into Kotlin Multiplatform commonMain, without forcing a big-bang rewrite. Use when introducing KMP into a shipping Android app.
Introducing Kotlin Multiplatform into an existing Swift iOS app — wrapping Swift domain code, packaging the shared framework, and bridging Kotlin Flow/suspend to Swift. Use when adding KMP to a shipping iOS app.
Shrinking the Kotlin/Native iOS framework and Android AAR produced by a KMP shared module — exported API trimming, dead-code elimination, static vs dynamic frameworks, and dependency auditing. Use when the iOS app binary is too big.
Performance tuning for Kotlin Multiplatform — coroutines on iOS, the new memory model, cold-start cost of the shared framework, and avoiding common Kotlin/Native footguns. Use when profiling a KMP app that feels slow on iOS.
Testing Compose Multiplatform UI — semantic assertions in commonTest, running UI tests on Android / Desktop / iOS, and screenshot regression strategies. Use when covering shared UI with tests.
Testing strategy for KMP — commonTest with kotlin.test, expect/actual test doubles, Turbine for Flow assertions, Ktor MockEngine, and in-memory SQLDelight drivers. Use when writing tests for shared code.
Navigation in Compose Multiplatform with Voyager or Decompose, including deep links, back-handling, and nested graphs. Use when designing multi-screen KMP apps.
Sharing UI with Compose Multiplatform 1.7+ across Android, iOS, Desktop (JVM), and Web (wasmJs). Covers module layout, entry points per platform, lifecycle, and when UI-per-platform is still better. Use when building shared screens.
Accessibility in Compose Multiplatform — semantics, focus order, contrast, dynamic type, and the places where Android TalkBack and iOS VoiceOver diverge. Use when building or auditing shared UI.
Animation APIs in Compose Multiplatform (animateAsState, updateTransition, AnimatedContent, Animatable) and the performance caveats that differ between Android, iOS, and Desktop. Use when adding motion to shared UI.
Internationalization with compose-resources — string qualifiers, ICU plurals, RTL layout, per-locale fallbacks, and runtime locale switching. Use when shipping to multiple markets.
Sharing images, strings, fonts, and raw files across Android/iOS/Desktop/Web with the compose-resources Gradle plugin. Covers folder layout, qualifier directories, and how platform asset loading still differs. Use when adding shared assets.
★not rated 1 4mo agoA53 tokens
At most 3 mods per repository are shown here, and a mod shipped inside a plugin is left to that plugin's page — the rest are on their repository pages: