Skip to content

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 → Flinku deepLink
  • st (social title) → ogTitle
  • sd (social description) → ogDescription
  • si (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

  1. Create a Flinku project and note your subdomain (e.g. yourapp.flku.dev).
  2. For each FDL URL, extract the long link parameters and map them using the table above.
  3. Create the equivalent link via POST /api/links or the dashboard.
  4. Update marketing assets, emails, and store listings to use the new short URLs.
  5. 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)

dart
final dynamicLinks = FirebaseDynamicLinks.instance;
final linkData = await dynamicLinks.getInitialLink();
if (linkData != null) {
  final Uri deepLink = linkData.link;
  navigateTo(deepLink.path);
}

Flinku (new)

dart
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
      
      .

The modern Firebase Dynamic Links replacement.