Firebase Migration
Move from Firebase Dynamic Links to Flinku projects, short links, and SDKs.
Why migrate
Google shut down Firebase Dynamic Links in August 2025. Existing FDL URLs eventually stop resolving, so teams need a replacement for deferred deep linking, social preview metadata, and campaign parameters. Flinku covers those flows with a project subdomain, dashboard, and native SDKs.
Migration tool in the dashboard
Open app.flinku.dev/migrate (or Migrate from the workspace). Paste Firebase Dynamic Link URLs or upload a list; Flinku previews field mapping and can create Flinku links in bulk for a target project.
What gets converted
link→ FlinkudeepLinkst(social title) →ogTitlesd(social description) →ogDescriptionsi(social image) →ogImageUrl- UTM query parameters →
utmSource, utmMedium, utmCampaign, etc.
Programmatic bulk conversion: POST /api/migration/convert. Preview a single URL with POST /api/migration/preview. Full schemas: Firebase migration API .
Manual migration for developers
- Create a Flinku project and note your subdomain (e.g.
yourapp.flku.dev). - For each FDL URL, extract the long link parameters and map them using the table above.
- Create the equivalent link via POST /api/links or the dashboard.
- Update marketing assets, emails, and store listings to use the new short URLs.
- Remove or gate old FDL domains in your app after traffic has moved.
SDK migration
Remove the Firebase Dynamic Links SDK from your app. Add the Flinku SDK for your platform ( Quick Start ), configure baseUrl, and replace initial-link handling with match() (or the native equivalent).
Code comparison: Firebase vs Flinku
Firebase (old)
final dynamicLinks = FirebaseDynamicLinks.instance;
final linkData = await dynamicLinks.getInitialLink();
if (linkData != null) {
final Uri deepLink = linkData.link;
navigateTo(deepLink.path);
}Flinku (new)
final flinku = Flinku(
userId: user.uid,
baseUrl: 'https://yourapp.flku.dev',
);
final link = await flinku.match();
if (link != null) {
navigateTo(link.deepLink, params: link.params);
}Tip: In current Flinku SDKs, match() returns a result object—typically check matched before reading deepLink and params. See
Flutter SDK
.