KmpToolkit
3.5.2indexedModular utilities for clipboard operations, Compose toast/snackbar, and in‑app update checks — zero‑config auto-initialization, clipboard observer with foreground detection, customizable toast durations, positions, styles.
Modular utilities for clipboard operations, Compose toast/snackbar, and in‑app update checks — zero‑config auto-initialization, clipboard observer with foreground detection, customizable toast durations, positions, styles.
A collection of production-ready Kotlin Multiplatform libraries — one dependency per feature, works out of the box on every platform.
📖 Full usage docs: Docs site · Wiki · 🚀 Releases · 📦 Maven Central
The Docs site ships an API reference for every module via Dokka HTML bundled inside each Maven Central
-javadoc.jarartifact — IntelliJ / Android Studio surface it automatically in hover popups.
All modules ship together at the unified kmptoolkit.version. Click a module to open its Wiki page (install + usage + per-platform behaviour).
Each module is completely independent — add only what your project needs.
All modules ship together at the unified kmptoolkit version. Declare it once in your version catalog, then add only the libraries you need:
Then reference any library from commonMain via the standard implementation(libs.cmp.<name>) pattern.
💡 Replace
LATESTwith the version shown in the Maven Central badge at the top of this README — single source of truth, single line to bump when a new release ships.
The toolkit targets every platform Kotlin Multiplatform supports. Per-module coverage varies — see each module's Wiki page for the authoritative matrix. Quick reference:
📊 Full per-module × per-target matrix: Wiki › Platform Matrix · docs/inter-app-comms/CAPABILITY_MATRIX.md
Three modules ship together as the inter-app communication suite — all share the same Compose-MP adapter pattern (core + -compose adapter):
Architecture docs: docs/inter-app-comms/CAPABILITY_MATRIX.md · ADR-09 (platform-impl-exits)
sample-toolkit is the unified catalog app — every published cmp-* module wired in one Compose Multiplatform project. Pick a module from the catalog UI to launch its dedicated showcase. Same app, every platform:
# Desktop (JVM)
./gradlew :samples:sample-toolkit:composeApp:run
# Android
./gradlew :samples:sample-toolkit:androidApp:installDebug
# Web (browser — JS + wasmJs)
./gradlew :samples:sample-toolkit:composeApp:jsBrowserDevelopmentRun
./gradlew :samples:sample-toolkit:composeApp:wasmJsBrowserDevelopmentRun
# iOS — open samples/sample-toolkit/iosApp in Xcode
Per-module standalone samples (one per library) live alongside sample-toolkit under samples/ — useful if you want to study a single module in isolation.
First-run note (web targets):
jsBrowserDevelopmentRun/wasmJsBrowserDevelopmentRundownloads ~50MB of Skiko WASM assets on a cold cache. Subsequent runs are fast. If you hitOutOfMemoryError: GC overhead limit exceeded, ensureorg.gradle.jvmargs=-Xmx4096Mingradle.properties(the repo default).
New module template lives at cmp-library/ — copy + rename + add to settings.gradle.kts + ship a sample under samples/. Full walkthrough: Wiki › Adding New Features · CONTRIBUTING.md.
Copyright 2026 MobileByteLabs
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
See LICENSE for details.
| Module | Artifact | Description | Latest |
|---|
| cmp-clipboard | io.github.mobilebytelabs:cmp-clipboard | Copy, paste, observe, monitor, URL detect | |
| cmp-bubble | io.github.mobilebytelabs:cmp-bubble | Floating UI, bubbles, and notifications | |
| cmp-toast | io.github.mobilebytelabs:cmp-toast | Toast / Snackbar for Compose Multiplatform | |
| cmp-open-url | io.github.mobilebytelabs:cmp-open-url | Open URLs — browser, email, maps, phone, SMS | |
| cmp-deep-link | io.github.mobilebytelabs:cmp-deep-link | Deep link handling across all KMP targets | |
| cmp-in-app-update | io.github.mobilebytelabs:cmp-in-app-update | In-app update checking (GitHub / App Store / Play) | |
| cmp-remote-config | io.github.mobilebytelabs:cmp-remote-config | Remote config and feature flags | |
| cmp-product-tickets | io.github.mobilebytelabs:cmp-product-tickets | In-app feedback and support tickets | |
| cmp-network-monitor | io.github.mobilebytelabs:cmp-network-monitor | Reactive network connectivity — all 21 KMP targets | |
| cmp-network-monitor-compose | io.github.mobilebytelabs:cmp-network-monitor-compose | Compose extensions for network monitoring | |
| cmp-pdf-generator | io.github.mobilebytelabs:cmp-pdf-generator | Cross-platform PDF generation (HTML / Markdown / DSL → File / Bytes / URI / Share / Print) | |
| cmp-firebase-analytics | io.github.mobilebytelabs:cmp-firebase-analytics | Firebase Analytics + performance tracking | |
| cmp-share | io.github.mobilebytelabs:cmp-share | Cross-platform share sheet — text / URL / image / file / multi | |
| cmp-share-compose | io.github.mobilebytelabs:cmp-share-compose | @Composable rememberShareLauncher() + Material 3 ShareSheet / ShareButton | |
| cmp-intent-launcher | io.github.mobilebytelabs:cmp-intent-launcher | Typed Android-Intent builder + ActivityResult contracts + lifecycle-free SystemIntents | |
| cmp-intent-launcher-compose | io.github.mobilebytelabs:cmp-intent-launcher-compose | @Composable rememberIntentLauncher() + IntentPickerDialog / Sheet | |
| cmp-app-intents | io.github.mobilebytelabs:cmp-app-intents | Declarative App Intents DSL — SiriKit Shortcuts + Android Assistant BIIs | |
| cmp-app-intents-compose | io.github.mobilebytelabs:cmp-app-intents-compose | @Composable AppIntentsRegistration + Material 3 AppIntentsRegistry |
# gradle/libs.versions.toml
[versions]
kmptoolkit = "LATEST" # see Maven Central badge in the Modules table above
[libraries]
cmp-clipboard = { module = "io.github.mobilebytelabs:cmp-clipboard", version.ref = "kmptoolkit" }
cmp-bubble = { module = "io.github.mobilebytelabs:cmp-bubble", version.ref = "kmptoolkit" }
cmp-toast = { module = "io.github.mobilebytelabs:cmp-toast", version.ref = "kmptoolkit" }
cmp-open-url = { module = "io.github.mobilebytelabs:cmp-open-url", version.ref = "kmptoolkit" }
cmp-deep-link = { module = "io.github.mobilebytelabs:cmp-deep-link", version.ref = "kmptoolkit" }
cmp-in-app-update = { module = "io.github.mobilebytelabs:cmp-in-app-update", version.ref = "kmptoolkit" }
cmp-remote-config = { module = "io.github.mobilebytelabs:cmp-remote-config", version.ref = "kmptoolkit" }
cmp-product-tickets = { module = "io.github.mobilebytelabs:cmp-product-tickets", version.ref = "kmptoolkit" }
cmp-network-monitor = { module = "io.github.mobilebytelabs:cmp-network-monitor", version.ref = "kmptoolkit" }
cmp-pdf-generator = { module = "io.github.mobilebytelabs:cmp-pdf-generator", version.ref = "kmptoolkit" }
cmp-firebase-analytics = { module = "io.github.mobilebytelabs:cmp-firebase-analytics", version.ref = "kmptoolkit" }
cmp-share = { module = "io.github.mobilebytelabs:cmp-share", version.ref = "kmptoolkit" }
cmp-intent-launcher = { module = "io.github.mobilebytelabs:cmp-intent-launcher", version.ref = "kmptoolkit" }
cmp-app-intents = { module = "io.github.mobilebytelabs:cmp-app-intents", version.ref = "kmptoolkit" }
# Compose adapter modules (optional)
cmp-share-compose = { module = "io.github.mobilebytelabs:cmp-share-compose", version.ref = "kmptoolkit" }
cmp-intent-launcher-compose = { module = "io.github.mobilebytelabs:cmp-intent-launcher-compose", version.ref = "kmptoolkit" }
cmp-app-intents-compose = { module = "io.github.mobilebytelabs:cmp-app-intents-compose", version.ref = "kmptoolkit" }
cmp-network-monitor-compose = { module = "io.github.mobilebytelabs:cmp-network-monitor-compose", version.ref = "kmptoolkit" }
| Platform | Targets | Modules with full coverage |
|---|
| Android | androidTarget | All |
| iOS | iosX64, iosArm64, iosSimulatorArm64 | All |
| macOS | macosX64, macosArm64 | All except bubble, product-tickets |
| JVM Desktop | jvm | All |
| JS | js (browser + node) | All except bubble, toast, in-app-update, product-tickets |
| wasmJs | wasmJs (browser + node) | All except bubble, toast, in-app-update, product-tickets |
| Linux | linuxX64, linuxArm64 | clipboard, open-url, deep-link, in-app-update, remote-config, network-monitor, share, intent-launcher, app-intents |
| Windows | mingwX64 | Same as Linux |
| tvOS / watchOS | tvosX64/Arm64/SimulatorArm64, watchosX64/Arm32/Arm64/SimulatorArm64/DeviceArm64 | network-monitor, share (limited), app-intents (manifest-only) |
Intent builder + lifecycle-free SystemIntents (settings + save dialog) + Composable launchersSurfaced from shared tags and platforms — no rankings paid for.