Firebase App Check in Flutter: Protect Firestore, Storage & APIs from Abuse

Learn how to implement Firebase App Check in Flutter to protect Firestore, Storage, and other backend services from unauthorized access and abuse.

Introduction

Even if your Firebase Security Rules are correctly configured, your backend services can still be abused by scripts, bots, or modified applications.

Firebase App Check adds an additional security layer to ensure that only requests coming from your genuine Flutter app can access Firebase services.

In this complete production-level guide, we will explore:

  • What Firebase App Check is
  • Why it is important
  • How App Check works internally
  • Android implementation
  • iOS implementation
  • Enforcing App Check
  • Production best practices

Why App Check Is Important

Without App Check:

  • Attackers can call Firebase APIs directly
  • Fake apps can access your database
  • Billing can increase due to abuse

App Check ensures:

  • Requests come from your genuine app
  • Requests are verified by platform integrity APIs

How Firebase App Check Works

Flutter App
   ↓
Platform Integrity Verification
   ↓
App Check Token Issued
   ↓
Token Attached to Firebase Requests
   ↓
Firebase Verifies Token
   ↓
Allow / Deny Request

Supported Providers

Android

  • Play Integrity API (recommended)
  • SafetyNet (deprecated)

iOS

  • DeviceCheck
  • App Attest

Add Required Package

dependencies:
  firebase_app_check: latest_version

Run:

flutter pub get

Initialize App Check (Android Example)

await FirebaseAppCheck.instance.activate(
  androidProvider: AndroidProvider.playIntegrity,
  appleProvider: AppleProvider.appAttest,
);

Call this after Firebase.initializeApp().

Enable App Check in Firebase Console

  • Go to Firebase Console
  • Select App Check
  • Enable provider for your app

Enforcing App Check

Initially, App Check runs in monitoring mode.

Once verified working:

  • Switch to Enforced mode

This blocks unauthorized requests.

Debug Mode for Development

During development, use debug provider.

await FirebaseAppCheck.instance.activate(
  androidProvider: AndroidProvider.debug,
);

Add debug token to Firebase console.

How to Verify App Check is Working

  • Check App Check dashboard
  • Monitor verified vs unverified requests

Services Protected by App Check

  • Cloud Firestore
  • Firebase Storage
  • Cloud Functions
  • Realtime Database

Common Beginner Mistakes

  • Enforcing App Check before testing
  • Forgetting debug token
  • Not enabling Play Integrity API
  • Ignoring monitoring dashboard

Production Best Practices

  • Use Play Integrity on Android
  • Use App Attest on iOS
  • Test in monitoring mode first
  • Enable enforcement gradually
  • Combine with strong security rules

App Check + Security Rules

App Check verifies app authenticity. Security rules verify user permissions.

Both are required for full backend protection.

Real-World Protection Strategy

  • Authentication required
  • Strict security rules
  • App Check enabled
  • Backend verification for sensitive APIs

Cost Protection

App Check prevents automated abuse, which reduces unexpected billing spikes.

Conclusion

Firebase App Check is not optional for production apps. It protects your backend from unauthorized access, scripts, and fake clients.

By combining App Check with proper security rules, you create a highly secure and scalable backend system.

Next, we will explore: Firebase Performance Monitoring & Analytics Deep Guide.

Share

What's Your Reaction?

Like Like 0
Dislike Dislike 0
Love Love 0
Funny Funny 0
Angry Angry 0
Sad Sad 0
Wow Wow 0