Launch offer: the first 1,000 users get Business free. Claim your spot →
All posts
Deep linkingBy the directinapp team7 min read

iOS Universal Links, explained without the Apple-docs headache

Universal Links are how a normal https link opens your iOS app instead of Safari. The concept is simple; Apple's setup is where people lose a day. Here's the plain version.

A hand holding a space-grey iPhone
Photo by Bagus Hernawan on Unsplash

A Universal Link is a standard https URL that opens your iOS app when it's installed and loads the matching web page when it isn't. You make it work by hosting an apple-app-site-association file on your domain and adding an Associated Domains entitlement to the app. iOS verifies the pairing, so only your app can intercept your domain's links — and there's no separate scheme and no dead end when the app is missing.


Universal Links are Apple's answer to a decade of flaky deep links. The idea is almost boring: use a normal web link, but let the app grab it when it's installed. The reason people dread them isn't the concept — it's the two-sided setup and the silent way it fails. Let's demystify it.

The one-sentence model

A Universal Link is just https://yourdomain.com/something. If your app is installed and has claimed that domain, iOS opens the app straight to the matching screen. If not, Safari loads the page at that URL like any link. One URL, two outcomes, no custom scheme in sight.

The two pieces that make it work

First, a file called apple-app-site-association (no extension), served over https from the domain root or /.well-known/, listing your app's ID and which paths it handles. Second, an Associated Domains entitlement in the app that declares applinks:yourdomain.com.

iOS cross-checks the two: the site vouches for the app, the app claims the site. If both agree, the link is trusted and unforgeable.

Why Apple bothered

The old custom scheme (myapp://) let any app claim any name and died with no fallback. Universal Links fix both: ownership is verified against a real domain you control, and because the link is https it always has a web page to fall back to. No more JavaScript timers trying to guess whether the app opened.

Where it quietly breaks

The failure modes are almost always the file. Serving apple-app-site-association with the wrong content-type, behind a redirect, or missing the exact app ID and path patterns — any of these and iOS just uses Safari, silently. There is also a first-launch quirk: iOS fetches the file at install time, so changes can take a while to propagate. And links tapped inside some in-app browsers still won’t hand off. Universal Links are far more reliable than the old way, not magic.

If you don’t own the destination app

You can only set up Universal Links for an app you control. Linking someone to Instagram, YouTube, or your Shopify store means you can't publish their apple-app-site-association. A routing service like directinapp handles the correct iOS open-in-app behavior per destination and falls back to the web when there's no app — no entitlement, no SDK, no file to babysit.

Found this useful? Tell Google to show you more of it.

Add us as a preferred source

Related guides

Put this into practice

Create smart short links that open the right app, with analytics built in. No credit card required.

Start free