Published on

Firebase Dynamic Links: How to Use 2026 Deep Link Alternatives

Firebase Dynamic Links were officially retired by Google in August 2025, but you can achieve the exact same "deep linking" (sending users to specific content inside your app) using modern Firebase App Check and Android App Links. By following this updated 2026 workflow, you can create smart links that survive the app installation process in under 30 minutes. These links automatically detect if a user has your app installed, redirecting them to the Play Store if they don't, or opening the specific in-app page if they do.

What you will need

Before starting, ensure your development environment is up to date for 2026 standards.

RequirementVersion/Detail
Android StudioLadybug 2024.2.1 or newer
Android SDKAPI Level 35 (Android 15) or higher
Firebase BoMVersion 33.0.0+
DomainA verified web domain (e.g., yoursite.com)
Programming LanguageKotlin 2.0+

The original Dynamic Links service relied on tracking techniques that became restricted by modern privacy standards. In 2026, we use App Links (on Android) and Universal Links (on iOS), which are more secure because they require a verified connection between your website and your app.

These modern links are faster and more reliable because they are handled directly by the operating system rather than a middle-man redirect service. Using Firebase today primarily involves using Firebase Hosting to serve the "association files" that prove you own both the website and the app.

How do you set up the Firebase environment?

The first step is connecting your Android project to the Firebase Console. This creates a secure bridge for your data.

Step 1: Go to the Firebase Console and create a new project.

Step 2: Register your Android app by entering your Package Name (e.g., com.yourname.appname).

Step 3: Download the google-services.json file and place it in your app's app/ folder.

Step 4: In your root-level build.gradle.kts file, add the Google services plugin.

// Root build.gradle.kts
plugins {
    id("com.google.gms.google-services") version "4.4.2" apply false
}

Step 5: In your app-level build.gradle.kts, add the Firebase BoM (Bill of Materials - a tool that manages library versions for you).

// App build.gradle.kts
dependencies {
    // Import the BoM to manage versions automatically
    implementation(platform("com.google.firebase:firebase-bom:33.4.0"))
    
    // Add Firebase Analytics (required for link tracking)
    implementation("com.google.firebase:firebase-analytics")
}

For a link to open your app directly, Android needs proof that the website owner allows it. This is done through a json file called assetlinks.json.

Step 1: Generate your SHA-256 fingerprint (a unique digital signature for your app) in Android Studio by clicking the "Gradle" tab and running the signingReport task.

Step 2: In the Firebase Console, go to Project Settings and paste this SHA-256 fingerprint into your Android app configuration.

Step 3: Firebase Hosting will now automatically host the required verification file at https://your-project.web.app/.well-known/assetlinks.json.

Step 4: You can verify this is working by visiting that URL in your browser; you should see a JSON object containing your package name.

Once the OS recognizes the link, your app needs to know what to do when it opens. We use an Intent Filter (a declaration in your code that says "I can handle this type of data").

Step 1: Open your AndroidManifest.xml file.

Step 2: Add an <intent-filter> tag inside your main activity. Set android:autoVerify="true" so the phone checks your website for permission automatically.

<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" />
    <!-- Replace with your actual domain -->
    <data android:scheme="https" android:host="example.com" />
</intent-filter>

Step 3: In your Activity (the screen that opens), use the Intent to grab the URL.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    
    // Get the data from the intent that started the activity
    val action: String? = intent?.action
    val data: Uri? = intent?.data

    if (Intent.ACTION_VIEW == action && data != null) {
        // Extract a specific ID from the URL, like example.com/product/123
        val productId = data.lastPathSegment
        // Now you can use this ID to show the right product
        navigateToProduct(productId)
    }
}

What are the common gotchas to watch for?

It is normal to feel frustrated if the link doesn't open the app immediately. Deep linking is sensitive to small errors.

  • The "AutoVerify" delay: When you first install the app, Android takes a few seconds to reach out to the internet and verify your assetlinks.json file. If you try the link too fast, it might open in the browser instead.
  • Incorrect SHA-256: If you use the "Debug" key during development but forget to add the "Release" key from the Google Play Console later, your links will stop working for real users.
  • Missing HTTPS: Modern Android versions require https. If your link uses http, the OS will often block the direct-to-app transition for security reasons.

In our experience, the most common reason for failure is a typo in the AndroidManifest.xml host name, so double-check that your domain matches exactly.

You don't need to send a real text message to test your links. You can use the ADB (Android Debug Bridge - a command-line tool that lets you communicate with your device).

Run this command in your terminal while your phone is plugged in:

adb shell am start -W -a android.intent.action.VIEW -d "https://your-domain.com/path"

If everything is set up correctly, your app should pop open instantly on your phone. If it opens the web browser instead, go back and check your Firebase SHA-256 settings.

Next Steps

Now that you have basic deep linking working, you should explore how to track these clicks. You can use Firebase Analytics to see which links are driving the most traffic to your app. You might also want to look into "Deferred Deep Linking," which handles users who haven't installed the app yet by passing the link data through the Play Store installation process.

official Firebase App Check documentation


Read the Firebase Documentation