Compose Multiplatform Development Guide
Battle-tested KMP/CMP patterns for shipping one Compose codebase across Android, iOS, Desktop and Web.
Dev & CodingAdvanced★ 457⑂ 34AI score 9/10Last updated: Oct 5, 2026
What it does
- Lays out a
commonMain-first project structure and theexpect/actualpattern for functions, classes and composables with working code. - Replaces Android-only APIs (
LocalConfiguration) with cross-platform equivalents:LocalWindowInfo.containerSize,LocalDensity,BoxWithConstraints. - Covers Compose Resources for shared fonts/drawables/strings, two-way iOS interop (
ComposeUIViewController,UIKitView, SwiftUI hosting), and performance notes for iOS cold start and Wasm bundle size. - Documents what does NOT work: the iOS keyboard double-adjustment bug, RTL quirks, JVM-only APIs banned from
commonMain, plus an anti-pattern table.
Who it's for
- Android/KMP engineers targeting mobile, desktop and web from one codebase
- Teams comfortable with Jetpack Compose but stuck on the iOS target
- Hybrid projects embedding Compose screens into an existing SwiftUI app
Examples
- "Open a native share sheet on both platforms" → generates
expect fun openShareSheetplus Android/iOSactualimplementations. - "My iOS layout shifts twice when the keyboard appears" → shows the
OnFocusBehavior.DoNothing+imePadding()fix. - "Use the Inter font from shared code" → drop files in
composeResources/font/and build aFontFamilyfromRes.font.*.
· · · Install guide · · ·
Try it now, no install
Paste this into Claude to use the skill without installing anything.
Read the instructions in this file and follow them to help me: https://raw.githubusercontent.com/AThevon/genjutsu/HEAD/skills/_jutsu/compose-multiplatform/SKILL.md What I want: (describe your task here)
If Claude can't open the link, open it yourself and paste the contents instead.
↓ If it works for you, download the ZIP below and install it. Then it runs on its own — no pasting each time.
Install in the Claude app (no terminal)
- Download the ZIP with the button below.
- In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
- Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
Install in Claude Code
Let Claude do it — paste this into Claude Code
Install the skill I found on Claude Skill Mart. Copy the skills/_jutsu/compose-multiplatform folder from the GitHub repo AThevon/genjutsu into my ~/.claude/skills/compose-multiplatform/. When it's done, tell me in one line what this skill can do.
Install with a command instead
git clone https://github.com/AThevon/genjutsu.git /tmp/genjutsu && mkdir -p ~/.claude/skills && cp -r /tmp/genjutsu/skills/_jutsu/compose-multiplatform ~/.claude/skills/⚠ This is a third-party skill. Check the source repository before installing.
- Open a terminal and clone the repo:
git clone https://github.com/AThevon/genjutsu.git - Create the skills directory if needed:
mkdir -p ~/.claude/skills - Copy just this skill:
cp -r genjutsu/skills/_jutsu/compose-multiplatform ~/.claude/skills/ - To also get the referenced siblings (
compose-motion,mobile-principles, etc.), copy them all:cp -r genjutsu/skills/_jutsu/* ~/.claude/skills/ - Restart Claude Code and confirm it appears under
/skills. - Inside a KMP project, ask something like "write the iOS interop layer" to trigger it — and cross-check the version numbers against the latest Compose Multiplatform release notes.
View source on GitHub ↗License: NOASSERTION