Native deep linking SDKs for every mobile stack

Ship deep linking on iOS, Android, Flutter, React Native, Unity, and Capacitor — all with the same API shape, the same dashboard, and the same account.

One deep linking API, every stack you ship on

Mobile teams rarely ship on a single platform anymore. A typical product has an iOS app, an Android app, a web fallback, maybe a hybrid Capacitor wrapper for the internal admin, and a Unity build for a marketing mini-game. Historically that meant stitching together three or four deep linking vendors and praying the attribution reconciled. ChottuLink collapses that entire stack into one SDK family with a shared API shape, a single dashboard, and a single billing account.

Every SDK ships as native code — no JavaScript bridge tax, no performance penalty, no runtime surprises. The callback shape is consistent across platforms so your routing logic can be factored into shared code. And because the backend is the same for every SDK, install attribution reconciles automatically across iOS, Android, Flutter, RN, Unity, and Capacitor installs of the same product.

Same callback shape on every platform

// Swift (iOS)
let config = CLConfiguration(apiKey: "your-api-key")
ChottuLink.initialize(config: config)

// Handle resolved deep link
func chottuLink(didResolveDeepLink link: URL, metadata: [String : Any]?) {
    router.navigate(to: link.absoluteString)
}

Platform-specific notes

iOS. The SDK registers as a Universal Link handler during init. If your app uses SceneDelegate, pass the incoming userActivity to ChottuLink.continue(userActivity:) in scene(_:continue:). SwiftUI apps can use the .onOpenURL modifier alongside the SDK with no extra wiring.
Android. Add android:autoVerify="true" to the intent filter in your manifest -- this is required for Android App Links to bypass the disambiguation dialog. The Kotlin and Java APIs are identical.
Flutter. The Dart package wraps both native SDKs. The onLink stream fires for both deferred and direct deep links so you handle both in one place. Null safety is supported from Flutter 3.0.
React Native. The package links automatically via the standard RN auto-linking mechanism on RN 0.68 and above. No manual pod install or Gradle edit needed.
Unity. Download ChottuLink.unitypackage and import via Assets → Import Package → Custom Package. During import, enable the mainTemplate.gradle checkbox. If you already have a mainTemplate.gradle, manually add the three required dependencies (gson, okhttp3, installreferrer) to its dependencies block.
Capacitor. On iOS, add the ChottuLinkPlugin to your AppDelegate. On Android, register it in MainActivity. No native code changes beyond the standard Capacitor plugin registration.

Use cases per stack

See how teams on each platform put ChottuLink to work.

Flutter: One Dart handler for iOS & Android

  • Single onLink stream handles both deferred and direct deep links
  • No separate Swift or Kotlin handlers needed
  • Write the routing logic once, run it on every platform

React Native: JS-native deep linking

  • Generate and resolve share links entirely from JavaScript
  • Deferred callback fires in the same navigation thread
  • Smooth handoff from link click to in-app screen

Unity: Session & invite linking in C#

  • Embed invite or share links anywhere in your game UI
  • C# callback fires on first launch after install
  • Route new users directly into the right session or screen

Capacitor: Deep linking without touching native code

  • TypeScript plugin handles links entirely in web layer
  • Zero native code changes beyond standard plugin registration
  • Works for both consumer apps and internal hybrid tools

Frequently Asked Questions

Related features

Ship deep linking this sprint.

Sign up, grab your API key, drop in the SDK.

SDK Docs