Migrate
Migrating from Firebase Dynamic Links
Recreate your Firebase Dynamic Links in DL2App: what each parameter becomes, what cannot be brought back, and how to swap the SDK.
Firebase Dynamic Links has been shut down. This guide recreates your links’ behaviour in DL2App and replaces the SDK calls in your app.
How the import works
- Open your project, then Links, then Import, and pick the source.
- Give it your links (how depends on the source, below).
- Review. Every row says what will be created, and rows with problems say why. Nothing is created until you confirm, and existing links are never overwritten: a slug that is already used is either skipped or given a suffix, your choice.
- Import. Rejected rows can be downloaded as a CSV to fix and retry.
Imported links go through the same destination checks as links you create by hand, and count towards new-account limits.
Firebase has no export, so for this source you paste your long Dynamic Links, one per line (the form https://example.page.link/?link=…&apn=…). If you only have short links, expand them from your own records; they no longer resolve.
What each parameter becomes
| Parameter | Meaning | In DL2App |
|---|---|---|
link | The deep link your app opens | App path (its path) and link data (its query). Also the desktop and fallback URL when it is https. |
ofl | Where desktop visitors go | Desktop URL |
afl | Android, app not installed | Android URL (custom URL) |
ifl | iPhone, app not installed | iOS URL (custom URL) |
ipfl | iPad, app not installed | Used as the iOS URL when ifl is missing |
st, sd, si | Social title, description, image | Social preview title, description and image URL |
utm_source, utm_medium, utm_campaign, utm_term, utm_content | Campaign tags | Campaign tags |
apn, amv | Android package and minimum version | Set once for the project under Apps, not per link |
ibi, ipbi, isi, ius, imv | iOS bundle, App Store ID, URL scheme, minimum version | Set once for the project under Apps, not per link |
efr | Skip the preview page | Not needed; DL2App has no forced preview page |
at, ct, mt, pt | App Store Connect campaign tokens | Not carried over |
gclid | Google Ads click ID | Not carried over |
In your app
- Enter your iOS and Android app details once under Apps; they replace the per-link
apn,ibiandisiparameters. - Add the DL2App hosts to your associated domains and intent filters, next to or instead of the
page.linkones. - Replace the Firebase calls: where you handled
getInitialLink/onLink(orhandleUniversalLinkon iOS), register oneDL2.onLinklistener. It receives direct links and the deferred link after an install. See your platform’s setup page. - Your app used to receive the full
linkURL. It now receives its path and its query as data, sohttps://example.com/invite?code=42arrives as path/invitewith{ code: "42" }.
Differences to expect
- There is no forced preview page, so nothing replaces
efr=1. - Deferred deep linking on iOS has documented limits. Firebase had the same constraints; it did not publish them.
- Links tapped inside social apps get a hand-off page.