Feature Request: Android App Links (Verified Deep Links) Support
Summary
Add support for Android App Links with autoVerify="true" so that navigating to a user's self-hosted Seerr instance in a browser or from another app automatically opens the Seerr mobile app without a disambiguation dialog.
Motivation
Currently the app only registers a seerr:// custom URI scheme for deep linking. While this works when links are explicitly crafted with that scheme, it means:
- Navigating to
https://my-seerr-instance.example.com in a browser never offers to open the app
- Sharing standard
https:// links to Seerr content won't route to the app
- The user experience is inconsistent compared to apps like Jellyfin, Plex, etc. that intercept their server's URLs natively
Current Behaviour
The AndroidManifest.xml contains an https intent filter (line 20) but it has no android:host constraint and no android:autoVerify="true" attribute, so Android does not treat it as a verified App Link:
<!-- Current: unverified, no host binding -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent-filter>
Proposed Change
Add a verified App Links intent filter to the Expo config (app.json or app.config.js):
{
"android": {
"intentFilters": [
{
"action": "VIEW",
"autoVerify": true,
"data": [
{
"scheme": "https"
}
],
"category": ["BROWSABLE", "DEFAULT"]
}
]
}
}
This generates the following in AndroidManifest.xml after expo prebuild:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent-filter>
Instance-Side Configuration
Self-hosters would opt in by placing an assetlinks.json at /.well-known/assetlinks.json on their instance:
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "dev.seerr.mobileapp",
"sha256_cert_fingerprints": [
"<SHA256_OF_RELEASE_SIGNING_CERT>"
]
}
}
]
The release signing certificate's SHA-256 fingerprint should be documented so instance operators can configure this correctly.
References
DISCLAIMER: The above was generated with the help of Claude Desktop.
Feature Request: Android App Links (Verified Deep Links) Support
Summary
Add support for Android App Links with
autoVerify="true"so that navigating to a user's self-hosted Seerr instance in a browser or from another app automatically opens the Seerr mobile app without a disambiguation dialog.Motivation
Currently the app only registers a
seerr://custom URI scheme for deep linking. While this works when links are explicitly crafted with that scheme, it means:https://my-seerr-instance.example.comin a browser never offers to open the apphttps://links to Seerr content won't route to the appCurrent Behaviour
The
AndroidManifest.xmlcontains anhttpsintent filter (line 20) but it has noandroid:hostconstraint and noandroid:autoVerify="true"attribute, so Android does not treat it as a verified App Link:Proposed Change
Add a verified App Links intent filter to the Expo config (
app.jsonorapp.config.js):{ "android": { "intentFilters": [ { "action": "VIEW", "autoVerify": true, "data": [ { "scheme": "https" } ], "category": ["BROWSABLE", "DEFAULT"] } ] } }This generates the following in
AndroidManifest.xmlafterexpo prebuild:Instance-Side Configuration
Self-hosters would opt in by placing an
assetlinks.jsonat/.well-known/assetlinks.jsonon their instance:[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "dev.seerr.mobileapp", "sha256_cert_fingerprints": [ "<SHA256_OF_RELEASE_SIGNING_CERT>" ] } } ]The release signing certificate's SHA-256 fingerprint should be documented so instance operators can configure this correctly.
References
DISCLAIMER: The above was generated with the help of Claude Desktop.