Skip to content

cmp-app-intents-compose

cmp-app-intents-compose

Compose Multiplatform extensions for cmp-app-intentsAppIntentsRegistration() Composable for lifecycle-bound registration + AppIntentsRegistry() Material 3 dev/debug invocation UI.

Why this module exists

Authored as part of inter-app-comms-compose-completeness (v0.4 → v1.0 epic) per S0.B PIVOT-aware Phase 4 design. Parallel to cmp-share-compose + existing cmp-intent-launcher-compose. Closes the gap where v0.3-alpha shipped cmp-app-intents core but no Compose adapter for Composable-friendly registration + debug UX.

Targets (9 — Compose-MP supported)

Standard 9-target shape: androidLibrary, jvm, iosX64/iosArm64/iosSimulatorArm64, macosX64/macosArm64, js, wasmJs.

Coordinates

implementation("io.github.mobilebytelabs:cmp-app-intents:<version>")
implementation("io.github.mobilebytelabs:cmp-app-intents-compose:<version>")

Usage

AppIntentsRegistration(config) — lifecycle-bound registration

import com.mobilebytelabs.kmptoolkit.appintents.appIntents
import com.mobilebytelabs.kmptoolkit.appintents.compose.AppIntentsRegistration

@Composable
fun MyApp() {
    val config = remember {
        appIntents {
            intent("openHome") {
                title = "Open Home"
                description = "Navigate to the home screen"
                perform { _ -> AppIntentResult.Done }
            }
        }
    }
    AppIntentsRegistration(config)
    // ... rest of your app
}

AppIntentsRegistry() — Material 3 debug UI

import com.mobilebytelabs.kmptoolkit.appintents.compose.AppIntentsRegistry

@Composable
fun DebugScreen() {
    AppIntentsRegistration(config)
    AppIntentsRegistry(
        modifier = Modifier.fillMaxSize(),
        onInvokeResult = { id, result -> println("$id$result") },
    )
}

Dependencies

Transitively pulls Material 3 + materialIconsExtended (same as cmp-share-compose).

Versioning + API stability

Ships with the shared kmptoolkit.version (currently 3.3.2; this module lands in the next bump). @ExperimentalAppIntentsApi marker is retained at first ship — marker drop is a future toolkit-release decision.

Module reference

Module Identity (auto-gen)

Artifact Package Current version Maven Since API tier
io.github.mobilebytelabs:cmp-app-intents-compose com.mobilebytelabs.kmptoolkit.app.intents.compose UNKNOWN Central 2026-05-30 experimental

Module purpose (one paragraph):


§2 Per-Platform Parity Matrix (auto-gen)

Target Source-set present Real impl UnsupportedPlatform stub .kt count Last reviewed Coverage Notes
(no src/{platform}Main/ directories found) 2026-06-01

Legend (Real impl): ✅ real impl, 🟡 partial / wontfix-OS / wontfix-infra / legacy stub, ⛔ not declared, — N/A. Legend (Coverage enum, since 2026-06-01): full (all public-API methods backed by OS primitive) · partial (most real; some typed UnsupportedPlatform fallbacks for contracts that don't apply) · wontfix-OS (OS lacks the primitive) · wontfix-infra (impl possible but CI/toolchain blocks it) · (legacy:full|stub) (auto-derived; pre-opt-in modules — add a // LD-2-coverage: {enum} comment to the platform's primary .kt file to graduate). See RULE-LIB-DEVELOPMENT-MD-001 LD-2 + ADRs for accepted wontfix cases.


API reference

Each release ships the module's full Dokka HTML site inside its -javadoc.jar artifact on Maven Central.

In IntelliJ / Android Studio the IDE mounts the jar and surfaces it automatically in hover popups, Quick Documentation, and Symbol search.