Deep Linking: A Mobile Engineering Primer
A deep link is a URL that opens directly to a specific screen inside a mobile app, with optional context. The user clicks the link in an email, a message, a notification, or a web page. The app opens to the right screen. Done well, deep linking is invisible plumbing that powers marketing, sharing, and notifications. Done poorly, links route to the wrong place or open the web instead of the app.
Written by Yashveer Singh, founder of Yashveer Labs.
What you actually need to know
- Universal links on iOS and App Links on Android are the modern default.
- Server side configuration files declare which paths your app handles.
- Deferred deep linking handles the case where the app is not installed.
- Capture destination, route through auth, redirect.
- Test on real devices after every configuration change.
| Pattern | Use case |
|---|---|
| Universal links and App Links | Default for any URL that should open the app |
| Custom URL scheme | Legacy. Use only when universal will not work. |
| Deferred deep link | Marketing flow before app install |
| Push notification with deep link | Notification routing |
| Email with deep link | Lifecycle email routing |
| Share sheet with deep link | User sharing |
The core argument
Deep linking is the plumbing that connects the rest of the world to your mobile app. The marketing email. The push notification. The shared URL. The QR code. Each of these is a link that should open the app to the right place. Done well, the linking is invisible. Done poorly, the links break and the user lands on the wrong screen or in the web browser.
The modern default is universal links on iOS and App Links on Android. The same URL works whether the app is installed or not. The configuration is straightforward but easy to misconfigure. The server side files declare which paths the app claims. The app entitlements declare the same. The platform connects the two.
The pattern that matters most for marketing flows is deferred deep linking. The user clicks a link before the app is installed. The link opens a fallback page. The user installs the app. The app opens to the destination the original link encoded. The user does not see the seam.
The pattern that matters most for product flows is authentication routing. The link arrives. The user is not logged in. The app captures the destination. The user logs in. The app redirects to the captured destination. The seamless experience is small engineering but easy to skip.
The setup checklist
| Item | Required for |
|---|---|
| Associated Domains entitlement | iOS universal links |
| apple-app-site-association file | iOS universal links |
| Intent filters in AndroidManifest | Android App Links |
| assetlinks.json file | Android App Links |
| Universal Links handler in code | Both platforms |
| Authentication routing | Both platforms |
| Deferred deep link integration | Marketing flows |
| Analytics tagging | Attribution |
| Per environment configuration | Staging and production |
| Test on fresh device install | Verification |
How much does this cost
The initial setup is roughly a week of mobile engineering work. The deferred deep link integration with a service like Branch is a few hundred USD per month. The ongoing maintenance is small. The return is the marketing, notification, and sharing flows that actually land in the app.
Features the deep linking system must have
- Universal links on iOS.
- App Links on Android.
- Custom URL scheme as a fallback.
- Authentication routing.
- Deferred deep link support for marketing.
- Analytics tagging on every link.
- Per environment configuration.
- A test plan that includes fresh installs.
Expert opinion
Deep linking is one of those mobile features that does not get attention until it does not work. The team ships universal links and forgets about them. The marketing team starts running campaigns. The links break for some users on some platforms. The conversion suffers. The fix is to invest in deep linking as a real feature with testing and observability. The investment is small. The marketing leverage is large.
>
Yashveer Singh, founder of Yashveer Labs
How this played out on a real project
A client SaaS had universal links configured but the apple-app-site-association file was on staging and not on production. Marketing emails opened to the web instead of the app for production users. The team did not notice for weeks.
We fixed the configuration. Added per environment files. Added a test on fresh install for every release. Added analytics tagging on every marketing link. The next campaign's app open rate from email tripled compared to the broken version.
The investment was two days. The marketing impact was measurable from the next campaign. The team adopted deep linking as a tested feature rather than as configuration that gets done once and forgotten.
For more on the related work, see the mobile app onboarding flow that converts and push notifications the architecture most apps get wrong.
Common mistakes teams make
- Universal links configured but never tested on a fresh install.
- apple-app-site-association on staging but not production.
- No authentication routing. Links land on login then are forgotten.
- No deferred deep linking. Marketing breaks for new installs.
- No analytics tagging. Cannot measure conversion.
- Custom URL schemes only. Wrong default in 2026.
- No per environment configuration. Confusion follows.
- Treating deep linking as one time configuration.
A one week setup plan
- Day one. Configure Associated Domains on iOS. Host apple-app-site-association.
- Day two. Configure intent filters on Android. Host assetlinks.json.
- Day three. Implement the universal links handler in the app.
- Day four. Implement authentication routing.
- Day five. Integrate deferred deep linking service.
- Day six. Add analytics tagging convention.
- Day seven. Test on real devices with fresh installs. Document.
For more on the related work, read the mobile app onboarding flow that converts and push notifications the architecture most apps get wrong. On the broader mobile side, building a mobile app without hiring a mobile engineer is the natural next read.
Frequently asked
Why this work lands with me
I am Yashveer Singh. Founder of Yashveer Labs. I take this kind of project because I have done enough of them to know what kills them. The version of me that writes a post like this is the same one who builds the system afterward. There is no handoff to a junior, no agency middleman, no surprise scope. That is the bet I am making on my own brand.
Posts that line up with this one.
- Cross Platform and Mobile Development
Should You Build for iOS or Android First as a Startup?
The platform you build first will shape your early users, revenue, and product feedback. Choose deliberately.
- Cross Platform and Mobile Development
AI in Mobile Apps: On Device vs API Tradeoffs
Where the AI runs decides what the app can do, what it costs, and how the user feels about privacy. The honest comparison for founders deciding in 2026.
- Cross Platform and Mobile Development
Apple Intelligence and Android AI: Building for the New Platforms
The two largest mobile platforms now ship local AI as part of the operating system. The opportunity for app developers is real, the constraints are real, and the patterns are still settling. Here is the working version for 2026.
- Cross Platform and Mobile Development
Subscription Apps on iOS: StoreKit 2 in Practice
StoreKit 2 is Apple's modern subscription API and it changes how iOS apps handle purchases, renewals, and entitlements. Here is what actually matters.