Firebase vs Supabase
La plateforme mobile complète de Google, Firebase, face à Supabase, l'alternative PostgreSQL open-source. Que privilégier dans le choix d'un Backend-as-a-Service ?
Le SDK de suivi des crashs gratuit et léger de Google
Suivi des erreurs + performance + session replay dans une seule plateforme, auto-hébergeable
Règle simple : si vous cherchez uniquement une réponse à « quand l'application a-t-elle planté » et que votre budget est nul, choisissez Crashlytics — l'installation prend quelques minutes et il n'y a aucun risque de facturation. Si vous voulez erreurs + performance + session replay dans un seul panneau, ou si vous devez conserver les données sur votre propre infrastructure pour des raisons RGPD, la couverture de Sentry justifie ce coût. Beaucoup d'équipes utilisent les deux à la fois ; si vous choisissez cette voie, mesurez dans votre propre build l'impact du double SDK sur la taille de l'application et le temps de démarrage.
| Catégorie | Firebase Crashlytics | Sentry |
|---|---|---|
| Performance | 7/10 | 9/10 |
| Facilité d'apprentissage | 9/10 | 6/10 |
| Écosystème | 6/10 | 9/10 |
| Communauté | 8/10 | 8/10 |
| Marché de l'emploi | 6/10 | 7/10 |
| Pérennité | 7/10 | 8/10 |
// Firebase Crashlytics - Android (Kotlin) installation et journalisation non-fatale
// build.gradle.kts (app)
// plugins { id("com.google.gms.google-services"); id("com.google.firebase.crashlytics") }
// dependencies { implementation(platform("com.google.firebase:firebase-bom:34.19.0"))
// implementation("com.google.firebase:firebase-crashlytics") }
import com.google.firebase.Firebase
import com.google.firebase.crashlytics.crashlytics
import com.google.firebase.crashlytics.setCustomKeys
class CheckoutViewModel {
private val crashlytics = Firebase.crashlytics
fun onPaymentStarted(orderId: String, amount: Double) {
// Breadcrumb : pour savoir à quelle étape on était en cas de crash
crashlytics.log("payment_started order=$orderId amount=$amount")
crashlytics.setCustomKeys {
key("order_id", orderId)
key("payment_amount", amount)
key("user_tier", "premium")
}
}
fun onPaymentFailed(error: Throwable, orderId: String) {
// Enregistrement d'erreur sans faire planter l'application (non-fatal)
crashlytics.setCustomKey("order_id", orderId)
crashlytics.recordException(error)
}
fun identifyUser(userId: String) {
crashlytics.setUserId(userId)
}
}
// AndroidManifest.xml : firebase_crashlytics_collection_enabled=false (à activer après consentement RGPD)
// Runtime : Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)// Sentry - iOS (Swift) : erreurs + performance + session replay dans un seul SDK
// Package.swift / SPM : https://github.com/getsentry/sentry-cocoa
import Sentry
func configureSentry() {
SentrySDK.start { options in
options.dsn = "https://<public-key>@o<org-id>.ingest.sentry.io/<project-id>"
options.debug = false
// Tracing de performance
options.tracesSampleRate = 0.2
// UI Profiling (sentry-cocoa 9.x) : lié au cycle de vie du trace
options.configureProfiling = {
$0.lifecycle = .trace
$0.sessionSampleRate = 1.0
}
// Session Replay : enregistre le flux d'écran avant le crash
options.sessionReplay.onErrorSampleRate = 1.0
options.sessionReplay.sessionSampleRate = 0.1
// Capture d'écran + hiérarchie de vues au moment de l'erreur
options.attachScreenshot = true
options.attachViewHierarchy = true
}
}
// Breadcrumb + contexte personnalisé + capture non-fatale
func onPaymentFailed(_ error: Error, orderId: String) {
let crumb = Breadcrumb(level: .error, category: "payment")
crumb.message = "payment_failed order=\(orderId)"
SentrySDK.addBreadcrumb(crumb)
SentrySDK.configureScope { scope in
scope.setTag(value: orderId, key: "order_id")
scope.setUser(User(userId: "u_123"))
}
SentrySDK.capture(error: error)
}
// Upload automatique du dSYM (Xcode Run Script Build Phase) :
// sentry-cli debug-files upload --include-sources "$DWARF_DSYM_FOLDER_PATH"Règle simple : si vous cherchez uniquement une réponse à « quand l'application a-t-elle planté » et que votre budget est nul, choisissez Crashlytics — l'installation prend quelques minutes et il n'y a aucun risque de facturation. Si vous voulez erreurs + performance + session replay dans un seul panneau, ou si vous devez conserver les données sur votre propre infrastructure pour des raisons RGPD, la couverture de Sentry justifie ce coût. Beaucoup d'équipes utilisent les deux à la fois ; si vous choisissez cette voie, mesurez dans votre propre build l'impact du double SDK sur la taille de l'application et le temps de démarrage.
Obtenir une consultation gratuiteCrashlytics si le suivi des crashs seul suffit et que le budget doit être nul ; Sentry est le bon choix pour une équipe qui veut, en plus du suivi des erreurs, le tracing de performance, le session replay et éventuellement le self-host. Les deux proposent des SDK faciles à installer, la décision se résume à une question de couverture et de budget.