Skip to main content

Firebase observability and configuration tools

Firebase products can cover important mobile needs, but each has a distinct contract and does not replace architecture or server observability.

Crashlytics​

Use for fatal/nonfatal/ANR/native issue grouping, affected users, breadcrumbs/custom keys, release velocity. Upload R8 mappings/native symbols per build. Keep custom keys bounded and non-sensitive. Disable/enable collection according to privacy policy and verify test crash pipeline.

Performance Monitoring​

Automatically captures supported startup/screen/network signals and permits custom traces/metrics/attributes. Validate URL grouping, sampling/data collection, and what “screen” means in Compose/single-Activity architecture. Custom trace should represent user journey and stop on every path.

Analytics​

Use governed event contracts, recommended events when semantics match, bounded properties, DebugView for validation, consent/default collection configuration, and export/data-quality monitoring. It is not an audit log or exact financial counter.

Remote Config​

Use in-app safe defaults before fetch, typed schema/validation, min-fetch/cache/offline behavior, targeting review, staged publishing, rollback history, owner/expiry, and real-time listener lifecycle where appropriate.

data class SafeConfig(
val checkoutEnabled: Boolean = true,
val maxUploadBatch: Int = 20,
)

fun FirebaseRemoteConfig.toSafeConfig(): SafeConfig = SafeConfig(
checkoutEnabled = getBoolean("checkout_enabled"),
maxUploadBatch = getLong("max_upload_batch")
.coerceIn(1, 100).toInt(),
)

Remote Config values are visible to clients and controllable by attackers locally. Never store secrets or use a flag as authorization/payment limit/server security policy. Server enforces important rules.

Product boundaries​

ProductGood signalDoes not guarantee
Crashlyticsclient crash/ANR groupingall backend failures, perfect grouping
Performancesampled mobile latency/networkfull distributed trace/SLO truth
Analyticsbehavioral aggregatesexact audit/accounting
Remote Configclient rollout/configsecrecy, authorization, immediate reach

Initialization and privacy​

SDK ContentProviders/initializers can run before UI choice. Configure manifest/default collection and consent propagation before collection. Inventory data, retention, processors, identifiers, export/deletion, and regional/policy needs.

Sources​

Exercise​

Map a purchase flow across Crashlytics, Performance, Analytics, Remote Config, backend logs/traces/metrics, and audit records. State owner, privacy, sampling, and what each cannot prove.