Migrate Firebase Dynamic Links to Smler.io: 2026 API Guide

Firebase Dynamic Links has been offline since 2025. This 2026 guide covers migrating to Smler.io: SDK removal, API mapping, domains, and troubleshooting.


Migrate Firebase Dynamic Links to Smler.io: 2026 API Guide

What changed since this guide was first published:

  • Firebase Dynamic Links shut down completely in August 2025 — that's now more than a year behind us, not a future risk.

  • Teams that migrated early are past the disruption. Teams that didn't are now dealing with a second wave: broken links surfacing in old campaigns, packaging, and app store listings nobody thought to check.

  • This update adds SDK removal steps, a deeper link-inventory process, and two more troubleshooting scenarios we kept seeing reported after the original migration wave.

If you're weighing platforms, we compare Branch.io to Smler below so you can decide before committing. Before the technical steps, it's worth reading our broader deferred deep linking guide and our roundup of device-based redirect options.

Firebase Dynamic Links has been fully offline for more than a year — there's no legacy API to fall back on, no export console, and no support channel. If you're reading this because a link stopped working, that's why. Any *.page.link URL, or a custom domain that was pointed at Firebase's Dynamic Links service, returns an error or a blank page instead of routing users.

The practical impact this far out from the shutdown:

  • Old marketing assets are still silently broken. QR codes on packaging, print ads, and old emails that used Dynamic Links don't route anywhere, and often nobody notices until a customer complains.

  • App Store and Play Store listings that referenced Dynamic Links in screenshots, descriptions, or support docs still need updating if that cleanup never happened.

  • Deferred deep linking flows built around Firebase's SDK need a full replacement, not a patch — the SDK itself is now dead weight in your app binary if it's still installed.

If you're still comparing options at this stage, our tier list of free Firebase Dynamic Links alternatives and our breakdown of the cheapest Firebase alternative for startups are worth a look before you commit to a rebuild. For a primer on what you're actually replacing, our guide to deep linking in mobile apps covers the fundamentals.

Branch.io vs Smler.io: What You Need to Know Before Migrating

Branch.io is the more established platform for enterprise attribution; Smler is the leaner choice for teams that just need reliable deep linking, URL shortening, and analytics. Here's the honest breakdown.

Branch.io Advantages

  • Mature attribution SDK: Industry-leading mobile measurement partner (MMP) capabilities with advanced attribution modeling

  • Cross-platform journey orchestration: Sophisticated user journey tracking across web, email, SMS, and in-app channels

  • Deep integration ecosystem: Pre-built integrations with major ad networks and marketing automation tools

  • Advanced audience segmentation: Build user segments based on deep link interactions and app behavior

  • Enterprise support infrastructure: Dedicated account managers and custom SLAs for large organizations

Branch.io Disadvantages

  • Pricing complexity: Enterprise-tier pricing scales quickly once you need custom domains, webhooks, or meaningful MAU limits

  • Feature lock-in: Data exports, advanced analytics, and webhook customization are often gated behind higher tiers

  • Over-engineering for simple use cases: If you only need URL shortening and basic deep linking, the setup overhead outweighs the benefit

  • Attribution-first focus: Heavily optimized for ad measurement, which is overkill if deep linking is your primary need

  • Vendor dependency: Proprietary SDK implementation makes any future migration harder

Smler.io Advantages

  • Transparent, click-based pricing: No hidden MAU charges or features locked behind enterprise-only tiers

  • Fast migration: Direct API compatibility with Firebase-style link creation means minimal code changes

  • Full feature access: Deferred deep linking, link-level analytics, custom domains, and webhooks available on paid plans, not gated behind an enterprise tier

  • TRAI compliance built in: Native support for regulatory-compliant SMS campaigns with custom headers

  • No vendor lock-in: Standard deep linking protocols mean you're never boxed into one platform

  • Developer-friendly docs: Clean API reference with code samples for iOS and Android

Bottom line: Choose Branch.io if you're an enterprise with complex attribution needs and a large annual budget for deep linking infrastructure. Choose Smler if you need reliable deep linking, URL shortening, and analytics without that overhead. For most teams migrating off Firebase, Smler covers the core functionality at a fraction of the cost.

