Docs
Universal Links and App Links: when you need them
Last updated
Universal Links (iPhone) and App Links (Android) open your app when it is already installed, from a link on a domain you own. A Jumper link does something else: it sends each phone to the right store, so people can install your app. You need Universal Links only if you want links that open screens inside an installed app.
How to decide
- You want installs from bios, posts, ads and posters. Use a Jumper link. It sends iPhones to the App Store and Android phones to Google Play, and works inside Instagram and TikTok.
- You want a link to open a screen in the installed app. Set up Universal Links and App Links on your own domain, with the two files below.
- You want both. Use both: your own domain for links inside the app experience, a Jumper link wherever the goal is an install.
What Universal Links and App Links do
A Universal Link is a normal https address on your website. When your app is installed and the website lists the app in a small file, iOS opens the app instead of the web page. App Links are the same idea on Android. When the app is not installed, both fall back to the web page at that address.
They need a domain you control, a file on that domain, settings in your app, and a new app release. They do not send anyone to a store by themselves.
What a Jumper link does
A Jumper link looks at the device and redirects it: iPhone to the App Store, Android to Google Play, Huawei, Samsung and Windows to their stores, and computers to your website or your app’s landing page. If the app is installed, the store page shows an Open button.
It needs nothing in your app. It never opens the app directly and never opens a particular screen.
How they combine
They do not get in each other’s way. Put Universal Links and App Links on your own domain for links that should open the app, such as password resets or shared items. Use a Jumper link where you want installs: bios, videos, ads, newsletters and print.
Store link or Universal Link?
What each kind of link does on a phone.
| Jumper link | Universal Links and App Links | |
|---|---|---|
| App not installed | Opens the right store | Opens your web page |
| App installed | Opens the store page, with an Open button | Opens the app |
| Opens a screen in the app | No | Yes, when the app handles the path |
| Inside Instagram and TikTok | Takes a route that reaches the store | Often opens as a web page |
| Changes to your app | None | Entitlements, intent filters and a release |
| Domain | oxi.cc, Jumper.to’s short domain | Your own domain |
Custom domains for Jumper links are planned; there is no date yet.
The iPhone file: apple-app-site-association
Serve this JSON at https://<your domain>/.well-known/apple-app-site-association, without a redirect. Replace the team id and bundle id with yours, and list the paths the app should open.
{
"applinks": {
"details": [
{
"appIDs": ["ABCDE12345.com.example.sunny"],
"components": [{ "/": "/open/*" }]
}
]
}
} The Android file: assetlinks.json
Serve this at https://<your domain>/.well-known/assetlinks.json. The fingerprint is the SHA-256 of your app signing key, from Play Console under App integrity.
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.sunny",
"sha256_cert_fingerprints": ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
}
}
] Common mistakes
A few things break Universal Links and App Links more often than anything else:
- The file sits behind a redirect, or is served with a login or a cookie wall.
- The app’s associated domains (iOS) or intent filters with autoVerify (Android) do not match the domain exactly, including www.
- The link is opened inside an in-app browser, which shows it as a web page.
- The link is typed into the address bar: iOS opens Universal Links only from taps, not from typed addresses.
Related
- In-app browsers and app store links
- Routing rules: which store each device gets
- See which campaign brings app installs
- Store URL formats
Questions
Does a Jumper link open my app if it is already installed?
No. A Jumper link always goes to the store page (or your website). On a phone with the app installed, the store shows an Open button. Opening the app straight from a link needs Universal Links or App Links on a domain you own.
Do I need Universal Links or App Links to use Jumper?
No. They solve a different problem: opening the installed app. Most links people share to get an app installed work fine without them.
Can I use Universal Links on a Jumper link?
Not yet. Universal Links and App Links work only on a domain whose files list your app, and links on oxi.cc belong to Jumper.to. Custom domains are planned; there is no date yet.
What is a deferred deep link, and does Jumper do it?
A deferred deep link remembers where someone wanted to go, sends them through the install, and opens that screen on first launch. Jumper does not do it. Deep-linking platforms with an SDK in your app do.
Why do Universal Links fail inside Instagram?
Many in-app browsers do not hand links to other apps, so a Universal Link opens as a web page instead. That is also why App Store links break there, and why Jumper takes its own route out of in-app browsers.
Where do the two files go?
apple-app-site-association goes at /.well-known/apple-app-site-association and assetlinks.json at /.well-known/assetlinks.json on your own domain, served over https without a redirect.