Bidev
AdvancedNavigation & Routing

How does deep linking work in Flutter?

Short Answer

Deep linking means the OS can open your app directly to a specific screen from an external URL or link tap, requiring platform-level configuration (Android intent filters, iOS Universal Links) in addition to in-app routing logic mapping the incoming URL to the right screen.

On Android, you declare an intent-filter in AndroidManifest.xml specifying the scheme/host your app should handle (either a custom scheme like myapp:// or, for Android App Links, https://yourdomain.com with domain verification via a hosted assetlinks.json file). On iOS, Universal Links require an associated domain entitlement plus a hosted apple-app-site-association file proving domain ownership — without it, iOS won't route the link to your app.

Once the OS hands the URL to your app, your routing layer (commonly go_router, which has built-in deep-link support) parses the incoming path and navigates to the corresponding screen — the in-app part is the easy half; platform-level domain verification is usually where deep linking actually breaks in practice.

Common Mistakes

  • ×Testing only custom URL schemes and assuming https Universal Links/App Links will work the same way — they require separate domain verification setup.
  • ×Forgetting to host the required verification file at the exact expected path on the domain, which silently breaks App Links/Universal Links.

Interview Tips

  • Distinguish custom URL schemes (simpler, no domain verification) from Universal Links/App Links (require hosted verification files).