App Links are properly configured for Android
Why it matters
Without assetlinks.json published at /.well-known/assetlinks.json on your domain, Android cannot cryptographically verify that your app owns the domain, so the OS falls back to showing an app-chooser dialog (or opens the browser) every time a user taps an HTTPS link. This breaks email confirmation flows, referral links, and payment redirects — all of which depend on landing users directly in the app. The Android App Links spec (android-app-links) mandates both the JSON file and intent filter configuration; missing either half means app link verification fails silently in production.
Severity rationale
High because missing assetlinks.json causes Android to skip app-link verification entirely, routing users to a browser or app-chooser on every HTTPS deep link instead of directly into the app.
Remediation
Serve assetlinks.json at https://<your-domain>/.well-known/assetlinks.json with Content-Type: application/json. Get your SHA-256 fingerprint from your release keystore using keytool -list -v -keystore release.keystore.
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourcompany.appname",
"sha256_cert_fingerprints": [
"AA:BB:CC:..."
]
}
}
]
For Expo-managed builds, add the intent filter to app.json:
{
"android": {
"intentFilters": [
{
"action": "VIEW",
"autoVerify": true,
"data": [{ "scheme": "https", "host": "myapp.com" }],
"category": ["BROWSABLE", "DEFAULT"]
}
]
}
}
autoVerify: true is required — without it, Android skips domain verification even if the file is present.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Mobile Navigation & Deep Linking Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- external · android-app-links — Handling Android App Links
Taxons
History
- 2026-04-18·v1.0.0·Initial import from mobile-navigation-linking·automated