Key takeaways
- Deep linking failures fall into two classes: platform constraints that iOS and Android management, and implementation gaps your crew controls. Realizing which you’re coping with modifications the place you look first.
- Department hyperlinks use common hyperlinks and App Hyperlinks beneath the hood, with computerized fallback to URI schemes when these mechanisms fail. Prospects add their credentials to the Department Dashboard and Department handles the remainder.
- Even Department hyperlinks can break because of incorrect hyperlink configuration, a credential mismatch between the Department Dashboard and the app construct, and race situations within the app’s routing logic.
- If a Department hyperlink opens the app however lands on the fallacious display, begin with the Department Hyperlink Validator. If the app isn’t opening, the problem is commonly a credential mismatch within the Apple App Web site Affiliation (AASA) or DAL file.
Deep linking failures are a standard problem cell groups come to us with. The main points fluctuate, however the form of the issue is normally the identical: A hyperlink that labored high-quality in testing breaks in manufacturing. Or it really works on one system and never one other. Or it labored final month and nothing within the codebase modified.
What makes these failures particularly irritating is that they’re normally silent. When software program breaks, you get a sign you possibly can hint again to a trigger. With deep linking failures, you usually get none of that. The hyperlink simply doesn’t open the app, or the person lands within the fallacious place, and there’s nothing telling you why.
After working by means of these points with cell groups throughout industries, we’ve constructed up a transparent image of the place deep hyperlinks fail, why they fail, and what it takes to construct deep hyperlinks that maintain up in manufacturing.
Why do deep hyperlinks break?
Deep linking failures typically fall into two classes. The primary covers implementation gaps that your crew controls and may repair. The second addresses platform constraints that iOS and Android personal, that no software program growth package (SDK) can absolutely override, solely work round. Figuring out which class you’re coping with modifications the way you method the repair.
Most manufacturing failures contain some mixture of each.
iOS common hyperlinks
Common hyperlinks are Apple’s most popular mechanism for routing customers from the online into your app. They’re additionally one of many locations the place we see probably the most manufacturing failures. Understanding them entails separating two distinct failure factors.
The primary is whether or not the app opens in any respect. That is an iOS-level determination: Apple controls whether or not a common hyperlink opens the app or falls again to the browser. That call occurs earlier than your SDK will get concerned. The second is whether or not the app routes the person to the appropriate display as soon as it opens. That’s a unique drawback with completely different causes. Both the hyperlink knowledge isn’t being surfaced accurately, or the app’s routing logic isn’t dealing with the values it receives.
The AASA is the commonest perpetrator when the app isn’t opening. The AASA file is how iOS verifies that your app is permitted to deal with a given area. If it’s misconfigured, cached in a stale state, or served with the fallacious content material sort, iOS falls again to the browser with no indication that something went fallacious. The file can be cached on-device after set up, which suggests a configuration repair you deploy gained’t attain current customers till they replace the app.
Then there’s what we consider because the person intent drawback. iOS tracks habits over time, and if a person beforehand selected to open a hyperlink in Safari as an alternative of the app, iOS might deal with that as a standing desire and maintain routing to the browser on future faucets. That is the commonest clarification for hyperlinks that “randomly cease working” for particular customers when nothing has modified on the developer aspect.
In-app browsers add one other layer. Common hyperlinks often don’t hearth inside Instagram, TikTok, Fb, or Gmail as a result of these apps run embedded webviews that intercept the hyperlink earlier than iOS routing logic will get concerned. This is without doubt one of the more durable failure modes to catch in testing as a result of most QA occurs in Safari or Chrome, not inside a social app webview. In these eventualities, Department hyperlinks use URI schemes to open the app with the anticipated person expertise.
Deferred deep linking on iOS
Deferred deep linking is the post-install movement: A person faucets a hyperlink, doesn’t have the app, installs it from the App Retailer, after which will get routed to the appropriate content material. It’s one of many highest-value flows in cell progress, and on iOS post-iOS 14, it’s additionally one of many more durable ones to get proper.
Apple’s privateness modifications launched fingerprinting restrictions, Non-public Relay, and monitoring limitations that make it more durable to match a pre-install click on to a post-install session with confidence. Failed matching sends customers to the house display as an alternative of the content material they anticipated, with no indication that something went fallacious on their finish.
Department NativeLink solves this by utilizing the clipboard to facilitate deferred deep linking and assure 100% person matching →
Chilly begin timing is a separate however associated problem. A person faucets the hyperlink, the app launches, the deep linking SDK initializes asynchronously, and navigation logic runs. If routing fires earlier than the callback resolves, which is widespread on chilly begins, the person lands within the fallacious place. It is a widespread supply of “the hyperlink opens the app however not the appropriate display” reviews. It’s additionally why Department allows you to fetch the most recent referring parameters from the SDK all through the app session, not simply at initialization, in case your routing system wants extra time to startup.
Android App Hyperlinks
Android App Hyperlinks have their very own failure patterns. Digital Asset Hyperlinks configuration is the Android equal of the AASA file. If you happen to get it fallacious, the system falls again silently. Android’s system fragmentation provides one other layer, since routing habits that works on a Pixel can fail on sure Samsung or Xiaomi units because of OEM customizations.
Internet-to-app flows
Getting a person from a cell internet web page into your app sounds easy, however the routing chain has surprising failure factors.. Common hyperlinks don’t all the time hearth in a cell browser context, and fallback habits varies throughout units and OS variations. When one thing breaks, the person sometimes simply finally ends up on the internet with no apparent path ahead.
Department Banners get your highest-intent internet guests into your app with sensible, focused banners that deep hyperlink customers on to the content material they had been already in search of. →
In-app browsers and walled gardens
A big share of real-world hyperlink faucets don’t occur in Safari or Chrome. They occur inside Instagram, TikTok, Fb, Gmail, and different apps that run their very own embedded webviews. These environments intercept hyperlinks earlier than iOS or Android routing logic will get concerned, which suggests common hyperlinks usually by no means get an opportunity to fireside in any respect.
It is a widespread failure mode in manufacturing and one of many best to overlook in testing. Most QA occurs in a regular browser, however most actual person visitors doesn’t. Deep linking finest practices are inclined to concentrate on the anticipated path, and walled backyard habits is a unique drawback that wants its personal mitigation technique.
How Department handles widespread deep hyperlink failures
Department handles the technical complexity of deep linking so your crew doesn’t must. You add your app credentials to the Department Dashboard as soon as, and Department takes care of internet hosting the information that inform iOS and Android your app is permitted to deal with your hyperlinks, managing the fallback logic when the popular routing mechanism fails, and routing every click on by means of whichever mechanism will really work in that context.
Right here’s what that appears like beneath the hood: Once you arrange Department, you add your app credentials to the Department Dashboard: the Bundle ID and App Prefix for iOS, the package deal title and SHA256 for Android, and a URI scheme for fallback. Department makes use of these credentials to host the AASA file on iOS and the Digital Asset Hyperlinks file on Android, which allows Department hyperlinks to make use of common hyperlink performance on iOS and App Hyperlink performance on Android robotically.
When a person clicks a Department hyperlink, Department reads the context of that click on in actual time and routes by means of whichever mechanism is most certainly to work. In a regular cell browser, that’s a common hyperlink or App Hyperlink. Inside a walled backyard like Instagram or TikTok the place these mechanisms are blocked, Department falls again to the URI scheme. You don’t must handle that fallback logic; Department handles it primarily based on the place the hyperlink is clicked.
A typical deep hyperlink offers you one path. Department hyperlinks transfer by means of a fallback chain designed to get the person to the appropriate vacation spot even when the popular routing mechanism fails.
What causes Department hyperlinks to interrupt?
Department hyperlinks function throughout the constraints that Apple and Google impose, and people constraints create failure modes that no SDK can absolutely stop. When a Department hyperlink breaks, it’s normally certainly one of three issues:
- An incorrect hyperlink configuration like invalid syntax or lacking hyperlink knowledge
- A mismatch in credentials between the AASA/DAL file and the construct put in on the system (causes the app to not open when the hyperlink is clicked)
- A race situation within the app routing code making an attempt to route the person earlier than the deep hyperlink knowledge is made obtainable (commonest in cross-platform architectures like React Native)
The way to troubleshoot widespread Department hyperlink failures
If you happen to’re experiencing a deep linking problem, take these steps to grasp what’s inflicting the problem and tips on how to resolve it:
- Use the Department Hyperlink Validator to look at the hyperlink knowledge.
You are able to do this through the UI in Hyperlinks or by including &debug=1 to the top of a Department hyperlink. On the Hyperlink Validator display, you’ll see the hyperlink’s anticipated habits on numerous platforms, and the hyperlink knowledge included in it. Be certain that the hyperlink comprises the deep hyperlink knowledge, just like the $canonical_url or $deeplink_path, within the format that your app expects.

