BlogEngineering
Engineering

The Firebase Dynamic Links replacement: a migration guide

Firebase Dynamic Links is shut down. What you lost, how to replace deferred deep linking and smart routing, and how to migrate without breaking live links.

AAhsanLinkTrail EngineeringJun 27, 2026·Updated Jul 31, 2026·7 min read

If you shipped a mobile app in the last decade, you probably used Firebase Dynamic Links. And if you're reading this, you've hit the wall: FDL has been shut down, those links no longer resolve, and the deferred deep linking and attribution you quietly depended on went with them. This is the practical guide to replacing it. (For a side-by-side feature comparison, see our Firebase Dynamic Links alternative page.)

Google deprecated FDL and then turned it off. The official line was that iOS Universal Links and Android App Links had matured enough to handle direct deep linking on their own — which is true, as far as it goes. The problem is that FDL was never just deep linking. The parts teams leaned on hardest were the parts the OS still doesn't give you for free.

What you actually lose

  • Deferred deep linking — context surviving the install gap, so a fresh install lands on the right screen. The OS does not do this for you.
  • Cross-platform smart routing — one link resolving to iOS, Android, or web by device.
  • Click analytics and the hosted short-link domain (your page.link / app.goo.gl URLs).
  • The behind-the-scenes hosting of apple-app-site-association and assetlinks.json that FDL handled silently.

Mapping FDL concepts to LinkTrail

The good news is that the replacement is close to one-to-one — LinkTrail was built for exactly the surface FDL left behind.

  • FDL dynamic link → LinkTrail smart link (same idea: one URL, device-aware routing).
  • page.link / *.app.goo.gl domain → your own custom link domain, branded and verified.
  • FDL deferred deep linking → LinkTrail deferred deep linking, with a richer first-open payload.
  • FDL link analytics → attribution with match type plus real-time webhooks into your own warehouse.
  • Manually managed association files → managed AASA and assetlinks.json, regenerated when you add a bundle ID.

The migration, step by step

  1. 1Inventory your existing FDL links and the paths they pointed to — exports, email templates, printed QR codes, store listings.
  2. 2Stand up a LinkTrail link domain (ideally the custom domain you already used with FDL, so existing branded links can be repointed).
  3. 3Recreate your link rules: set the smart-routing destinations and the deep link paths.
  4. 4Swap the SDK — replace the FDL handler with the LinkTrail deep-link handler (the quickstart covers both platforms).
  5. 5Repoint DNS / set redirects so old short links resolve to the new resolver.
  6. 6Verify Universal Links and App Links open the app on a clean install before you cut over traffic.

How long does the migration take?

For a single app with a normal set of link rules, plan a sprint: a few days of engineering and the rest in verification. The code change is genuinely small — one SDK swap and one handler. What consumes the time is finding every link you have in the wild and proving the association files work on clean installs.

PhaseTypical effortWhere it goes wrong
Link inventoryHalf a dayForgetting printed QR codes, store listings, old email templates
Domain setupAn hour, plus DNS propagationUsing a new domain instead of repointing the old one
Recreating link rulesHalf a daySilently dropping a fallback destination
SDK swapA few hours per platformLeaving the old FDL handler in place alongside the new one
VerificationTwo to three daysTesting on a device that already cached a verdict

Swapping the SDK

// Before — Firebase Dynamic Links
FirebaseDynamicLinks.dynamicLinks().handleUniversalLink(url) { link, _ in
  if let deep = link?.url { router.navigate(to: deep.path) }
}

// After — LinkTrail
LinkTrail.shared?.onLink { link, source in
  router.navigate(to: link.path, data: link.customData)
}

You cannot edit a link that's printed on a box or sitting in a three-year-old email. If you used a custom domain with FDL, repoint that domain at the new resolver and map old paths to new with a catch-all — existing URLs keep working, now served by LinkTrail. If you only ever used the default page.link domain, those URLs are gone; focus on updating every surface you still control and accept the long tail.

Verify before you trust

curl -sI https://yourapp.linktrail.io/.well-known/apple-app-site-association | grep -i content-type
# Expect: content-type: application/json

adb shell pm verify-app-links --re-verify com.example.app

Partly. Direct deep linking never needed FDL — plain Universal Links and App Links are free forever if you host the association files yourself. What has no free OS-level replacement is deferred deep linking, smart routing, and attribution. LinkTrail's free plan covers 5,000 MAU and 25K clicks a month, which is enough to migrate a small app end to end before paying anything.

Should I build the replacement in-house?

You can, and for a narrow case you probably should. If you only need smart routing — send iOS here, Android there, desktop to the web — that is a redirect service and a weekend of work. Host the association files yourself, keep the logic in one route handler, and you are done.

The calculus changes at deferred deep linking. Now you need to persist click context, match it to a first launch you cannot correlate through the store, handle the Play Install Referrer on Android, decide what to do on iOS where no equivalent exists, and make a consent-aware judgement about probabilistic matching that stands up to a privacy review. That is not a weekend, and it is not a build-once system — it needs maintaining every time Apple or Google changes the rules.

The honest split: build it if routing is all you need and you want zero dependencies. Buy it the moment deferred context or attribution matters to revenue.

Firebase Dynamic Links didn't die because deep linking got easy. It died because Google stopped doing the hard 20% — which is exactly the 20% you still need.
A

Ahsan

LinkTrail Engineering

Ahsan is on the LinkTrail engineering team and the engineer behind its SDKs for iOS, Android, React Native, and Flutter. He started the company after the Firebase Dynamic Links shutdown left teams with links that opened the store and forgot where the user was going — and after too many vendor calls that ended without a price. He writes here about deferred deep linking, install attribution after ATT, and the parts of the mobile growth stack the category tends to leave vague.

All posts by Ahsan
Tagged#Firebase#Migration#Deep linking#Universal Links