kmp-deep-linking

Implements deep linking for Kotlin Multiplatform apps with App Links, Universal Links, and NavHost route parsing.

2|Updated Jun 6, 2026
One-click install
npx skills add https://github.com/ronjunevaldoz/kmp-agent-skills --skill kmp-deep-linking-ronjunevaldoz
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: kmp-deep-linking
Source: https://github.com/ronjunevaldoz/kmp-agent-skills/tree/main/skills/kmp-deep-linking
Command: npx skills add https://github.com/ronjunevaldoz/kmp-agent-skills --skill kmp-deep-linking-ronjunevaldoz

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Opening a URL from an email or browser should take users directly to the right screen in your app, but wiring Android App Links, iOS Universal Links, and Compose Navigation deep links across a Kotlin Multiplatform codebase is error-prone and hard to test. ## Core Features & Use Cases - Shared DeepLink parser in commonMain: Define a DeepLink sealed class and a pure, unit-testable DeepLinkParser that maps URLs to typed routes without platform dependencies. - Platform entry-point wiring: AndroidManifest intent filters with autoVerify, Activity intent and onNewIntent handling, plus iOS NSUserActivity and openURL handlers bridged to shared Kotlin code. - Server verification files: Templates for assetlinks.json (Digital Asset Links) and apple-app-site-association (AASA) hosted at /.well-known/. - Use Case: A shopping app needs https://www.example.com/products/abc-123 to open the product detail screen on both Android and iOS, with a myapp:// custom scheme fallback and unit tests covering the URL parsing logic. ## Quick Start Ask the agent to implement deep linking for your KMP app so that product and order URLs open the corresponding screens on Android and iOS.

Frequently Asked Questions about kmp-deep-linking

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I implement deep links in a Kotlin Multiplatform app?▼

Define a DeepLink sealed class and a pure DeepLinkParser object in commonMain, register navDeepLink uriPattern blocks in your Compose NavHost, then relay raw URLs from the Android Activity intent and iOS app delegate to the shared parser.

How to set up Android App Links with verification?▼

Add an intent filter with android:autoVerify="true" for your https scheme and host in AndroidManifest.xml, then host an assetlinks.json file at https://yourdomain/.well-known/assetlinks.json containing your package name and SHA-256 signing certificate fingerprint.

Does Compose Navigation support deep link URI patterns?▼

Yes, Compose Navigation supports deep links through navDeepLink blocks inside composable route builders, where you declare uriPattern values like https://www.example.com/products/{productId} that map incoming URLs to route arguments.

Why does my Android App Link open in a browser instead of the app?▼

This usually happens when android:autoVerify="true" is missing from the intent filter, so Android never initiates App Links verification. It can also fail if the assetlinks.json SHA-256 fingerprint does not match the app's signing certificate.

How do I handle deep links when the app is already running?▼

Override onNewIntent in your Android Activity, because onCreate is not called again for an already-running app. Relay the new intent's data URI to the NavController through a shared state or event channel.

Can deep link URL parsing be unit tested without a device?▼

Yes, keep the DeepLinkParser as a pure object in commonMain with no platform dependencies, then test it with plain JUnit tests in commonTest covering product URLs, custom scheme fallbacks, and unknown URL cases.