← ClaudeAtlas

compose-multiplatformlisted

Compose Multiplatform / KMP patterns - expect/actual composables, platform-specific code, density and font handling cross-target, iOS/Android/Desktop interop.
leobbaroni/maestro · ★ 1 · API & Backend · score 67
Install: claude install-skill leobbaroni/maestro
# Compose Multiplatform > Compose Multiplatform (CMP) and Kotlin Multiplatform (KMP) patterns for cross-platform UI. > Loaded for projects with `org.jetbrains.compose` plugin. > Foundation: `../compose-motion/SKILL.md` for animation API; this file covers what's specific to writing one Compose codebase for Android + iOS + Desktop + Web. --- ## KMP vs CMP - quick clarification **KMP** (Kotlin Multiplatform) is the language and build infrastructure: shared Kotlin code compiled to JVM, Native (iOS, macOS, Linux, Windows), and Wasm. **CMP** (Compose Multiplatform) is the UI framework on top of KMP, built by JetBrains as a port of Jetpack Compose. You write a single Compose codebase in `commonMain` that runs on Android, iOS, Desktop (JVM), and Web (Wasm). Platform-specific code lives in `androidMain`, `iosMain`, `desktopMain`, `wasmJsMain` and is wired in via `expect`/`actual` declarations. --- ## Project structure ``` composeApp/ ├── src/ │ ├── commonMain/ ← shared Compose code (most of the app) │ │ └── kotlin/ │ ├── androidMain/ ← Android-specific (uses Activity, Context) │ ├── iosMain/ ← iOS-specific (uses UIKit/UIView interop) │ ├── desktopMain/ ← JVM desktop (uses java.awt/swing if needed) │ └── wasmJsMain/ ← Wasm web target ├── build.gradle.kts iosApp/ ← Xcode project consuming the generated framework androidApp/ ← Android Application module (often merged into composeApp) ``` The `comm