Welcome to KMP Bits
RSS FeedYour go-to spot for Kotlin Multiplatform tips, mobile dev insights, and clean architecture.
Featured
-
Lights Out: Automatic Skeleton Loading in Compose Multiplatform
Five ligths go out and every car reacts to the same signal at once. My shimmer effect wasn't doing that. Every skeleton on screen was running its own private clock.
-
KMP Splash: How I Stopped Opening Xcode for Splash Screens
The pit crew was always there. I just had to build it: a Gradle plugin that automates iOS and Android splash screen setup from a single config block.
-
Drop the Clutch: Three Metro DI Patterns Every KMP Developer Should Know
Metro drops the clutch on runtime DI errors. Three patterns in a real KMP app: binding contributions, platform graphs, and child scopes.
-
Clean Lap: UI Testing in Compose Multiplatform
Before the car hits the grid, telemetry confirms every sector. Before your UI ships, runComposeUiTest confirms every composable.
Recent Bits
-
Same Car, Every Time: Deterministic Feature Module Generation in KMP
AI generation adapts to anything you ask. A bash script adapts to nothing. After a few months of scaffolding KMP feature modules both ways, I know which one I trust.
-
Change the Map: Feature Flags and Remote Config in Kotlin Multiplatform
A driver changes the engine map from the wheel, mid-race, no pit stop required. Feature flags do the same for your app: change behaviour without shipping a build. Here's how I structure flags and remote config once, in commonMain, for both platforms.
-
The Same System: Advanced expect/actual in KMP
expect/actual is easy until you leave the trivial expect fun behind. Here's what bites with expect classes, constructors, actual typealiases, and the compiler rules nobody warns you about.
-
Safety Car: Coroutine Exception Handling in KMP
An uncaught coroutine exception crashes your KMP app on both platforms, and the platform safety nets don't extend to iOS. Here's how I build crash boundaries in commonMain.