Migration
Moving off Firebase Dynamic Links.
Dynamic Links is shut down. This is what changes, what you lose, and what the code looks like afterwards — not an argument about whether to move, which was decided for you.
What a Dynamic Link was doing for you
Three jobs in one URL, which is why replacing it feels larger than it is:
- A short address that resolved to a long one.
- A platform decision — open the app if installed, otherwise the App Store or Play Store, otherwise a web page.
- A payload that survived the install, so a person who did not have the app still landed on the right screen after installing it. This is the part people mean when they say deferred deep linking, and it is the part that is hard.
We do all three. The first two are configuration; the third is deferred matching, and it works to a measured degree rather than perfectly. That page carries the rates, including the case where the method does badly, because a migration decision made on an assumed number is worse than one made on a low one.
Your existing links
Links already printed or shared cannot be rescued by us. A Dynamic Link points at a Firebase domain we do not control, and no provider can make somebody else’s dead domain resolve. Anyone claiming otherwise is describing a redirect they cannot install.
What you can do depends on which domain you used:
- A custom domain you own — point it at your link host and the old paths can resolve again. You keep the printed links. This is the good case and it is worth checking before anything else.
- A
page.linksubdomain — the domain was Google’s. Those URLs are gone, and the work is reissuing anything durable: QR codes on physical things, links in a printed catalogue, an affiliate’s saved links.
What does not carry over
Said plainly, because finding out after migrating is worse:
- Dynamic Links’ analytics. We record clicks, installs and the attribution between them. We are not an analytics suite and do not pretend to replace one.
- The Firebase console integration. Links live in our dashboard and in our API. If your workflow was “create a link inside Firebase alongside everything else”, that workflow ends.
- Social preview tags set per link. Links do not carry their own preview image. If yours did, check that before you migrate rather than after.
The code change
Smaller than the planning. Where you had the Dynamic Links SDK listening for an incoming link, you have ours:
import { QubeRoute } from '@quberoute/sdk'
const qr = await QubeRoute.init({ key: 'qr_live_YOUR_KEY' })
qr.onLink(link => {
// The parameters you put on the link, on first launch too.
router.navigate(link.params.screen)
})The same five lines on Capacitor, Cordova, React Native and the web, with the framework-specific step in the quickstart. Flutter has no Dart package and uses the REST API — that is written up there too rather than left for you to discover.
What it costs
Dynamic Links was free, and we are not, which is the honest headline. Pricing is on the website with no sales call, and the free plan is a real plan rather than a trial.