Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

178 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KMP Toolkit

Maven Central CI Kotlin License

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.jar artifact — IntelliJ / Android Studio surface it automatically in hover popups.

Modules

All modules ship together at the unified kmptoolkit.version. Click a module to open its Wiki page (install + usage + per-platform behaviour).

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

Each module is completely independent — add only what your project needs.

Installation

All modules ship together at the unified kmptoolkit version. Declare it once in your version catalog, then add only the libraries you need:

# 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" }

Then reference any library from commonMain via the standard implementation(libs.cmp.<name>) pattern.

💡 Replace LATEST with 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.

Platform Support

The toolkit targets every platform Kotlin Multiplatform supports. Per-module coverage varies — see each module's Wiki page for the authoritative matrix. Quick reference:

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)

📊 Full per-module × per-target matrix: Wiki › Platform Matrix · docs/inter-app-comms/CAPABILITY_MATRIX.md

Inter-App Comms Suite

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 App

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 / wasmJsBrowserDevelopmentRun downloads ~50MB of Skiko WASM assets on a cold cache. Subsequent runs are fast. If you hit OutOfMemoryError: GC overhead limit exceeded, ensure org.gradle.jvmargs=-Xmx4096M in gradle.properties (the repo default).

Contributing

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.

License

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.

About

Production-ready Kotlin Multiplatform libraries — one dependency per feature, works out of the box on Android, iOS, macOS, JVM Desktop, JS, wasmJs, Linux, Windows, tvOS, watchOS.

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages