Deep Linking
How deep links work across iOS and Android with WarpLink.
Deep links are URLs that take users directly to specific content inside a mobile app instead of a web page. WarpLink creates short links that resolve at the edge and route users to the right destination based on their platform.
How It Works
When a user taps a WarpLink URL (e.g., https://aplnk.to/abc123):
- Edge resolution — A Cloudflare Worker reads the link configuration from KV (sub-10ms globally)
- User-Agent parsing — The Worker parses the browser's User-Agent to detect the platform (iOS, Android, desktop)
- Bot detection — If the UA matches a known bot (social media crawlers, search engines), the Worker returns an HTML page with OG/Twitter Card tags for rich previews
- Platform redirect — Real users get a 302 redirect to the appropriate destination:
- iOS with app installed — Universal Link opens the app directly
- Android with app installed — App Link opens the app directly
- iOS without app — Redirect to the App Store (or custom fallback URL)
- Android without app — Redirect to the Play Store (or custom fallback URL)
- Desktop — Redirect to the web destination URL
Universal Links (iOS)
Universal Links are Apple's mechanism for deep linking. When configured correctly, tapping a link opens your app without going through Safari.
Requirements:
- An Apple App Site Association (AASA) file hosted at
/.well-known/apple-app-site-associationon the link domain - The
Associated Domainsentitlement in your app (applinks:aplnk.to) - The app must be installed on the device
WarpLink generates and hosts the AASA file automatically when you register your iOS app. It's regenerated whenever you update your app configuration.
App Links (Android)
App Links are Android's equivalent of Universal Links. They require a Digital Asset Links file for domain verification.
Requirements:
- An
assetlinks.jsonfile hosted at/.well-known/assetlinks.jsonon the link domain - An intent filter with
android:autoVerify="true"in your AndroidManifest.xml - The app must be installed and verified
WarpLink generates and hosts assetlinks.json automatically when you register your Android app with your package name and SHA256 signing key fingerprint.
Fallback Cascade
When a user doesn't have the app installed, WarpLink determines the fallback destination using a cascade:
| Priority | Source | Example |
|---|---|---|
| 1 | Link-level fallback URL | ios_fallback_url on the specific link |
| 2 | App-level store URL | App Store URL from app registration |
| 3 | Organization default | Configured in organization settings |
Fallback URLs are baked into the link configuration at write time, so the Worker's redirect path requires zero additional lookups.
Short Links
Every WarpLink URL uses a short slug format:
- Default domain:
https://aplnk.to/{slug} - Custom domains:
https://yourdomain.com/{slug}
Slugs are auto-generated (6-character alphanumeric via NanoID) or custom-chosen. Custom slugs must be 2-100 characters, lowercase alphanumeric with hyphens.