Blog Infos
Author
Published
Topics
, , , ,
Published

When most Android developers think of Firebase, two things come to mind: Crashlytics (for crash reports) and Authentication (for user login).

But here’s the plot twist: Firebase is way more powerful than just catching crashes and logging people in. If that’s all you’re using it for, you’re missing out on a buffet of tools that can boost performance, delight users, and save you weeks of dev time.

Let’s dive into the lesser-used yet insanely powerful Firebase features every Android dev should be using in 2025.

1. Remote Config: Ship Features Without Releasing Builds

Problem: Pushing a tiny copy tweak or toggling a feature means going through the Play Store release cycle.

Solution: Firebase Remote Config lets you change your app’s behavior instantly from the console.

Gradle

dependencies {
implementation(platform("com.google.firebase:firebase-bom:latest.release"))
implementation("com.google.firebase:firebase-config-ktx")
}

 

Kotlin

val remoteConfig = Firebase.remoteConfig
val settings = remoteConfigSettings {
minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(settings)

lifecycleScope.launch {
val updated = remoteConfig.fetchAndActivate().await()
if (updated) {
val welcomeText = remoteConfig["welcome_text"].asString()
textView.text = welcomeText
}
}

 

Use cases:

  • A/B testing new features
  • Disabling buggy features without a hotfix release
  • Localizing content instantly for special events

💡 Pro tip: Use Firebase Personalization (A/B Testing + Remote Config) to automatically target the better-performing variation to each user segment.

2. App Check: Block Bots, Emulators & Abuse

Problem: Hackers love abusing APIs using emulators, rooted devices, or stolen API keys.

Solution: App Check protects your backend by verifying requests come from your signed, untampered app.

Gradle

dependencies {
implementation("com.google.firebase:firebase-appcheck-playintegrity")
debugImplementation("com.google.firebase:firebase-appcheck-debug")
}

Kotlin

if (BuildConfig.DEBUG) {
FirebaseAppCheck.getInstance()
.installAppCheckProviderFactory(DebugAppCheckProviderFactory.getInstance())
} else {
FirebaseAppCheck.getInstance()
.installAppCheckProviderFactory(PlayIntegrityAppCheckProviderFactory.getInstance())
}

 

Result: Only verified requests hit your backend. No more bot spam.
(💀 SafetyNet is fully deprecated — don’t use it.)

3. Performance Monitoring: Track Real-World Slowness

Problem: Your emulator is fast — your user’s 3G phone is not.

Solution: Firebase Performance Monitoring automatically logs:

  • App startup time
  • Screen rendering speed
  • Network request latency

Gradle

plugins {
id("com.google.firebase.firebase-perf") version "2.0.1" apply false
}

dependencies {
implementation("com.google.firebase:firebase-perf-ktx")
}

 

Custom trace

val trace = Firebase.performance.newTrace("checkout_flow")
trace.start()
// do stuff
trace.stop()

 

Result: Spot slow cold starts, detect laggy screens, and track slow APIs — from real user devices, not your blazing laptop.

💡 Bonus: Disable perf in debug builds via the Gradle plugin extension to avoid polluting your data.

4. Firestore with Offline Cache: Instant UI, Even with No Network

Problem: Users hate staring at loading spinners.

Solution: Cloud Firestore provides real-time sync with built-in offline caching.

Gradle

implementation("com.google.firebase:firebase-firestore-ktx")

Kotlin

val firestore = Firebase.firestore
firestore.firestoreSettings = firestoreSettings {
setLocalCacheSettings(
PersistentCacheSettings.newBuilder()
.setSizeBytes(100L * 1024L * 1024L) // 100 MB
.build()
)
}

firestore.collection("products")
.get()
.addOnSuccessListener { result ->
for (doc in result) {
Log.d("Product", "${doc.id} => ${doc.data}")
}
}

 

Even if the network drops, reads return instantly from cache, and sync later when online.
💡 New in 2025: Use PersistentCacheSettings or MemoryCacheSettings to control cache behavior and size.

5. Cloud Messaging + Topics: Smarter Push Notifications

Problem: Blindly spamming push notifications annoys users.

Solution: Firebase Cloud Messaging (FCM) with topics and conditions lets you target only the right users.

Kotlin

Firebase.messaging.subscribeToTopic("power_users")

 

Now only your engaged users get the big new feature push.
And with A/B testing + Notifications Composer, you can optimize titles, copy, and send times.

💡 Pro tip: Combine with Remote Config to silently enable features for selected users and then notify them.

⚠️ Make sure your server uses HTTP v1 API for sending pushes — older HTTP/XMPP APIs are retired.

6. Analytics + BigQuery: Product Insights Without Extra SDKs

Problem: Adding multiple analytics SDKs bloats your app.

Solution: Use Firebase Analytics as the single source of truth — and export data to BigQuery for deep analysis.

Kotlin

Firebase.analytics.logEvent("purchase") {
param("item_id", "123")
param("price", 99.99)
}

With BigQuery integration, you can:

  • Build funnels
  • Analyze churn
  • Segment by device/region
  • Power ML models for prediction

💡 Tip: In 2025, Firebase supports streaming export mode to BigQuery for near real-time dashboards.

7. App Distribution: Real Beta Testing Without Headaches

Problem: Sharing APKs over Drive/WhatsApp is chaos.

Solution: Firebase App Distribution lets you:

  • Upload builds from CI
  • Notify testers automatically
  • Track who installed which version

Gradle

plugins {
id("com.google.firebase.appdistribution")
}

firebaseAppDistribution {
serviceCredentialsFile = "service-account.json"
releaseNotesFile = "notes.txt"
groups = listOf("qa-team")
}

 

Upload

./gradlew appDistributionUploadRelease

Result: Smooth beta releases. Everyone on the same build, without “Did you install the new APK?” drama.

Job Offers

Job Offers

There are currently no vacancies.

OUR VIDEO RECOMMENDATION

, ,

Kobweb:Creating websites in Kotlin leveraging Compose HTML

Kobweb is a Kotlin web framework that aims to make web development enjoyable by building on top of Compose HTML and drawing inspiration from Jetpack Compose.
Watch Video

Kobweb:Creating websites in Kotlin leveraging Compose HTML

David Herman
Ex-Googler, author of Kobweb

Kobweb:Creating websites in Kotlin leveraging Compose HTML

David Herman
Ex-Googler, author o ...

Kobweb:Creating websites in Kotlin leveraging Compose HTML

David Herman
Ex-Googler, author of Kob ...

Jobs

Wrapping Up

Crashlytics and Auth are just the tip of the Firebase iceberg.

With the full toolbox — Remote Config, App Check, Performance Monitoring, Firestore, FCM, Analytics, and App Distribution — you can:

  • Release features faster
  • Secure your backend
  • Delight users with snappy performance
  • Get real product insights
  • And sleep better knowing your testers actually got the right build 😄

So the next time someone says, “We use Firebase for crash reports,” give them a knowing smile — and ship a feature without even touching the Play Store.

🧠 Quick Dev Checklist

-> Remote Config for toggling features
-> App Check (Play Integrity) for securing APIs
-> Performance Monitoring for real UX
-> Firestore with offline caching
-> FCM with topics and A/B testing
-> Analytics with BigQuery streaming
-> App Distribution for painless testing

This article was previously published on proandroiddev.com

Menu