Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when implementing app attestation, configuring App Check providers, setting up debug tokens, enabling backend enforcement, or managing token refresh.
.claude/skills/evanca-firebase-app-check/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-20 | ✓→✗ | ▼ Worse | 14% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 42% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 29% | 0% |
This skill defines how to correctly implement Firebase App Check in Flutter applications, covering provider selection, debug configuration, enforcement rollout, and security hardening.
Use this skill when:
flutter pub add firebase_app_checkdartimport 'package:firebase_app_check/firebase_app_check.dart';
Initialize App Check after Firebase.initializeApp() and before using any Firebase services:
dartawait Firebase.initializeApp(); await FirebaseAppCheck.instance.activate( webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'), androidProvider: AndroidProvider.playIntegrity, appleProvider: AppleProvider.deviceCheck, );
Android: | Provider | Use case | |---|---| | AndroidProvider.playIntegrity | Production (default) | | AndroidProvider.debug | Development / CI only |
Apple (iOS / macOS): | Provider | Use case | |---|---| | AppleProvider.deviceCheck | Production default (iOS 11+, macOS 10.15+) | | AppleProvider.appAttest | Enhanced security (iOS 14+, macOS 14+) | | AppleProvider.appAttestWithDeviceCheckFallback | App Attest with Device Check fallback | | AppleProvider.debug | Development / CI only |
Web: | Provider | Use case | |---|---| | ReCaptchaV3Provider | Standard reCAPTCHA v3 | | ReCaptchaEnterpriseProvider | Enhanced with additional features |
> Android note: For certain Android devices, enable "Meets basic device integrity" in the Google Play console to ensure proper App Check functionality.
Use debug providers during development to run in emulators or CI environments:
dartawait Firebase.initializeApp(); await FirebaseAppCheck.instance.activate( androidProvider: AndroidProvider.debug, appleProvider: AppleProvider.debug, );
iOS: Enable debug logging by adding -FIRDebugEnabled to Arguments Passed on Launch in Xcode. The debug token appears in the console output.
Android: The debug token prints to logcat on first run. Filter by DebugAppCheckProvider.
Web: Set self.FIREBASE_APPCHECK_DEBUG_TOKEN = true; in web/index.html before Firebase scripts load.
dartFirebaseAppCheck.instance.onTokenChange.listen((token) { // Attach token to custom backend requests // e.g., set as Authorization header });
Follow this sequence to avoid disrupting legitimate users:
// Node.js Admin SDK example for verifying App Check tokens
const appCheckToken = req.header('X-Firebase-AppCheck');
const appCheckClaims = await getAppCheck().verifyToken(appCheckToken);Other measured skills in the registry, with their headline benchmark lift.