Yashveer Singh
Connect
<- All posts

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.
PatternUse case
Universal links and App LinksDefault for any URL that should open the app
Custom URL schemeLegacy. Use only when universal will not work.
Deferred deep linkMarketing flow before app install
Push notification with deep linkNotification routing
Email with deep linkLifecycle email routing
Share sheet with deep linkUser 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

ItemRequired for
Associated Domains entitlementiOS universal links
apple-app-site-association fileiOS universal links
Intent filters in AndroidManifestAndroid App Links
assetlinks.json fileAndroid App Links
Universal Links handler in codeBoth platforms
Authentication routingBoth platforms
Deferred deep link integrationMarketing flows
Analytics taggingAttribution
Per environment configurationStaging and production
Test on fresh device installVerification

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

  1. Universal links configured but never tested on a fresh install.
  2. apple-app-site-association on staging but not production.
  3. No authentication routing. Links land on login then are forgotten.
  4. No deferred deep linking. Marketing breaks for new installs.
  5. No analytics tagging. Cannot measure conversion.
  6. Custom URL schemes only. Wrong default in 2026.
  7. No per environment configuration. Confusion follows.
  8. Treating deep linking as one time configuration.

A one week setup plan

  1. Day one. Configure Associated Domains on iOS. Host apple-app-site-association.
  2. Day two. Configure intent filters on Android. Host assetlinks.json.
  3. Day three. Implement the universal links handler in the app.
  4. Day four. Implement authentication routing.
  5. Day five. Integrate deferred deep linking service.
  6. Day six. Add analytics tagging convention.
  7. 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.

FAQ

Frequently asked

Author

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.

Related reading