Get started
BlogDeep links

Firebase Dynamic Links shut down: what to use now

The Unolink team7 min read
On this page
  1. What happened
  2. What Dynamic Links actually did
  3. Which replacement for which job
  4. Full replacements
  5. Where Unolink fits
  6. A migration checklist

For years, Firebase Dynamic Links was the default answer to "how do I make one link that works for my app on iPhone, Android and the web". It was free, it came with Firebase, and it handled deep links through an install. It's gone now. If you still have page.link addresses in old emails, printed QR codes or app code, they no longer work.

This post covers what happened, what each part of Dynamic Links did, and what replaces each part, so you only rebuild what you actually used.

What happened

So there's no grace period left, and no way to keep a page.link address alive. Anyone who taps one today sees an error. The only thing you can change is where you send people from now on.

One knock-on effect is easy to miss: Firebase Authentication's email link sign-in used Dynamic Links. Google's FAQ says email link sign-in keeps working, but only with the newer Authentication SDKs, and older app versions that weren't updated lose those features. If your app signs people in with a magic link, check that first.

"Dynamic Links" was really four features under one name. Most apps used one or two of them.

  1. Store routing. One address that sent iPhones to the App Store, Android phones to Google Play and computers to a website.
  2. Opening the app if it's installed. Tapping the link on a phone with the app opened the right screen inside it.
  3. Deferred deep links. Someone without the app tapped the link, installed the app, and on first open landed on the screen the link pointed to: an invite, a product, a shared list.
  4. Short links and basic click numbers.

Before choosing a replacement, go through your code and your marketing and write down which of the four you relied on. It decides how much work the migration is.

Which replacement for which job

Each Dynamic Links feature and its replacement, detailed below.
FeatureWhat to useEffortSource
Opening the app if it's installedUniversal Links (iOS) and App Links (Android), on your own domainAn afternoon for most apps, and freefirebase.google.com
Store routingA smart link: a few lines on your own site, or a link toolA few lines of code, or none with a tool
Deferred deep linksAndroid: built into Google Play. iPhone: fingerprinting or a paste promptStraightforward on Android
Short links and numbersAlmost any link tool; an SDK for installs and paying usersThe easiest to replace
All four, or paid campaign attributionA full deep-linking or measurement platformTest it with your own app firstfirebase.google.com
Each Dynamic Links feature and its replacement, detailed below.

For feature 2, Google's own recommendation is the platforms' built-in mechanisms: Universal Links on iOS and App Links on Android. Both let an ordinary https:// address on your own domain open your app directly when it's installed, and fall back to the website when it isn't.

They need a little setup:

  • On iOS, an apple-app-site-association file on your domain and the Associated Domains entitlement in the app.
  • On Android, an assetlinks.json file on your domain and intent filters with autoVerify in your manifest.
  • Code in the app that reads the incoming URL and opens the right screen.

It's an afternoon of work for most apps, it costs nothing, and you own the domain, so nobody can shut it down again. Firebase Hosting can serve the two verification files if your site already lives there.

For feature 1, you need a link that reads the device and redirects to the right store. You can write one yourself on your website in a few lines, or use any of the many smart-link tools. The guide One link for App Store and Google Play covers both options and the details that trip people up (iPads that report themselves as Macs, link-preview bots, in-app browsers).

Feature 3 is where the platforms differ most.

  • On Android it's straightforward. Google Play supports it out of the box, so a new user can land on the screen the link pointed to, with no prompts. Our post Deferred deep links on Android, explained walks through it.
  • On iPhone there's no equivalent. Apple passes nothing from a link through an App Store install, so tools that promise deferred deep links on iPhone rely on fingerprinting or a paste prompt. Deferred deep linking explained compares the options, including the one Apple forbids.

If your iPhone flow depended on deferred deep links, consider whether it can work another way: ask new users to sign in or enter an invite code, and pick up the context from their account.

Feature 4 is the easiest to replace: almost every link tool shortens and counts. The better question is which numbers you need. Clicks tell you who tapped. Dynamic Links never told you much more than that. If you want to know which link brought installs, and which brought people who paid, you need a tool with an SDK in your app, and that's where a migration can leave you better off than before.

Full replacements

If you used all four features, or you also need attribution for paid campaigns, a full deep-linking or measurement platform replaces Dynamic Links in one go. Google's FAQ lists Adjust, Airbridge, AppsFlyer, Bitly, Branch, Kochava and Singular, and since the shutdown many smaller tools have appeared that aim specifically at former Dynamic Links users. They differ a lot in price, in iPhone behaviour and in how much setup they need, so test them with your own app before moving everything.

Unolink isn't a drop-in replacement for all of Dynamic Links. It replaces the parts most apps actually used, and adds what Dynamic Links never showed you: what people did after the install.

What it replaces:

  • Store routing, on every plan, Free included: one link per app that sends iPhone and iPad to the App Store, Android to Google Play and computers to your website or desktop store. Known bots and link previews are never sent to a store and never counted. Setup takes a couple of minutes.
  • Short links with numbers: a campaign link per post, creator or ad, each with clicks by country, platform, referrer and UTM tag.
  • QR codes for every link, so the next set of printed codes points at an address you control.
  • Deferred deep links on Android (Pro and up, with the SDK): give a link a destination screen and new Android users land on it after installing. See Android deferred deep links.

What it adds:

  • Which link brought each install, on iPhone and Android, without fingerprinting (Pro and up, with the SDK).
  • What happened next, per link: onboarding, paywall views and purchases, with RevenueCat revenue arriving by itself once connected. You see which posts, creators and ads bring paying users, not just taps.
  • Landing pages and a developer page (Indie and up), for ads and for your bio.
  • A flat, published price: Free to start, then $6, $19 or $49 a month. No per-click or per-install fees and no sales call. See pricing.

What it doesn't do:

  • Universal Links and App Links. Unolink links always go through the store; set up the platforms' own links on your domain for opening an installed app.
  • Deferred deep links on iPhone. Unolink doesn't fingerprint devices and doesn't use a paste prompt, so there are no deferred deep links on iPhone.
  • Links on your own domain. Links live on go.unolink.dev today. Custom domains are coming soon.

A common setup for small teams: Universal Links and App Links on your own domain for people who have the app, and a Unolink link in bios, ads and QR codes for people who don't.

A migration checklist

  1. Find every page.link address. Search your codebase, your email templates, your website, your app store listings and your printed material. Old QR codes are the hardest to find and the most expensive to replace.
  2. List which of the four features each link used. Most links in marketing only needed store routing.
  3. Set up Universal Links and App Links if people with the app installed need to land on a screen inside it.
  4. Make a smart link per place you share it, so each bio, newsletter and poster gets its own numbers.
  5. Update your Firebase Authentication SDK if you use email link sign-in.
  6. Replace links in old app versions where you can. App code that builds page.link addresses at runtime will keep producing broken links until people update.
  7. Reprint QR codes last, pointing them at a link you control, so the next change never needs a reprint.

Share this article

Keep reading