← Back to list

How to Implement Flutter Dynamic Links Without Firebase (Complete Guide — 2025)

Dynamic links are crucial for providing a smooth user experience in mobile apps. They allow you to direct users to specific screens, even…

Pragnesh Palsana (APP DEVELOPER) in Easy Flutter · 2025-06-25 16:46 · 1 claps · 2.4 min read paywalled
#flutter #flutter-app-development #flutter-firebase #flutter-dynamic-link #flutter-deeplink
Open on Medium ↗
Wiki topics: UX · UI/UX Design 📱 · Mobile Development

How to Implement Flutter Dynamic Links Without Firebase (Complete Guide — 2025)

Dynamic links are crucial for providing a smooth user experience in mobile apps. They allow you to direct users to specific screens, even after the app is installed. While Firebase Dynamic Links is commonly used, many developers seek alternatives due to concerns around vendor lock-in, complexity, or data privacy.

In this article, we’ll guide you step-by-step on how to implement dynamic links in Flutter without using Firebase. We’ll use URL schemes, universal links, and some useful packages to achieve this functionality with full control.

Not a member? Click here to read free — and if you enjoy it, consider subscribing🔔 or ☕ buying me a coffee to support my writing!

Why Avoid Firebase for Dynamic Links?

There are several reasons why developers choose not to use Firebase:

  • Desire for full control over link structure and hosting
  • Concerns about data privacy or regulations (GDPR, HIPAA, etc.)
  • Need for a lightweight or backend-agnostic solution
  • Preference for self-hosted or custom backend setups

Fortunately, Flutter allows you to implement deep linking without Firebase using built-in tools and packages.

Method 1: Using Custom URL Schemes (For iOS and Android)

This approach works well when you control the app and want to trigger specific routes using links like myapp://profile/123.

Step 1: Define the URL scheme

For iOS:

In ios/Runner/Info.plist, add:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>myapp</string>
    </array>
  </dict>
</array>

For Android:

In android/app/src/main/AndroidManifest.xml, add inside the <activity> tag:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="myapp" />
</intent-filter>

Step 2: Handle incoming links in Flutter

Use the uni_links or receive_sharing_intent package to listen for incoming URLs.

Install with:

flutter pub add uni_links

In your Dart code:

import 'package:uni_links/uni_links.dart';

void initDeepLinking() {
  getInitialUri().then((uri) {
    if (uri != null) {
      handleUri(uri);
    }
  });
  uriLinkStream.listen((Uri? uri) {
    if (uri != null) {
      handleUri(uri);
    }
  });
}
void handleUri(Uri uri) {
  final path = uri.path;
  if (path == '/profile/123') {
    // Navigate to profile screen
  }
}

Call initDeepLinking() in your initState() method.

Method 2: Using Universal Links (iOS) and App Links (Android)

This method enables links like https://yourdomain.com/product/99 to open your app.

Step 1: Set up a web domain

You must own a domain and set up verification files:

Step 2: Configure the app

For iOS:

Update Info.plist with:

<key>AssociatedDomains</key>
<array>
  <string>applinks:yourdomain.com</string>
</array>

For Android:

In AndroidManifest.xml, under the main activity, add:

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="https"
          android:host="yourdomain.com"
          android:pathPrefix="/" />
</intent-filter>

Step 3: Handle links in Flutter

Again, use the uni_links package as in Method 1.

Universal and App Links work similarly but offer more trust and flexibility in web-to-app flows. They’re ideal for production apps shared across social media, ads, and emails.

Testing Your Dynamic Links

  1. Use a custom URI like myapp://product/99 and tap on it from a browser or test message.
  2. For web-based links, send yourself a test email or click a URL from a browser to test Universal/App Links.
  3. Ensure app is installed, and link configurations are correct on both platforms.

Benefits of This Approach

  • No vendor lock-in (Firebase-free)
  • Fully customizable link structure
  • Easier GDPR compliance and user data control
  • Works even offline or with self-hosted backend

메타데이터
post_id
1c0aeea16cd7
slug
how-to-implement-flutter-dynamic-links-without-firebase-complete-guide-2025-1c0aeea16cd7
url
https://medium.com/easy-flutter/how-to-implement-flutter-dynamic-links-without-firebase-complete-guide-2025-1c0aeea16cd7
canonical_url
https://medium.com/easy-flutter/how-to-implement-flutter-dynamic-links-without-firebase-complete-guide-2025-1c0aeea16cd7
author_url
https://medium.com/@pragneshpalsana
status
ok
fetched_at
2026-08-17 12:50:20