Firebase Performance Monitoring je bezplatný nástroj od Google pro sledování výkonu mobilních aplikací v reálném čase. Služba automaticky shromažďuje metriky doby spouštění, rychlosti vykreslování obrazovek a doby trvání HTTP požadavků, aniž by vyžadovala psaní kódu pro základní scénáře. Podle údajů Google Firebase, 2025, SDK automaticky sleduje až 90% síťových požadavků bez dodatečné konfigurace. Nástroj je k dispozici pro Android, iOS a webové aplikace v rámci ekosystému Firebase.
Hlavní body
Firebase Performance Monitoring je cloudová služba Google, která shromažďuje a zobrazuje metriky výkonu mobilních aplikací. Služba je součástí sady nástrojů Firebase a nevyžaduje samostatnou platbu — monitorování je k dispozici v rámci bezplatného tarifu Spark (limit 500 000 událostí denně) a placeného tarifu Blaze. Firebase Performance automaticky generuje trasování pro standardní scénáře: cold start obrazovky, warm start, HTTP požadavky na pozadí.
Architektura služby je postavena na dvou typech dat: traces (trasování) a metrics (metriky). Trasování je časový interval se začátkem a koncem, uvnitř kterého se měří doba provádění. Metrika je číselná hodnota: velikost odpovědi, četnost chyb, rychlost v bajtech/s. Každé trasování může obsahovat několik metrik. SDK shromažďuje data na zařízení, ukládá je do vyrovnávací paměti a odesílá je na Firebase na pozadí s nízkou prioritou latence, aby neovlivnilo uživatelský zážitek.
Podle zprávy Google I/O 2024 se Firebase Performance používá ve více než 2 milionech aplikací po celém světě. Průměrná doba detekce problému s výkonem pomocí Firebase Performance je 15 minut po vydání, pokud jsou nastavena upozornění. Bez monitorování je podobný problém detekován v průměru po 2-3 dnech na základě stížností uživatelů na podporu.
Crashlytics sleduje pády a fatální chyby — situace, kdy aplikace neočekávaně skončí. Firebase Performance monitoruje výkon běžící aplikace: pomalé obrazovky, dlouhé síťové požadavky, zpoždění odezvy UI. Crashlytics odpovídá na otázku „proč aplikace spadla?„, zatímco Performance odpovídá na otázku „proč aplikace běží pomalu?„. Obě služby se integrují prostřednictvím jednoho SDK (Firebase Core) a data se zobrazují v souvisejících sekcích konzole Firebase.
Firebase Performance nezobrazuje průměrné hodnoty — pouze percentily: P50, P75, P90, P95, P99. To je pro výkon kritické: průměrná doba skrývá odlehlé hodnoty. Pokud 99 uživatelů otevře obrazovku za 200 ms a jeden za 20 sekund, průměr bude ~400 ms, což vypadá přijatelně. P99 ukáže 20 sekund — skutečný problém. Firebase zobrazuje percentily na časové ose, což umožňuje sledovat regrese s přesností až na hodinu.
Firebase Performance SDK se integruje do aplikace standardní integrací: přidáním závislosti v Gradle (Android) nebo přes CocoaPods (iOS). Po inicializaci Firebase v kódu začne SDK automaticky shromažďovat metriky bez další konfigurace. Důležitým principem fungování je lazy collection: SDK neodesílá data okamžitě, ale hromadí je a odesílá v dávkách, když jsou síťové podmínky příznivé.
Pro iOS SDK používá NSURLProtocol k zachycování HTTP požadavků, pro Android — OkHttp Interceptor. Pokud aplikace nepoužívá OkHttp, SDK automaticky obaluje HttpURLConnection. Zachycené požadavky jsou obohaceny o metadata: Content-Type, stav odpovědi, velikost v bajtech, doba trvání. Všechna data jsou přenášena přes HTTPS na server Firebase s šifrováním TLS 1.3.
Jedním z klíčových požadavků Firebase Performance je být posledním pluginem v seznamu Gradle pluginů. Pokud je pořadí porušeno, SDK nemusí zachytit všechny požadavky nebo může nesprávně měřit dobu spouštění. Firebase doporučuje umístit plugin na konec bloku plugins, po Crashlytics a dalších pluginech Google Services.
// build.gradle (Module: app) — správné pořadí pluginů
plugins {
id "com.android.application"
id "org.jetbrains.kotlin.android"
id "com.google.gms.google-services"
id "com.google.firebase.crashlytics"
id "com.google.firebase.firebase-perf" // poslední!
}
dependencies {
implementation platform("com.google.firebase:firebase-bom:33.0.0")
implementation "com.google.firebase:firebase-perf"
}
Firebase Performance vytváří tři typy automatického trasování: screen trace (doba vykreslování obrazovky), app start trace (doba spouštění aplikace) a network request trace (HTTP požadavky). Screen trace pro Android měří čas mezi voláním Activity.onCreate a dokončením vykreslení prvního snímku. Pro iOS se měří čas mezi viewDidLoad a viewDidAppear. Firebase automaticky vytváří trasování pro každou obrazovku pomocí názvu třídy Activity nebo ViewController.
App start trace se dělí na dva typy: cold start (aplikace startuje od nuly, proces neexistoval) a warm start (aplikace se obnovuje ze stavu na pozadí). Cold start je nejkritičtějším ukazatelem, protože zahrnuje inicializaci všech SDK, načítání DEX souborů a vytvoření první Activity. Firebase měří cold start od okamžiku spuštění procesu do úplného vykreslení první obrazovky. Podle doporučení Google by cold start neměl překročit 500 ms pro P50 a 2 sekundy pro P99.
Network request trace automaticky zaznamenává každý HTTP požadavek s metadaty: URL, metoda, kód odpovědi, velikost odpovědi, rychlost přenosu. V konzoli Firebase Performance lze požadavky filtrovat podle vzoru URL — například zobrazit všechny požadavky na /api/v2/orders. Pro každý vzor se zobrazují percentily doby odezvy a četnost chyb 4xx/5xx. To umožňuje rychle detekovat degradaci konkrétního API bez nastavování samostatných upozornění.
Pro obrazovky Firebase Performance navíc vypočítává metriku „frozen frames„ — snímky, které se vykreslovaly déle než 700 ms. Takové zamrznutí UI uživatel vnímá jako „aplikace zamrzla„. Pokud je na obrazovce více než 1 % frozen frames, Firebase označí metriku jako problematickou. Pro Android SDK navíc shromažďuje metriku slow renders — snímky delší než 16 ms (ztráta 60 FPS). Kombinace screen trace a frozen frames poskytuje úplný obrázek jak o době načítání, tak o plynulosti animací.
Vlastní trasování umožňují měřit dobu trvání libovolného uživatelského scénáře: zadání objednávky, nahrání obrázku do cloudu, synchronizace dat. Vývojář explicitně určuje začátek a konec trasování v kódu a pojmenovává scénář. Na rozdíl od automatického trasování poskytuje vlastní trasování plnou kontrolu nad tím, co se měří, a umožňuje přidávat atributy pro filtrování.
Každé vlastní trasování může obsahovat atributy — páry klíč-hodnota, které se přidávají jako metadata. Atributy pomáhají segmentovat data: například lze sledovat dobu zadání objednávky odděleně pro „promo_user„ a „regular_user„. Firebase Performance podporuje až 5 atributů na trasování a až 100 jedinečných hodnot atributu. Atributy jsou indexované a dostupné pro filtrování v konzoli Firebase.
Podle zprávy Google I/O 2024 používá tým Spotify vlastní trasování Firebase pro monitorování doby přepínání mezi skladbami. To umožnilo zkrátit medián doby přepínání ze 400 ms na 120 ms identifikací úzkého hrdla v cache audio bufferu. Klíčovým poznatkem bylo filtrování podle atributu „device_model„ — problém se projevoval pouze na zařízeních Samsung s Android 13.
import com.google.firebase.perf.FirebasePerformance
import com.google.firebase.perf.metrics.Trace
class CheckoutTracker {
private val firebasePerf = FirebasePerformance.getInstance()
fun trackCheckoutFlow(userId: String, promoApplied: Boolean) {
val trace: Trace = firebasePerf.newTrace("checkout_flow")
trace.putAttribute("promo_user", promoApplied.toString())
trace.putAttribute("user_tier", "premium")
trace.start()
// Provedení scénáře zadání objednávky
validateCart()
processPayment()
confirmOrder()
trace.stop()
}
}
Integrace Firebase Performance do Android vyžaduje tři kroky: přidání pluginu google-services, připojení Firebase BOM (Bill of Materials) a přidání závislosti firebase-perf. Firebase Performance automaticky funguje na všech Activity a fragmentech, pokud používají AppCompatActivity. Pro obrazovky Compose Firebase doporučuje používat vlastní trasování, protože automatické screen trace přímo nepodporuje Compose.
Důležitý detail: Firebase Performance Gradle plugin modifikuje bytecode aplikace ve fázi kompilace. Plugin přidává instrumentující kód do každé Activity a OkHttp klienta. To může zvýšit dobu sestavení o 5-10% a velikost APK o 200-400 KB. V debug sestaveních je Firebase Performance automaticky vypnut — to chrání před zkreslením metrik během lokálního vývoje. Pro vynucené zapnutí v debug režimu se používá příznak firebasePerformanceInstrumentationEnabled v manifestu.
Firebase Performance také podporuje MetricKit pro iOS a Perfetto pro Android — nízkoúrovňové systémové trasovače. MetricKit poskytuje data o snímkové frekvenci, spotřebě CPU a paměti na úrovni operačního systému. Firebase tato data agreguje a zobrazuje ve stejné konzoli, kde se zobrazují HTTP trasování a screen traces, čímž kombinuje systémovou a aplikační telemetrii v jednom rozhraní.
import okhttp3.OkHttpClient
import com.google.firebase.perf.network.FirebasePerfOkHttpClient
val client = OkHttpClient.Builder()
.addInterceptor FirebasePerfOkHttpClient
.build()
val request = Request.Builder()
.url("https://api.example.com/orders")
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) { /* handle */ }
override fun onResponse(call: Call, response: Response) { /* handle */ }
})
Pro iOS se integrace Firebase Performance provádí přes CocoaPods nebo Swift Package Manager. Po instalaci podů FirebasePerformance a FirebaseCore začne SDK automaticky shromažďovat metriky. Pro zachycování HTTP požadavků používá Firebase Performance iOS NSURLProtocol — systémový mechanismus, který umožňuje zachytit všechna načítání URL v aplikaci. SDK při spuštění registruje svou vlastní podtřídu NSURLProtocol a všechny požadavky přes URLSession automaticky spadají pod monitorování.
Omezení pro iOS: Firebase Performance nepodporuje automatické screen trace pro SwiftUI. Pro SwiftUI aplikace je nutné ručně vytvářet vlastní trasování zabalením těla View do bloku start/stop. Firebase pracuje na nativní podpoře SwiftUI, ale v současné době SDK automaticky sleduje pouze UIView kontrolery. Pro hybridní aplikace na UIKit + SwiftUI se doporučuje vytvářet obrazovky v UIKit a vkládat SwiftUI přes UIHostingController.
Firebase Performance iOS také poskytuje integraci s MetricKit — frameworkem Apple, který shromažďuje diagnostická data na úrovni operačního systému. MetricKit odesílá denní zprávy s metrikami CPU, GPU, paměti a snímkové frekvence. Firebase Performance tyto zprávy agreguje a zobrazuje je v konzoli vedle vlastního trasování, což poskytuje úplný obrázek výkonu jak na úrovni aplikace, tak na úrovni systému.
import FirebasePerformance
final class ImageUploadService {
func uploadImage(_ data: Data, to url: URL) async throws {
guard let trace = Performance.startTrace(name: "image_upload") else { return }
trace?.setValue("image/jpeg", forAttribute: "content_type")
trace?.setValue("\(data.count)", forAttribute: "file_size")
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = data
let (_, response) = try await URLSession.shared.data(for: request)
guard let httpResponse = response as? HTTPURLResponse else { return }
trace?.setValue("\(httpResponse.statusCode)",
forAttribute: "status_code")
trace?.stop()
}
}
Často kladené otázky
Ano, Firebase Performance je k dispozici na bezplatném tarifu Spark s limitem 500 000 událostí denně. Pro projekty s větším objemem dat se používá tarif Blaze s platbou podle spotřeby: 0,0003 dolaru za 1000 událostí nad limit. Pro většinu startupů a středních projektů je 500 000 událostí denně více než dost.
Firebase Performance SDK je optimalizován pro minimální dopad. Odesílání dat probíhá na vlákně na pozadí s nízkou prioritou. Podle testů Google je dopad SDK na dobu spouštění menší než 1 %. Velikost SDK je přibližně 300 KB pro Android a 250 KB pro iOS.
Automaticky se shromažďují app start (cold/warm), screen rendering (doba vykreslení každé obrazovky), HTTP požadavky (čas, velikost, stav) a frozen frames. Pro Android se navíc shromažďuje četnost slow renders (>16 ms) a ANR.
Firebase Performance se automaticky vypne v debug režimu. Pro vynucené ovládání se používá příznak v Android manifestu: firebasePerformanceInstrumentationEnabled. Pro iOS se vypnutí provádí pomocí příznaku -FIRPerformanceEnabled NO v argumentech schématu spouštění.
Ano, Firebase Performance podporuje export do BigQuery. Po připojení projektu k BigQuery jsou všechny metriky automaticky duplikovány do tabulek BigQuery, dostupných pro SQL dotazy a vytváření dashboardů v Looker Studio. Export se konfiguruje v sekci Integrations konzole Firebase.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také