Associated Domains Validator

iOS Universal Links and Android App Links rely on `apple-app-site-association` and `digital asset links` JSON served over HTTPS with correct content types, redirects, and caching. Compare origin responses with Apple’s CDN view to catch policy mismatches before users fall back to Safari.

How to use

  1. Enter every domain you declare under Associated Domains or Android intent filters, including staging and regional hosts.
  2. Review HTTP status, JSON shape, app identifiers, path wildcards, team IDs, and SHA-256 signing fingerprints side by side with vendor guidance.
  3. Fix headers, redeploy, then retest with an on-device tap after caches propagate; update entitlements when bundle IDs or fingerprints rotate.

FAQ

Why does iOS still launch Safari for my links?
Typical causes are missing/invalid AASA at `/.well-known/` or root, wrong `Content-Type`, redirect loops, oversized payloads, or bundle identifiers that do not match the entitlement. Compare Apple CDN snapshots to origin to detect stale caches.
Must Android and Apple files list the same paths?
Platforms differ: iOS needs `applinks` entries with app IDs and path rules; Android needs `package_name` plus verified signing certs. Keep both aligned with your routing matrix but follow each schema separately.
How long do AASA/CDN caches linger?
Apple caches aggressively; delays are common after fixes. Track response headers, bump app versions for entitlements, and retest periodically rather than assuming instant invalidation.

Associated Domains Diagnostics Engine

Blazing fast, concurrent audit of iOS Universal Links & Android App Links, bypassing CORS to sync and diff directly with official Apple CDN cached endpoints.

~/tools/associated-domains $ ./diagnose
terminal_diagnostics.sh
// Enter domain above and click start to run diagnostics...
// Diagnostics report is compiled after analysis runs...
// Diagnostics report is compiled after analysis runs...
// Diagnostics report is compiled after analysis runs...
// Source JSON code is shown after diagnostic finishes...

πŸ“– Associated Domains Ops Wiki & Tech Guides

// An all-in-one guide to iOS Universal Links and Android App Links for dev & devops.

🍎 iOS Universal Links Workflow

Universal Links allow website URLs to seamlessly launch your app on iOS without passing through Safari.

Core Workflow:

  1. Entitlements Config: Declare domain as applinks:yourdomain.com in Xcode Associated Domains.
  2. Silent Fetching: Upon app install, iOS queries Apple CDN (app-site-association.cdn-apple.com) to download your AASA file.
  3. AppID Matching: iOS validates the AASA schema. If matched, deep-linking rules are registered on the device.
  4. Instant Launching: Clicking matching URLs instantly triggers your local app.
πŸ€– Android App Links Workflow

App Links on Android auto-verify domain ownership, launching target intents without popups.

Core Workflow:

  1. Manifest Declaration: Set android:autoVerify="true" inside your intent-filter in AndroidManifest.xml.
  2. Auto-verification: On app install, Package Manager issues HTTPS GET to /.well-known/assetlinks.json.
  3. Affinity Registered: App is configured as the default handler once package_name and SHA-256 match perfectly.
5 Common Pitfalls of Associated Domains (Ops Survival Kit)
1. Redirect Chains

Operating systems and Apple bots strictly prohibit HTTP 301/302 redirections along the retrieval paths, including naked HTTP to HTTPS or trailing slash additions.

2. Invalid Content-Type

AASA response headers must present application/json or application/pkcs7-mime. Android must be application/json. text/plain will be rejected.

3. Trailing Commas & Typos

AASA files must comply strictly with JSON specs. Trailing commas, full-width quotes, and comments will cause parsing crashes, neutralizing Universal Links.

4. Heavy CDN Propagation

Apple CDN maintains strict cache-lifespans up to 24 hours. Developers can toggle Developer Mode on target iOS devices to bypass CDN during staging.

5. Untrusted HTTPS / SSL

If your origin features expired, self-signed, or un-trusted certificates, Apple/Google nodes will block connections, causing Universal Links to fail.