You can no longer export Dynamic Links data directly from Firebase — the console and APIs that supported this have been offline since the shutdown. If you exported your link configuration before it went dark, use that file. If you didn't, you'll need to rebuild your link inventory from secondary sources, and more than a year on, that inventory is often scattered across teams who've since forgotten it exists.

Where to Find Your Old Link Structure

  1. Marketing platforms: Email tools, ad managers, and social schedulers that stored the original Dynamic Links you sent out — search sent-campaign archives, not just active ones.

  2. Your app codebase: Search for page.link or your custom domain string across the repo, CMS, and any internal wikis or README files.

  3. Analytics exports: Firebase Analytics exports, GA4, or internal event logging that recorded which Dynamic Links drove installs before the shutdown.

  4. Print and packaging assets: QR codes on physical materials often point to Dynamic Links that need to be reissued — pull a physical inventory list if you have one, since these are the links most likely to still be "live" in the wild.

  5. Customer support tickets: If customers have been reporting broken links, your support queue is effectively a live list of exactly which paths still need rebuilding first — prioritize those.

Document Your Link Structure

For each link you find, record:

  • The original long URL and its short link

  • Custom URL parameters and UTM tags

  • Platform-specific fallback URLs (App Store, Play Store, web fallback)

  • Social meta tags (OG titles, descriptions, images)

  • Campaign associations and naming conventions

  • Deep link paths and custom schemes (e.g., yourapp://product/12345)

This inventory is tedious but it's the foundation for everything else — you can't recreate working links in Smler until you know what the old ones were supposed to do. If you're unsure whether a given link needs to be a simple redirect or a full deferred deep link, our guide to deep linking vs. deferred deep linking is a useful checkpoint before you rebuild anything.

If your app binary still ships the Firebase Dynamic Links SDK, remove it — it's dead code calling a dead endpoint. This step gets skipped constantly because the app "still works" without it doing anything visible, but it adds startup overhead, unnecessary permissions, and confusion for any developer who opens the codebase later.

  • iOS (Swift/Objective-C): Remove the Dynamic Links pod or SPM package, delete calls to DynamicLinks.performDiagnostics and handleUniversalLink, and replace them with standard Universal Links handling in your SceneDelegate or AppDelegate.

  • Android (Kotlin/Java): Remove the firebase-dynamic-links Gradle dependency and any FirebaseDynamicLinks.getInstance() calls, replacing them with App Links intent filters.

  • React Native: If you used @react-native-firebase/dynamic-links, uninstall it and rewire your linking config against standard URL schemes and Universal/App Links — our React Native deep linking guide walks through the replacement setup.

  • Flutter: Remove the firebase_dynamic_links package from pubspec.yaml and any related plugin registration, then follow our Flutter deep linking guide to wire up the replacement handling.

Do this before you go looking for redirect loops or missing parameters later — half the "mysterious" bugs teams report during migration turn out to be leftover Firebase SDK code intercepting a link before Smler's handler ever gets a chance to run.

Step 2: Custom Domain Transfer and DNS Configuration

One of the biggest migration pitfalls is custom domain handling. Firebase let you use domains like link.yourbrand.com instead of generic *.page.link addresses. Moving these to Smler requires careful DNS reconfiguration.

Common Domain Transfer Pitfalls

  1. Propagation delays: DNS changes can take up to 24-48 hours to fully propagate. Plan the cutover during a low-traffic window so users don't hit broken links mid-change.

  2. Existing link breakage: Every previously shared Firebase link using your custom domain is already dead, since Firebase's service has been offline for over a year. Recreate the same URL paths in Smler so old links resolve correctly going forward.

  3. Root domain vs subdomain: Smler requires a subdomain (like link.yourbrand.com) rather than a bare root domain. If you were using a root domain with Firebase, update your links to the subdomain pattern.

Smler supports custom branded domains through a standard CNAME setup, and if your root domain needs to redirect somewhere specific, root routing handles that without extra infrastructure.

The core of your migration is translating Firebase Dynamic Links API calls into Smler equivalents. Firebase's link-creation API has been retired since the shutdown, so there's nothing to call there anymore — the work is entirely on the Smler side now.

Creating Links in Smler

Full request and payload examples for creating deep links are in the Postman API docs. Smler builds on Universal Links (iOS) and App Links (Android) rather than a proprietary SDK, so the amount of integration code you need is smaller than with most Firebase alternatives. If you want the underlying mechanics before you start wiring up calls, our technical guide to how deep linking works is a useful primer.

Retrieving Link Data: getLink API

Firebase's link-stats endpoint (shown below for reference) is no longer callable — it's included only so you can see what you're replacing:

// Firebase - Get link stats (retired, no longer callable) 
const getFirebaseLinkStats = async (shortLink) => { 
  const response = await fetch( `https://firebasedynamiclinks.googleapis.com/v1/${shortLink}/linkStats?durationDays=7`, 
    { headers: { 'Authorization': 'Bearer ' + authToken } } ); 
  return await response.json(); 
};

Smler approach: hit the get-long-URL endpoint with the short code to retrieve the corresponding long URL and its metadata. The exact request structure is documented in the API docs.

Step 4: Testing Your Migration

Thorough testing is what prevents a migration from creating a second wave of broken links. Test on real devices, not just simulators, and don't sign off on a migration until you've tested a cold install, not just a warm re-open.

Smler Dashboard Testing

  1. Link validation: Go to Smler dashboard → Links → Create new link, and enable deep linking when you generate the URL.

  2. Device testing:

    • iOS: test with the app installed and not installed. Confirm Universal Links open the app directly without a Safari redirect — our iOS deep link testing guide covers the full checklist.

    • Android: confirm App Links open the app automatically without a disambiguation dialog — see our Android testing guide for device-specific edge cases.

    • Desktop: confirm web fallback URLs display correctly.

  3. Deep link routing: verify custom parameters pass through correctly, test deferred deep linking by installing via a link and confirming routing on first open, and validate that deep link paths land on the correct in-app content.

Analytics: What You Get With Smler

Metric

Firebase Analytics (historical)

Smler Analytics

Click tracking

Real-time, unlimited history

Real-time, with retention tied to your plan

Geographic data

Country-level

Country and city-level

Device breakdown

Platform and OS version

Platform, OS, device model, browser

Conversion tracking

Basic event tracking

Funnel-style analysis with attribution

Data export

CSV export

API export

For teams that just want geographic breakdowns, device tracking, and click trends without attribution complexity, Smler's link-level analytics cover it without tier restrictions.

Step 5: Troubleshooting Common Migration Errors

Redirect loops between app and browser

Symptom: Link clicks bounce between your app and web browser instead of settling.

Cause: Misconfigured Universal Links (iOS) or App Links (Android) with incorrect path patterns in your app's association file — often left over from the Firebase SDK removal step.

Deep link parameters not passing through

Symptom: The app opens correctly, but custom parameters (product IDs, user tokens) are missing.

Cause: Usually the wrong endpoint is being hit, or the payload is missing the parameter field entirely.

Solution: Send the same payload directly to Smler's API and inspect the response — the mismatch is almost always visible immediately.

Custom domain shows an SSL warning

Symptom: The custom domain resolves but browsers flag a certificate error.

Cause: DNS propagation hasn't finished, or the CNAME record points to the wrong target.

Solution: Double-check the CNAME value against your Smler dashboard settings and wait out the propagation window before assuming it's broken.

Analytics show fewer clicks than expected

Symptom: Click counts in Smler look lower than what you saw in Firebase Analytics.

Cause: Firebase and Smler count clicks differently (bot filtering, pre-fetch requests, and deduplication windows vary by platform).

Solution: Compare trends over a full week rather than absolute numbers day one — the shapes should match even if the totals don't line up exactly.

Old QR codes still print the dead Firebase domain

Symptom: A link works fine when tested from a browser, but scanning an old physical QR code still fails.

Cause: The QR code image itself is encoded with the old page.link URL, not a redirect — fixing the destination server doesn't fix an already-printed code.

Solution: Reissue the QR code pointing at your new Smler short link. There's no way to make an old printed code resolve to a new destination.

Deferred deep link fires but lands on the wrong screen

Symptom: The app opens after install, but the user lands on the home screen instead of the intended product or content page.

Cause: The deep link path was captured correctly, but the app's routing logic isn't reading it before the initial render — a common gap when replacing Firebase's SDK-managed callback with a manual implementation.

Solution: Confirm the deep link path is available to your router before the first screen mounts, not after.

Feature and Pricing Comparison: Branch vs Smler

Feature

Branch (Free)

Branch (Paid)

Smler

Deep Linking

✅ Basic

✅ Advanced

✅ Full

Deferred Deep Links

✅

✅

✅

Custom Domains

❌

✅ Enterprise pricing

✅ Included on paid plans

Link Analytics

📊 Basic, limited history

📊 Advanced

📊 Full

Webhooks

❌

✅ Higher tiers

✅ All plans

Bulk Shortening

❌

✅

✅ CSV/XLSX

Attribution/MMP

❌

✅ Enterprise

❌

For exact current pricing on either platform, check each provider's pricing page directly — figures move often enough that we won't quote them here. As a rule of thumb, Branch's paid tiers target enterprise attribution budgets, while Smler's plans start affordably and scale with click volume rather than app-wide MAU.

When to Choose Branch vs Smler

Choose Branch if you:

  • Need enterprise-grade mobile attribution and MMP capabilities

  • Run large-scale paid advertising campaigns across multiple ad networks

  • Require sophisticated cross-channel attribution and journey mapping

  • Have budget for enterprise-level deep linking infrastructure

Choose Smler if you:

  • Primarily need URL shortening with deep linking capabilities

  • Want simple, click-based pricing without MAU complexity

  • Need TRAI compliance for SMS campaigns in India

  • Prefer straightforward API integration without heavy SDK dependencies

  • Need bulk URL shortening for campaigns

Quick Smler Migration Checklist

  1. Sign up at Smler

  2. Get an API key from dashboard → Settings → API Keys

  3. Remove the old Firebase SDK from your app codebase before wiring up anything new

  4. Update link creation code to call Smler's endpoints instead of the retired Firebase API

  5. Configure custom domains via the dashboard with CNAME records

  6. Test deep links on real iOS and Android devices

Once your API key and domain are set up, most teams have working links within the hour — the exact timeline depends mostly on how much link inventory you're reconstructing from Step 1. See the iOS and Android integration guides for the implementation details.

Is Firebase Dynamic Links still working at all?
No. Firebase Dynamic Links shut down completely in August 2025 and has now been offline for over a year. There is no legacy API, console, or fallback — any link still pointing to a page.link domain or a custom domain tied to Firebase is broken.

Can I still export my old Dynamic Links data?
Not through Firebase directly. If you exported your configuration before the shutdown, use that file. Otherwise, reconstruct your link inventory from marketing tools, app code, analytics exports, support tickets, and physical assets like packaging QR codes.

How long does migrating from Firebase to Smler take?
Most of the time goes into rebuilding your link inventory, not the technical integration itself. Once you have your data, connecting Smler's API, setting up a custom domain, and testing on devices typically takes well under an hour.

Do I need to remove the Firebase Dynamic Links SDK from my app?
Yes. Even though the SDK can't reach Firebase's servers anymore, leaving it installed adds unnecessary weight and can intercept links before your new handler runs, causing confusing bugs. Remove the dependency and any related calls as part of the migration, not after.

Is Branch.io or Smler better for replacing Firebase Dynamic Links?
Branch fits teams needing enterprise attribution and ad-network integrations at enterprise budgets. Smler fits teams that mainly need reliable URL shortening, deep linking, custom domains, and analytics without that overhead or pricing complexity.

Will my old Firebase short links work again after I migrate?
Only if you recreate the same URL paths in Smler using your custom domain. Firebase's service itself won't come back online, but you can make a previously shared link resolve correctly again by rebuilding it under the same path.

Conclusion: Choose Your Migration Path Wisely

Migrating off Firebase Dynamic Links isn't optional anymore — the service has been offline for more than a year, and every day without a replacement means more broken links in the wild. Branch.io offers strong enterprise capabilities but comes with enterprise-level complexity and cost.

For most teams that relied on Firebase for URL shortening, deep linking, and basic analytics, Branch is significant over-engineering. Smler covers the core functionality — intelligent short links, deferred deep linking, custom domains, and detailed analytics — without the attribution complexity or price tag.

Next Steps

Whether you land on Branch for enterprise attribution or Smler for cost-effective deep linking, the priority now is closing the gap left by Firebase before more of your links quietly fail.

Ready to Migrate from Firebase?

Smler makes Firebase Dynamic Links migration straightforward with API compatibility, transparent pricing, and full deep linking capabilities.

View Pricing Plans | Read Documentation | Contact Support

Published with LeafPad