Firebase Dynamic Links is no longer a service you can build on. Google's own FAQ set its shutdown for 25 August 2025 and says every clicked link then returns an HTTP 404 to the user, on both page.link subdomains and custom domains.
Short answer: to replace it, move to a third-party deep linking provider if you need deferred deep links and link analytics, or to plain Universal Links and App Links if you only need to open an app that is already installed. Google's FAQ names Adjust, Airbridge, AppsFlyer, Bitly, Branch, Kochava and Singular as providers with similar functionality, and says they "have not been vetted by Google". Linkrunner is another option, and the comparison below treats it like the rest.
That is a hard failure, not a slow decline: a QR code, onboarding email or influencer bio that still points to a Dynamic Link sends the person tapping it to an error page. This guide covers what changed, what to compare, how to audit your exposure and how to migrate.
What Is a Firebase Dynamic Links Replacement, and What Did the Shutdown Change?
A Firebase Dynamic Links replacement is a deep linking service that routes a link to the right app screen on iOS, Android and web, including after a fresh install.
A Dynamic Link opened the right screen in an installed app, sent new users to the App Store or Google Play, and carried the destination through the install. That last part is deferred deep linking. The FAQ lists it as a feature: a continuation of the journey after the user downloads and installs the app. It does not name a built-in Google replacement for it.
According to the Firebase Dynamic Links FAQ:
- Links stop resolving. Links served on custom domains and page.link subdomains return a 404.
- The APIs fail. The Short Links API and Link Stats API return 400 or 403, with errors starting gradually on 25 August 2025 and reaching all requests.
- page.link domains go away. The FAQ says they "will no longer be available".
- Link metadata is deleted. Domain and link metadata is marked for deletion and purged under Google's data retention policy.
What Breaks When Your Links Return 404
- Paid campaigns, CRM, push, WhatsApp and SMS templates keep sending dead links until someone edits each one.
- QR codes on packaging, menus and posters cannot be edited after printing, so they usually cost the most to fix.
- Social bios and store listing text often hold forgotten links.
- Deferred deep links. The FAQ's SDK tables say first-open attribution on iOS emits no error but returns an object with empty data, and on Android the task reports success with empty data. The app does not crash. New users simply open to the default screen, and the referral code or product page that brought them in is lost.
- Attribution. Dynamic Links gave link-level click counts, not campaign-level install and revenue attribution. With the APIs off, even that data has stopped.
- Firebase Authentication. Email link sign-in and similar flows keep working only if you upgrade to the latest Authentication SDKs. Older app versions stop working for them.
What Should You Migrate To?
Two questions decide the route. Do users need to land in the right screen after a fresh install (deferred deep linking)? And do you need to know which campaign drove the install (attribution)?
Each row below is limited to what the vendor's own page said when read on 10 November 2026. "Not stated" means the page did not say, not that the feature is missing.
| Option | Deferred deep links | Attribution | Custom domain | Pricing model |
|---|---|---|---|---|
| Universal Links and App Links only | No, installed app only (per Google's FAQ) | None | Your own domain | Free |
| Linkrunner | Built in, every link | Click to install to signup to revenue | Branded domain on every plan | Free to 25k attributed installs, then $0.012 per install, dropping at scale |
| Singular | "Easy deep linking and deferred deep-linking" on Free | Not stated on the pricing page | Not stated | Free (15k paid conversions), then $0.05 per conversion |
| Kochava | "SmartLinks (Deep Linking + QR Codes)" on Free; deferred not stated | Not stated on the pricing page | Not stated | Free (10k conversions a month), paid from $500 a month |
| Airbridge | Deferred deep links on Core, plus short links and QR codes | Not stated on the pricing page | Not stated | From $40 a month, 30-day trial, no annual contract |
| AppsFlyer | Not stated on the pricing page | Not stated | Not stated | Free Zero plan, pay-as-you-go Growth, no prices shown |
| Branch | Not stated; "Deep Linking" listed as a product | Not stated | Not stated | Trial on Basics, no prices shown |
| Adjust | Pricing page unavailable when checked | Not read | Not read | Not read |
How to read it:
- Universal Links and App Links are enough if every user already has the app. They carry nothing through an install. Universal Links cover iOS and App Links cover Android.
- A link tool alone replaces the routing. A mobile measurement platform with deep linking also ties the click to the install and downstream events, so you do not swap one measurement gap for another.
- Pricing models differ (per install, per conversion, monthly fee). Compare at your own volume, not the headline rate.
For deeper comparisons, see 8 best deep linking tools, Branch alternatives and which deep linking tools are actually free. To pick on your own criteria, use how to choose a deep linking tool. For the mechanics of deferral, read how deferred deep links preserve context through install. For a step by step plan, see Switch MMP's guide to moving off Firebase Dynamic Links, and to compare replacements, Deep Linking Tools on replacing Firebase Dynamic Links.
Audit Checklist: Find Every Dynamic Link You Still Depend On
Run this before you touch the SDK. QR and CRM channels are the ones most often missed.
Codebase
- Search for
DynamicLinksandfirebase.dynamicLinksimports. - Check the Podfile and build.gradle for Dynamic Links dependencies.
- Review the AppDelegate and MainActivity handlers that read incoming links.
- Check whether Firebase Authentication email links rely on them.
- If you used a custom domain on Firebase Hosting, review the Dynamic Links rewrite rules in firebase.json. The FAQ says you may need to update them to keep the same domain and path prefix with another provider.
Domains and link data
- List every page.link prefix and custom domain.
- Export link metadata through the Firebase export guide. It uses Google Takeout, needs owner permissions on the project and produces one CSV per domain, which can take up to a day.
Channels
- Paid campaign destination URLs.
- Email, push, WhatsApp and SMS templates.
- QR codes on print and out-of-home material.
- Social bios, partner links, store listing copy.
Record channel, in-app destination and parameters for each link. That table is your migration map.
Migration Checklist
- Freeze new Dynamic Link usage. Done when nobody can create links on old domains or templates.
- Build the migration map from the audit: old link, channel, destination screen, parameters, owner.
- Set up a domain you own. Configure DNS and SSL, and publish the apple-app-site-association and assetlinks.json files. Done when both files resolve over HTTPS.
- Swap the SDK. Remove the Dynamic Links dependency and handlers, add the new SDK, and route direct and deferred opens through one handler that reads the same parameters.
- Wire up the app side, where most failures happen. Across more than 10 customer groups in our support history, the most common deep link failure was the app receiving a Universal Link or App Link but never passing the URL to the SDK's
handleDeeplink, on cold start, on warm start or for links on a second domain. Call it on both starts and for every link domain, after SDK initialisation, and readgetAttributionDataon the first open after install. Move the lookup to app start, not a screen that loads after onboarding. - Handle Firebase Authentication email links by upgrading the Authentication SDKs, as the FAQ describes.
- Recreate links channel by channel: live paid campaigns first, then CRM templates, then social and partner links.
- Replace QR codes at the next print run, using a domain you control so future changes need no reprint.
- Test on real devices: app installed and not installed, iOS and Android, and in-app browsers. Done when each lands on the intended screen with parameters intact.
- Validate attribution. Click a test link, install, and confirm the install and first events land against the right campaign.
- Remove the Dynamic Links SDK and delete leftover URL prefixes once nothing depends on them.
Where Linkrunner Fits
Linkrunner is a mobile and web attribution platform (the Web SDK is in beta) that unifies deep linking and attribution in one SDK. Links are dynamic and deferred by default, with Universal Links, App Links and branded short links on custom domains, and each click is tied to installs, in-app events and revenue. Its Firebase migration page says most teams go live the same day, fully live within a week, with existing URL paths preserved. That is a vendor claim, so confirm your own paths in a test.
Pricing starts at 25k free attributed installs, then $0.012 down to $0.008 per attributed install, postpaid, with no separate deep linking charge. Stratzy is one team that moved off Firebase Dynamic Links to Linkrunner and, with attribution in place, could see which campaigns drove higher ROAS. Setup is in the deferred deep linking docs and the deep linking setup docs.
Frequently Asked Questions
What replaced Firebase Dynamic Links?
Nothing from Google replaces deferred deep linking. Its FAQ points to App Links and Universal Links for the installed-app case, and to third-party providers for similar functionality.
When did Firebase Dynamic Links shut down?
The FAQ sets the date at 25 August 2025, with errors rolling out gradually and reaching all requests after that. Clicked links return an HTTP 404.
Can I keep my page.link domain?
The FAQ says page.link domains will no longer be available. Use a domain you own for the replacement.
Can I keep my existing short link paths?
Only if you control the domain, and only with a provider that supports your path format. Linkrunner states it preserves existing URL paths in a migration. Test a sample of old paths before cutover.
Are Universal Links and App Links enough on their own?
Only if every user already has the app. They carry no context through an install and give no attribution.
How long does migration take?
Most teams integrate the Linkrunner SDK the same day and are fully live within a week. Time on other providers depends on their setup.
Your Next Step
The shutdown date has passed, so every day of waiting means broken links live today. Run the audit this week, fix paid and CRM links first, and plan QR replacements for the next print run. If you want deep linking and attribution in one place, request a demo from Linkrunner and walk through your migration map with the team.
