Automatisch erfasste Kennzahlen, eigene Traces und Alerting für Produktions-Apps
Ein Performance-Problem, das nur bei fünf Prozent der Nutzer auf bestimmten Gerätemodellen auftritt, fällt im lokalen Profiling nie auf, kostet aber messbar App-Store-Bewertungen und Retention. Firebase Performance Monitoring und New Relic Mobile schließen diese Lücke, indem sie Leistungsdaten kontinuierlich aus der echten Produktionsflotte sammeln. Dieser Artikel zeigt, welche Kennzahlen beide Werkzeuge automatisch erfassen, wie sich benutzerdefinierte Traces für kritische Nutzerflows wie Checkout oder Login einrichten lassen, und wie sinnvolle Alerting-Schwellenwerte für eine Produktions-App aussehen.
Inhaltsverzeichnis
- 1. Warum Produktions-Monitoring lokales Profiling nicht ersetzt
- 2. Welche Kennzahlen automatisch erfasst werden
- 3. Firebase Performance einrichten
- 4. New Relic Mobile einrichten
- 5. Benutzerdefinierte Traces für kritische Nutzerflows einrichten
- 6. Frame Drops und UI-Responsivität gezielt erfassen
- 7. Alerting-Schwellenwerte für Produktions-Apps festlegen
- 8. Firebase Performance oder New Relic: Auswahlkriterien
- 9. Datenschutz und Performance-Overhead des Monitorings selbst
- 10. Zusammenfassung
- 11. FAQ
1. Warum Produktions-Monitoring lokales Profiling nicht ersetzt
Lokales Profiling mit Flipper oder den nativen Profilern zeigt zuverlässig, wie sich eine App auf dem eigenen Testgerät verhält, sagt aber nichts über die tatsächliche Geräte-, Netzwerk- und Betriebssystemvielfalt der echten Nutzerbasis. Ein günstiges Android-Gerät mit wenig Arbeitsspeicher, ein Nutzer mit schwacher Mobilfunkverbindung im ländlichen Raum oder eine seltene Kombination aus OS-Version und Gerätemodell erzeugen Leistungsprobleme, die im Entwicklerbüro mit aktuellem Highend-Gerät und WLAN schlicht nicht reproduzierbar sind.
Application Performance Monitoring, kurz APM, schließt diese Lücke, indem es Leistungsdaten direkt aus produktiven App-Installationen sammelt und aggregiert. Firebase Performance Monitoring und New Relic Mobile sind zwei etablierte Werkzeuge für React Native, die sich in Umfang, Preismodell und Integrationstiefe unterscheiden, aber dasselbe Grundprinzip verfolgen: automatische Basis-Metriken erfassen und benutzerdefinierte Traces für App-spezifische kritische Abläufe ergänzen.
2. Welche Kennzahlen automatisch erfasst werden
Beide Werkzeuge messen ohne zusätzlichen Code eine Reihe von Basis-Kennzahlen. Die App-Start-Zeit wird typischerweise in zwei Phasen unterteilt: die Zeit vom Prozessstart bis zum ersten sichtbaren Frame, sogenannter Cold Start oder App Start, und die Zeit bis zur tatsächlichen Interaktionsbereitschaft. Firebase Performance unterscheidet dabei explizit zwischen App Start, das automatisch beim Prozessstart beginnt, und einer manuell markierbaren Zeit bis zur ersten sinnvollen Interaktion.
Netzwerk-Latenz wird für jeden HTTP-Aufruf automatisch erfasst, sofern die verwendete Netzwerkbibliothek unterstützt wird, inklusive Antwortzeit, Statuscode und Nutzlastgröße. Frame Drops beziehungsweise die Bildwiederholrate während der App-Nutzung werden separat aufgezeichnet und lassen erkennen, an welchen Bildschirmen Nutzer tatsächlich Ruckler erleben. New Relic Mobile ergänzt diese Basis-Metriken um automatisch erfasste Netzwerk-Interaktionsdiagramme und eine Korrelation zwischen Crashes und vorausgehenden Performance-Anomalien, was Firebase Performance in dieser Tiefe nicht bietet.
3. Firebase Performance einrichten
Die Einrichtung von Firebase Performance in React Native erfolgt über das offizielle @react-native-firebase/perf-Paket, das auf dem bestehenden Firebase-Projekt aufbaut, das für Analytics oder Crashlytics ohnehin meist schon konfiguriert ist. Nach der Installation und dem nativen Setup über die google-services.json beziehungsweise GoogleService-Info.plist beginnt die automatische Erfassung von App-Start-Zeit und Netzwerk-Anfragen ohne weiteren Code.
Für Reports im Firebase-Console-Dashboard braucht es typischerweise vierundzwanzig bis achtundvierzig Stunden, bis genügend Datenpunkte aggregiert sind, um belastbare Trends anzuzeigen. Wichtig für React-Native-Projekte ist, dass Firebase Performance standardmäßig nur native Netzwerk-Anfragen über die Plattform-HTTP-Schicht erfasst; Anfragen über fetch oder axios innerhalb von JavaScript benötigen unter Umständen zusätzliche Konfiguration, damit sie korrekt der Bridge zugeordnet werden.
npm install @react-native-firebase/app @react-native-firebase/perf
# iOS: native Abhängigkeiten installieren
cd ios && pod install && cd ..
# Automatische Erfassung von App-Start und Netzwerk-Requests
# beginnt ohne weiteren Code, sobald das Modul importiert wird
4. New Relic Mobile einrichten
New Relic Mobile für React Native wird über das newrelic-react-native-agent-Paket eingebunden und erfordert einen App-Token aus dem New-Relic-Dashboard, das getrennt für iOS- und Android-Build konfiguriert wird. Anders als Firebase Performance liefert New Relic zusätzlich ein sogenanntes Mobile-APM-Dashboard mit Verteilungs-Traces, die den kompletten Weg einer Anfrage über mehrere Backend-Services hinweg nachvollziehbar machen, was besonders für Teams mit eigener Microservice-Infrastruktur relevant ist.
Die Initialisierung erfolgt früh im App-Lebenszyklus, idealerweise als erster Aufruf in index.js, noch vor dem eigentlichen App-Rendering, damit auch die frühesten Phasen des App-Starts erfasst werden. New Relic bietet zusätzlich eine explizite interactionCreate-API, mit der sich eigene, benannte Interaktionen jenseits der automatisch erfassten Netzwerk- und Start-Metriken definieren lassen.
// index.js
import NewRelic from "newrelic-react-native-agent";
import { AppRegistry } from "react-native";
import App from "./App";
NewRelic.startAgent(
Platform.OS === "ios"
? "IOS_APP_TOKEN_AUS_NEW_RELIC_DASHBOARD"
: "ANDROID_APP_TOKEN_AUS_NEW_RELIC_DASHBOARD"
);
AppRegistry.registerComponent("MyApp", () => App);
5. Benutzerdefinierte Traces für kritische Nutzerflows einrichten
Automatisch erfasste Metriken decken generische Fälle ab, sagen aber nichts über App-spezifische, geschäftskritische Abläufe wie einen mehrstufigen Checkout-Prozess oder einen Login mit biometrischer Authentifizierung. Beide Werkzeuge erlauben das Erstellen benutzerdefinierter Traces, die an einer beliebigen Codestelle gestartet und gestoppt werden und dazwischen benutzerdefinierte Attribute und Metriken sammeln können, etwa die Anzahl der Artikel im Warenkorb oder den gewählten Zahlungsanbieter.
Für den Checkout-Flow bietet sich ein einzelner Trace an, der beim Betreten des Warenkorb-Screens startet und erst nach erfolgreicher Zahlungsbestätigung endet, ergänzt um Zwischenmarkierungen für jeden einzelnen Schritt, etwa Adresseingabe, Zahlungsmethode und Bestätigung. So lässt sich im Dashboard nicht nur die Gesamtdauer, sondern auch die Dauer jedes einzelnen Teilschritts auswerten und gezielt der Schritt identifizieren, an dem Nutzer überdurchschnittlich lange verweilen oder abbrechen.
import perf from "@react-native-firebase/perf";
async function trackCheckoutFlow(cartItemCount: number) {
const trace = await perf().startTrace("checkout_flow");
trace.putAttribute("cart_item_count", String(cartItemCount));
trace.putMetric("started_at_ms", Date.now());
return trace;
}
// An den jeweiligen Schritten im Checkout-Flow aufrufen
async function onAddressSubmitted(trace: FirebasePerformanceTypes.Trace) {
trace.putMetric("address_step_completed_at_ms", Date.now());
}
async function onPaymentConfirmed(trace: FirebasePerformanceTypes.Trace) {
trace.putAttribute("payment_provider", "stripe");
await trace.stop();
}
6. Frame Drops und UI-Responsivität gezielt erfassen
Frame Drops sind für React-Native-Apps besonders relevant, weil sie oft durch teure Berechnungen auf dem JavaScript-Thread verursacht werden, die den UI-Thread blockieren, etwa eine ungefilterte Liste mit tausend Einträgen ohne Virtualisierung. Beide Monitoring-Werkzeuge erfassen die Bildwiederholrate während der Nutzung, New Relic bietet zusätzlich eine explizite Slow-Rendering- und Frozen-Frame-Metrik, die einzelne Bildschirme markiert, auf denen die Bildrate wiederholt unter einen kritischen Wert fällt.
Für die Diagnose lohnt es sich, Frame-Drop-Daten mit den benutzerdefinierten Traces zu korrelieren: Fällt die Bildwiederholrate systematisch während eines bestimmten Checkout-Schritts ab, deutet das auf eine konkrete, im Code lokalisierbare Ursache hin, etwa eine teure Re-Render-Kaskade beim Aktualisieren der Warenkorbsumme. Ohne diese Korrelation bleibt eine niedrige durchschnittliche Bildwiederholrate eine abstrakte Zahl ohne konkreten Ansatzpunkt für die Behebung.
7. Alerting-Schwellenwerte für Produktions-Apps festlegen
Ein Alert, der bei jeder kleinen Schwankung auslöst, führt schnell zu Alert-Fatigue, bei der ein Team Benachrichtigungen irgendwann ignoriert, auch wenn ein echtes Problem vorliegt. Sinnvolle Schwellenwerte orientieren sich an einer Kombination aus absolutem Wert und relativer Veränderung: eine App-Start-Zeit über vier Sekunden für das fünfundneunzigste Perzentil ist unabhängig vom historischen Trend problematisch, während eine plötzliche Verdopplung der durchschnittlichen Netzwerklatenz gegenüber dem Sieben-Tage-Durchschnitt selbst bei niedrigem absoluten Wert auf ein neues Problem hindeutet.
New Relic erlaubt das Definieren solcher Baseline-basierten Alerts direkt im Dashboard, bei denen ein Schwellenwert relativ zur historischen Streuung statt als starrer Absolutwert definiert wird, was Fehlalarme durch normale Tagesschwankungen deutlich reduziert. Firebase Performance bietet dagegen einfachere, statische Schwellenwert-Alerts über Cloud Monitoring, die für kleinere Teams oft ausreichen, aber manuell nachjustiert werden müssen, wenn sich die Nutzerbasis oder die App-Nutzung über die Zeit verändert.
8. Firebase Performance oder New Relic: Auswahlkriterien
Für Teams, die bereits Firebase für Analytics, Crashlytics oder Remote Config nutzen, ist Firebase Performance die naheliegende Wahl, weil die Integration nahtlos in dieselbe Konsole und dasselbe Abrechnungsmodell einfließt und keine zusätzliche Drittanbieter-Beziehung erfordert. Für einfache bis mittlere Anforderungen an App-Start-Zeit, Netzwerk-Latenz und grundlegende Traces reicht der Funktionsumfang in den meisten Fällen völlig aus.
New Relic lohnt sich vor allem für Teams mit eigener Backend-Infrastruktur, die Ende-zu-Ende-Traces über Mobile-App und Server-Services hinweg benötigen, oder für Organisationen, die APM bereits für andere Systeme im Einsatz haben und eine einheitliche Monitoring-Plattform bevorzugen. Der höhere Funktionsumfang geht dabei mit einem entsprechend höheren Preis und einer aufwendigeren Ersteinrichtung einher, was den Mehraufwand für kleinere Projekte oft nicht rechtfertigt.
9. Datenschutz und Performance-Overhead des Monitorings selbst
Performance-Monitoring sammelt zwangsläufig gerätebezogene Daten wie Modellbezeichnung, Betriebssystemversion und Netzwerktyp, was in der EU eine Prüfung im Rahmen der DSGVO erfordert, insbesondere die Frage, ob diese Daten mit anderen Nutzerdaten verknüpft und wie lange sie gespeichert werden. Beide Anbieter bieten Konfigurationsoptionen zur Datenminimierung, etwa das Deaktivieren automatischer Nutzeridentifikation, die vor dem produktiven Einsatz geprüft und in der Datenschutzerklärung der App dokumentiert werden sollten.
Der Performance-Overhead der Monitoring-Bibliotheken selbst ist bei beiden Werkzeugen gering, typischerweise im niedrigen einstelligen Prozentbereich bei App-Start-Zeit und Speicherverbrauch, sollte aber dennoch vor dem produktiven Rollout mit aktiviertem Monitoring gegen eine Version ohne Monitoring verglichen werden. Insbesondere bei sehr vielen benutzerdefinierten Traces mit häufigen Attributzuweisungen kann sich der Overhead spürbar summieren, weshalb Traces gezielt für wirklich kritische Flows eingesetzt werden sollten statt für jede beliebige Interaktion.
| Kennzahl | Firebase Performance | New Relic Mobile | Alerting-Empfehlung |
|---|---|---|---|
| App-Start-Zeit (Cold Start) | Automatisch erfasst | Automatisch erfasst | P95 über 4 Sekunden alarmieren |
| Netzwerk-Latenz | Pro HTTP-Aufruf automatisch | Mit verteiltem Tracing | Relative Verdopplung ggü. 7-Tage-Schnitt |
| Frame Drops/Slow Rendering | Basis-Erfassung | Explizite Frozen-Frame-Metrik | Wiederholt unter 30 fps auf einem Screen |
| Benutzerdefinierte Traces | startTrace/stopTrace API | interactionCreate API | Pro kritischem Flow individuell festlegen |
| Crash-Korrelation | Separat über Crashlytics | Eingebaut im selben Dashboard | Anstieg direkt nach Deployment prüfen |
Mironsoft
React-Native-App-Entwicklung und Magento-Anbindung
Eine mobile App zum Magento-Shop, die wirklich rund läuft?
Wir entwickeln React-Native-Apps, die sauber an die Magento REST- oder GraphQL-API angebunden sind, von der ersten Codezeile bis zur Veröffentlichung im App Store und bei Google Play.
App-Konzeption
Architektur und Feature-Umfang einer Magento-angebundenen App gemeinsam planen.
Magento-API-Integration
Produktkatalog, Warenkorb und Checkout sauber an die Shop-API anbinden.
Store-Veröffentlichung
App Store- und Google-Play-Freigabeprozess ohne Stolperfallen begleiten.
10. Zusammenfassung
Performance-Monitoring: Das Wichtigste auf einen Blick
Automatische Basis-Metriken
App-Start-Zeit, Netzwerk-Latenz und Frame Drops werden ohne zusätzlichen Code erfasst.
Benutzerdefinierte Traces
Kritische Flows wie Checkout brauchen eigene Traces mit Zwischenmarkierungen für jeden Teilschritt.
Alerting
Relative, baseline-basierte Schwellenwerte reduzieren Fehlalarme deutlich stärker als starre Absolutwerte.
Tool-Wahl
Firebase Performance passt zu bestehenden Firebase-Projekten, New Relic zu Teams mit eigener Backend-APM-Infrastruktur.