Firebase vs Supabase
Googles umfassende Mobile-Plattform Firebase trifft auf Supabase, die Open-Source-Alternative auf PostgreSQL-Basis. Wofür sollte man sich bei der Wahl eines Backend-as-a-Service entscheiden?
Googles kostenloses, leichtgewichtiges SDK zur Absturzerkennung
Fehlerüberwachung + Performance + Session-Replay auf einer Plattform, self-hostbar
Klare Regel: Wenn du nur die Frage beantworten willst, "wann ist die App abgestürzt", und dein Budget null ist, dann Crashlytics — die Einrichtung dauert Minuten, es besteht kein Rechnungsrisiko. Willst du Fehler, Performance und Session-Replay in einem einzigen Panel, oder musst du die Daten aus Datenschutzgründen (DSGVO) in deiner eigenen Infrastruktur behalten, rechtfertigt Sentrys Umfang diese Kosten. Viele Teams nutzen beide gleichzeitig; entscheidest du dich für diesen Weg, miss in deinem eigenen Build, wie sich die doppelte SDK-Integration auf App-Größe und Startzeit auswirkt.
| Kategorie | Firebase Crashlytics | Sentry |
|---|---|---|
| Performance | 7/10 | 9/10 |
| Erlernbarkeit | 9/10 | 6/10 |
| Ökosystem | 6/10 | 9/10 |
| Community | 8/10 | 8/10 |
| Arbeitsmarkt | 6/10 | 7/10 |
| Zukunftssicherheit | 7/10 | 8/10 |
// Firebase Crashlytics - Android (Kotlin) Einrichtung und Non-Fatal-Logging
// 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: um bei einem Absturz zu sehen, in welchem Schritt es passiert ist
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) {
// Fehlerprotokoll, ohne die App abstürzen zu lassen (non-fatal)
crashlytics.setCustomKey("order_id", orderId)
crashlytics.recordException(error)
}
fun identifyUser(userId: String) {
crashlytics.setUserId(userId)
}
}
// AndroidManifest.xml: firebase_crashlytics_collection_enabled=false (nach DSGVO-Einwilligung aktivieren)
// Runtime: Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)// Sentry - iOS (Swift): Fehler + Performance + Session-Replay in einem 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
// Performance-Tracing
options.tracesSampleRate = 0.2
// UI Profiling (sentry-cocoa 9.x): an den Trace-Lebenszyklus gebunden
options.configureProfiling = {
$0.lifecycle = .trace
$0.sessionSampleRate = 1.0
}
// Session Replay: zeichnet den Bildschirmablauf vor dem Absturz auf
options.sessionReplay.onErrorSampleRate = 1.0
options.sessionReplay.sessionSampleRate = 0.1
// Screenshot + View-Hierarchie im Fehlerfall
options.attachScreenshot = true
options.attachViewHierarchy = true
}
}
// Breadcrumb + benutzerdefinierter Kontext + Non-Fatal-Erfassung
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)
}
// Automatischer dSYM-Upload (Xcode Run Script Build Phase):
// sentry-cli debug-files upload --include-sources "$DWARF_DSYM_FOLDER_PATH"Klare Regel: Wenn du nur die Frage beantworten willst, "wann ist die App abgestürzt", und dein Budget null ist, dann Crashlytics — die Einrichtung dauert Minuten, es besteht kein Rechnungsrisiko. Willst du Fehler, Performance und Session-Replay in einem einzigen Panel, oder musst du die Daten aus Datenschutzgründen (DSGVO) in deiner eigenen Infrastruktur behalten, rechtfertigt Sentrys Umfang diese Kosten. Viele Teams nutzen beide gleichzeitig; entscheidest du dich für diesen Weg, miss in deinem eigenen Build, wie sich die doppelte SDK-Integration auf App-Größe und Startzeit auswirkt.
Kostenlose Beratung erhaltenReicht dir eine reine Absturzverfolgung und muss das Budget null sein, ist Crashlytics die richtige Wahl; willst du neben Fehlererkennung auch Performance-Tracing, Session-Replay und bei Bedarf Self-Hosting, ist Sentry die passende Lösung. Beide bieten SDKs mit einfacher Einrichtung — die Entscheidung läuft letztlich auf Umfang und Budget hinaus.