Welcome to KMP Bits
RSS FeedYour go-to spot for Kotlin Multiplatform tips, mobile dev insights, and clean architecture.
Featured
-
Torque Spec: Shared Form State and Validation in KMP
The spec says 120 Nm and you already knew that. Knowing the number was never the hard part. My validation rules were already shared. The sixty lines of state around them were not.
-
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.
-
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
-
Front Wing, Not Small Wing: Design Tokens for Native UI in KMP
The FIA technical regulations never call anything a small wing. They name parts by what they do. Shape tokens work the same way, and one XML file can feed Compose and SwiftUI without sharing a line of UI.
-
Box, Box: Deep Links in Kotlin Multiplatform
A deep link is the radio call that sends a user straight to one screen, skipping the whole navigation flow. Here's how I handle the parsing in commonMain and keep the platform glue thin on Android and iOS.
-
Telemetry: Shared Analytics and Crash Reporting in Kotlin Multiplatform
A race car streams telemetry to the pit wall over one radio link, whatever the sensor. Analytics and crash reporting in KMP should work the same way: one interface in commonMain, the native SDKs underneath.
-
Minimum Weight: Code Coverage Gates in Kotlin Multiplatform with Kover
In GT racing, every car crosses the weighbridge and the minimum weight limit only ever goes up. That's how a coverage floor should work too.