Firebase Dynamic Links Are Going Away: Top Alternatives

In May 2023, Google announced that Firebase Dynamic Links (FDL) would be deprecated with no replacement. As of today, the countdown is real: all existing FDL links will stop working on August 25, 2025: just over 100 days away.

This guide is for Flutter developers looking to migrate from Firebase Dynamic Links to other deep linking options, whether you need simple link routing or advanced features like deferred deep linking and install attribution.


What Are Dynamic Links (and Why Do They Matter)?

Dynamic links are essential for apps that care about:

  • Seamless onboarding: Open to the right screen after install
  • Marketing & attribution: Track installs from ads or QR codes
  • Cross-platform consistency: One link that works on iOS, Android, and web
  • In-app navigation: Route users to specific content via URLs

Typical Flow of a Dynamic Link

  1. User taps a link (e.g. from email, ad, or QR code)
  2. If the app is installed → it opens to the correct screen
    If not → user goes to the App Store / Play Store
  3. After install, the app opens to the linked screen (if deferred linking is supported)

Post August 25, 2025: All Firebase Dynamic Links will stop working

  • Web: Shows a 404 page
  • Mobile SDKs: Return 400 errors

Why is Google Deprecating FDL?

Google hasn’t given a full reason, but the ecosystem is moving toward native deep linking standards:

  • 🔗 App Links (Android)
  • 🍎 Universal Links (iOS)

These are more privacy-safe, OS-supported, and less reliant on a third-party intermediary.

🛠️ Your Deep Linking Options (in Flutter)

Depending on your needs, you can go native or use a third-party SDK.

Option A: Native Deep Links

App Links (Android) + Universal Links (iOS)
For simple, direct in-app routing. No analytics or deferred linking.

Setup in 3 Steps:

1. Host Digital Asset Files

  • Android:
    URL: https://yourdomain.com/.well-known/assetlinks.json
  • iOS:
    URL: https://yourdomain.com/.well-known/apple-app-site-association

2. Sample File for Android

jsonCopyEdit[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.app",
      "sha256_cert_fingerprints": ["YOUR_SHA256_HASH"]
    }
  }
]

3. Sample File for iOS

jsonCopyEdit{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOUR_TEAM_ID.com.example.app",
        "paths": [ "/promo/*" ]
      }
    ]
  }
}

4. Flutter Routing with go_router

dartCopyEditfinal router = GoRouter(
  routes: [
    GoRoute(
      path: '/',
      builder: (_, __) => HomeScreen(),
      routes: [
        GoRoute(
          path: 'promo',
          builder: (_, __) => PromoScreen(),
        ),
      ],
    ),
  ],
);

🚫 What You Don’t Get with Native Links:

  • No deferred deep linking (new users won’t land on the right screen after install)
  • No campaign tracking or attribution
  • No short link generation

Option B: Use a Deep Linking SDK (for deferred linking + analytics)

PlatformKey Features
Branch.ioDeferred links, custom domains, short links, analytics
AppsFlyerDeep links + full-funnel ad attribution & campaign insights
AdjustAttribution, fraud detection, mobile analytics
KochavaInstall tracking, QR support, SMS/Email linking
BitlySimple branded short links + analytics

These SDKs are your best bet if you need install tracking, deferred links, or marketing attribution.

🔁 Migrating from Firebase Dynamic Links

Step 1: Export Your FDLs

From the Firebase console, download all existing links via CSV.

Step 2: Choose the Right Path

Your App Needs…Recommended Solution
Simple routing onlyApp Links / Universal Links
Deferred deep linkingBranch / AppsFlyer / Adjust
QR Codes + marketing analyticsKochava / Bitly / AppsFlyer
Campaign performance trackingAppsFlyer / Branch

Step 3: Update Your Flutter App

  • Remove FDL SDKs & dependencies
  • Add the new provider’s Flutter SDK
  • Update link routing logic (e.g. using getInitialLink, go_router, or provider-specific handlers)
  • Test on iOS & Android, with and without app pre-installed

Bonus: Real-World Example

Let’s say you’re running an event app:

  • You want to send new users a link to a specific event
  • If the app is installed → they open directly to the event
  • If not → they go to the App Store, install, and still land on the right event

➡️ Use Branch.io or AppsFlyer, which support deferred deep linking, attribution, and short links.

Best Practices

  • Use HTTPS and custom domains for all links
  • Test fallback behavior (broken link ≠ broken UX)
  • Track link performance in dashboards (especially during launch campaigns)
  • Secure your asset files: they control your app’s linking permissions

📚 Resources & Links

⚠️ Final Reminder

All Firebase Dynamic Links will stop working on August 25, 2025.
Start migrating now to avoid broken user experiences, lost attribution data, and failed campaigns.


Share your love
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x