- If clicking the hyperlink doesn’t open the app, the basis trigger is probably going a difficulty with the AASA or DAL information.
On iOS, examine that the Bundle ID and App Prefix added on the Department Dashboard match up with those self same credentials for the construct you’re testing with. On Android, guarantee that the package deal title and SHA256 specified on the Department Dashboard match those used to signal your construct. Double examine that you simply’ve added a Department-specific URI scheme on the Department Dashboard in order that the app will open through URI scheme from locations like social platforms the place Common Hyperlinks and App Hyperlinks get blocked. To identify the mismatch, run Department’s Integration Validator automated testing instrument (Android | iOS).

- If the app opens however doesn’t route accurately, the problem is within the app code.
Allow logging within the Department SDK to examine whether or not the anticipated hyperlink knowledge is being retrieved, then use breakpoints in your code editor to hint the place the info is getting misplaced or parsed incorrectly. If you happen to’re testing a hyperlink from e-mail or adverts, attempt creating a brief hyperlink with the identical deep hyperlink knowledge to isolate whether or not the problem is particular to a product or hyperlink sort.
Use this chart that will help you debug points together with your deep hyperlinks.

Finest practices to keep away from deep hyperlink failures
- Use $canonical_url for deep linking at any time when the app has a corresponding internet vacation spot. It comprises the complete internet URL that the app can parse and route with. Your advertising crew gained’t want to tug in a developer each time a brand new route is added to the app. Many Department merchandise, like Electronic mail and Banners will robotically add the online URL to the Branchified hyperlink.
- All the time verify your app is utilizing the dwell Department key earlier than pushing to manufacturing. If hyperlinks labored in testing and broke after launch, a check key left within the construct is without doubt one of the first issues to examine.
- When parsing internet URL values in Department payloads, embrace logic to unencode URL-unsafe characters. Relying on how hyperlinks are created, internet URL values will sometimes embrace escape characters, and in case your routing logic isn’t set as much as deal with them, values gained’t be acknowledged and the deep hyperlink will fail silently.
- Construct a house display fallback into your routing logic. If a deep hyperlink worth isn’t acknowledged or is lacking, touchdown the person on the house display is considerably higher UX than a crash or an infinite spinner.
FAQs
Department hyperlinks work alongside iOS common hyperlinks and Android App Hyperlinks. Once you arrange Department, you add your app credentials to the Department Dashboard and Department hosts the AASA file on iOS and the Digital Asset Hyperlinks file on Android in your behalf. This permits Department hyperlinks to make use of common hyperlinks on iOS and App Hyperlinks on Android robotically. If these mechanisms fail, Department falls again to a URI scheme. You don’t handle that fallback logic; Department handles it primarily based on the context of the press.
You solely have to configure common hyperlinks, App Hyperlinks, or URI schemes exterior of Department when you could have current routing you don’t wish to migrate, or when you must deep hyperlink with Google Adverts or search engine optimisation. This requires internet hosting the AASA and DAL information by yourself top-level area slightly than Department’s.
Deep hyperlinks break in manufacturing for just a few causes that don’t present up in testing. Common hyperlinks behave otherwise contained in the social apps and e-mail shoppers the place most actual hyperlink faucets happen. Most QA occurs in Safari or Chrome as an alternative. AASA information are cached on-device after set up, so a configuration repair gained’t attain customers till they reinstall. Chilly begin timing points, the place navigation logic fires earlier than the callback resolves, are simple to overlook if the app is already working whenever you faucet the hyperlink throughout testing.
When a Department hyperlink opens the app however lands on the fallacious display, it’s sometimes certainly one of two issues. Both the hyperlink is lacking the deep hyperlink knowledge the app must route accurately, one thing the Department Hyperlink Validator can floor shortly, or the app’s routing logic is working earlier than Department has completed retrieving the hyperlink knowledge. The repair is to delay navigation till the Department callback has resolved slightly than assuming the info can be obtainable instantly on launch.
When deep hyperlinks cease working for particular customers however not others, the commonest clarification is iOS person intent monitoring. If a person beforehand selected to open a hyperlink in Safari as an alternative of the app, iOS might deal with that as a standing desire and maintain routing to the browser on future faucets, even when nothing has modified on the developer aspect. That is an iOS-level habits that sits exterior Department’s management, although Department’s fallback chain is designed to maximise the probabilities of the app opening even in these instances.
Deep hyperlinks don’t all the time work inside Instagram, TikTok, and Gmail. This is without doubt one of the commonest manufacturing failure modes. These apps run embedded webviews that intercept hyperlinks earlier than iOS or Android routing logic will get concerned, which suggests common hyperlinks usually by no means hearth. Department addresses this by falling again to a URI scheme in walled backyard contexts. You configure the URI scheme on the Department Dashboard, and Department makes use of it robotically when the popular routing mechanism is blocked.
