Skip to content
Tolinku
Tolinku
Sign In Start Free
Marketing · · 5 min read

Firebase App Indexing: What Replaced It and How to Migrate

By Tolinku Staff
|
Tolinku smart banners dashboard screenshot for marketing blog posts

Firebase App Indexing was Google's recommended way to surface Android app content in search results. It was part of the Firebase platform and worked alongside Firebase Dynamic Links to connect web content with in-app destinations. In August 2025, Google shut down Firebase Dynamic Links, and Firebase App Indexing went with it.

If you relied on Firebase App Indexing, your app content may have lost search visibility. This guide explains what Firebase App Indexing did, what has replaced it, and how to migrate. For the broader Firebase shutdown migration, see Firebase Dynamic Links shutdown. For the step-by-step migration, see Firebase Dynamic Links migration guide.

What Firebase App Indexing Did

Firebase App Indexing provided two capabilities:

1. App Indexing API

The App Indexing API let your app tell Google about content the user viewed. When a user opened a product page in your app, your app called the API to report the view:

// Old Firebase App Indexing code
import com.google.firebase.appindexing.FirebaseAppIndex
import com.google.firebase.appindexing.Indexable

class ProductActivity : AppCompatActivity() {
    override fun onStart() {
        super.onStart()

        val indexable = Indexable.Builder()
            .setName("Product Name")
            .setUrl("https://www.yourapp.com/products/123")
            .build()

        FirebaseAppIndex.getInstance(this).update(indexable)
    }

    override fun onStop() {
        super.onStop()
        FirebaseAppIndex.getInstance(this).remove("https://www.yourapp.com/products/123")
    }
}

This API reported viewed content to Google, which could then surface it in search results for other users.

Firebase App Indexing integrated with Firebase Dynamic Links to handle incoming deep links from search results. When a user tapped an app result in Google Search, Firebase handled the URL routing:

// Old Firebase deep link handling
FirebaseDynamicLinks.getInstance()
    .getDynamicLink(intent)
    .addOnSuccessListener { pendingDynamicLinkData ->
        val deepLink = pendingDynamicLinkData?.link
        if (deepLink != null) {
            navigateToContent(deepLink)
        }
    }

With Dynamic Links shut down, this code no longer works.

What Replaced Firebase App Indexing

Google did not provide a direct 1:1 replacement. Instead, the functionality is split across several systems:

Android App Links are the standard way to handle HTTPS deep links on Android. They existed before Firebase App Indexing and continue to work independently:

<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="www.yourapp.com"
          android:pathPrefix="/products" />
</intent-filter>

App Links require hosting a Digital Asset Links file (assetlinks.json) on your domain.

Web Markup + Search Console (Replaces App Indexing API)

The App Indexing API's function (telling Google about in-app content) is now handled by web-side markup:

  1. Structured data on your web pages declares that app alternatives exist.
  2. Alternate link tags point to your Android app.
  3. Search Console verifies the web-app connection.
<!-- Web page markup that replaces App Indexing API -->
<link rel="alternate" href="android-app://com.yourapp.android/https/www.yourapp.com/products/123" />

See Google App Indexing setup for the full implementation.

For the deep link creation, routing, and analytics that Firebase Dynamic Links provided, third-party platforms fill the gap. Tolinku handles the infrastructure: custom domains, verification file hosting, route configuration, and deep link analytics.

Migration Steps

Step 1: Remove Firebase App Indexing SDK

Remove the Firebase App Indexing dependency from your project:

// Remove from build.gradle
// implementation 'com.google.firebase:firebase-appindexing:20.0.0'

Remove all FirebaseAppIndex and Indexable code from your Activities.

If you were relying on Firebase Dynamic Links for deep link handling, switch to Android App Links:

  1. Add intent filters to your AndroidManifest.xml for each content type your app handles.
  2. Host assetlinks.json on your domain (or use a platform like Tolinku that hosts it automatically).
  3. Handle incoming intents in your Activities.
class ProductActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val uri = intent.data ?: return
        val productId = uri.lastPathSegment ?: return
        loadProduct(productId)
    }
}

Step 3: Add Web Markup

Replace the App Indexing API's content reporting with web-side markup:

  1. Add <link rel="alternate"> tags to your web pages.
  2. Add structured data with potentialAction for richer results.
  3. Submit your sitemap to Search Console with app link annotations.
<head>
  <link rel="alternate" href="android-app://com.yourapp.android/https/www.yourapp.com/products/123" />
</head>

Step 4: Verify in Search Console

  1. Open Google Search Console.
  2. Go to Settings > Associations.
  3. Link your Android app.
  4. Use the URL Inspection tool to verify that app link annotations are detected.

Step 5: Monitor App Search Traffic

After migration, monitor your app's search performance:

  • Check Search Console for app-specific impressions and clicks.
  • Compare with your pre-migration baseline.
  • If app impressions drop, verify that your web markup and assetlinks.json are correct.

What You Lose

Some Firebase App Indexing features have no direct replacement:

Personal Content Indexing

The App Indexing API could index personal/private content (messages, notes) that was only searchable on the user's device. The web markup approach only works for content that has a public web URL.

Alternative: Use CoreSpotlight on iOS and Android's on-device search APIs for personal content indexing.

Automatic Snippets

Firebase App Indexing automatically generated search snippets from indexed content. With web markup, you control snippets through your web page's metadata (title tag, meta description, structured data).

Firebase Console Analytics

Firebase App Indexing provided analytics in the Firebase Console showing how often your app appeared in search and how many clicks it received. This data now lives in Google Search Console instead.

Common Migration Issues

"My app stopped appearing in search results"

Most likely cause: your assetlinks.json file is not being served correctly. Verify:

curl -s "https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.yourapp.com&relation=delegate_permission/common.handle_all_urls"

If this returns an empty result, your verification file has a problem.

Your intent filters may not match the URL pattern, or App Links verification failed. Check:

adb shell pm get-app-links com.yourapp.android

Look for verified status on your domain.

"My search impressions dropped after migration"

Give it 2-4 weeks. Google needs to re-crawl your pages and detect the new markup. Submit your sitemap to speed up crawling. If impressions do not recover, check that your alternate link tags and structured data are correctly formatted.

Tolinku as Firebase Replacement

Tolinku provides a migration path from Firebase Dynamic Links that includes the app indexing infrastructure. When you configure your Appspace with your Android app settings, Tolinku hosts the assetlinks.json file automatically. Your deep link routes work as both user-facing deep links and search-indexable URLs.

For the full Firebase migration, see Firebase Dynamic Links migration guide. For the broader app indexing strategy, see app indexing and SEO for mobile apps.

Get deep linking tips in your inbox

One email per week. No spam.

Ready to add deep linking to your app?

Set up Universal Links, App Links, deferred deep linking, and analytics in minutes. Free to start.