Firebase Performance Monitoring је бесплатан алат компаније Google за праћење перформанси мобилних апликација у реалном времену. Сервис аутоматски прикупља метрике времена покретања, брзине приказивања екрана и трајања HTTP захтева, без потребе за писањем кода за основне сценарије. Према подацима Google Firebase, 2025, SDK аутоматски прати до 90% мрежних захтева без додатног подешавања. Алат је доступан за Android, iOS и веб апликације у оквиру Firebase екосистема.
Главно
Firebase Performance Monitoring је Google cloud сервис који прикупља и приказује метрике перформанси мобилних апликација. Сервис је део Firebase алата и не захтева одвојено плаћање — праћење је доступно у оквиру бесплатног Spark тарифа (ограничење 500.000 догађаја дневно) и плаћеног Blaze тарифа. Firebase Performance аутоматски генерише трасе за стандардне сценарије: cold start екрана, warm start, позадинске HTTP захтеве.
Архитектура сервиса је изграђена на два типа података: traces (трасе) и metrics (метрике). Траса је временски интервал са почетком и крајем, унутар којег се мери време извршења. Метрика је нумеричка вредност: величина одговора, учесталост грешака, брзина у бајтовима/сек. Свака траса може садржати више метрика. SDK прикупља податке на уређају, баферише их и шаље у Firebase у позадини са ниским приоритетом кашњења како не би утицао на корисничко искуство.
Према извештају Google I/O 2024, Firebase Performance се користи у преко 2 милиона апликација широм света. Просечан период откривања проблема са перформансама помоћу Firebase Performance је 15 минута након објављивања, ако су подешена упозорења. Без праћења, сличан проблем се открива у просеку након 2-3 дана на основу жалби корисника подршци.
Crashlytics прати падове и фаталне грешке — ситуације када се апликација неочекивано заустави. Firebase Performance прати перформансе апликације у раду: споре екране, дуге мрежне захтеве, кашњења одговора UI. Crashlytics одговара на питање „зашто се апликација срушила?„, а Performance на питање „зашто апликација ради споро?„. Оба сервиса се интегришу путем једног SDK (Firebase Core) и подаци се приказују у повезаним секцијама Firebase конзоле.
Firebase Performance не приказује просечне вредности — само перцентиле: P50, P75, P90, P95, P99. Ово је критично за перформансе: просечно време крије одступајуће вредности. Ако 99 корисника отвори екран за 200 ms, а један за 20 секунди, просек ће бити ~400 ms, што изгледа прихватљиво. P99 ће показати 20 секунди — прави проблем. Firebase приказује перцентиле на временској скали, што омогућава праћење регресија са прецизношћу до сата.
Firebase Performance SDK се интегрише у апликацију кроз стандардну интеграцију: додавање зависности у Gradle (Android) или путем CocoaPods (iOS). Након иницијализације Firebase у коду, SDK аутоматски почиње са прикупљањем метрика без додатног подешавања. Важан принцип рада — lazy collection: SDK не шаље податке одмах, већ их акумулира и прослеђује у серијама када су мрежни услови повољни.
За iOS SDK користи NSURLProtocol за пресретање HTTP захтева, а за Android — OkHttp Interceptor. Ако апликација не користи OkHttp, SDK аутоматски обавија HttpURLConnection. Пресретнути захтеви се обогаћују метаподацима: Content-Type, статус одговора, величина у бајтовима, трајање. Сви подаци се преносе путем HTTPS на Firebase сервер са TLS 1.3 енкрипцијом.
Један од кључних захтева Firebase Performance — бити последњи plugin на листи Gradle plugin-ова. Ако је редослед нарушен, SDK може да не пресреће све захтеве или да нетачно мери време покретања. Firebase препоручује постављање plugin-а на крај блока plugins, после Crashlytics и других Google Services plugin-ова.
// build.gradle (Module: app) — исправан редослед 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" // последњи!
}
dependencies {
implementation platform("com.google.firebase:firebase-bom:33.0.0")
implementation "com.google.firebase:firebase-perf"
}
Firebase Performance креира три типа аутоматских траса: screen trace (време приказивања екрана), app start trace (време покретања апликације) и network request trace (HTTP захтеви). Screen trace за Android мери време између позива Activity.onCreate и завршетка приказивања првог кадра. За iOS се мери време између viewDidLoad и viewDidAppear. Firebase аутоматски креира трасу за сваки екран, користећи име Activity или ViewController класе.
App start trace се дели на два типа: cold start (апликација се покреће изнова, процес није постојао) и warm start (апликација се опоравља из позадинског стања). Cold start је најкритичнији показатељ, јер укључује иницијализацију свих SDK-ова, учитавање DEX фајлова и креирање првог Activity. Firebase мери cold start од тренутка покретања процеса до потпуног приказивања првог екрана. Према Google препорукама, cold start не би требало да прелази 500 ms за P50 и 2 секунде за P99.
Network request trace аутоматски бележи сваки HTTP захтев са метаподацима: URL, метод, код одговора, величина одговора, брзина преноса. У Firebase Performance конзоли се захтеви могу филтрирати по URL обрасцу — на пример, приказати све захтеве ка /api/v2/orders. За сваки образац се приказују перцентили времена одговора и учесталост грешака 4xx/5xx. Ово омогућава брзо откривање деградације одређене API-ја без подешавања посебних упозорења.
За екране Firebase Performance додатно израчунава метрику „frozen frames„ — кадрове који су се приказивали дуже од 700 ms. Таква замрзавања UI корисник доживљава као „апликација се заглавила„. Ако на екрану постоји више од 1% frozen frames, Firebase означава метрику као проблематичну. За Android SDK додатно прикупља метрику slow renders — кадрове дуже од 16 ms (пропуштање 60 FPS). Комбинација screen trace и frozen frames даје потпуну слику како о времену учитавања, тако и о глаткоћи анимација.
Прилагођене трасе омогућавају мерење трајања било ког корисничког сценарија: наручивање, учитавање слике у облак, синхронизација података. Програмер експлицитно наводи почетак и крај трасе у коду и даје име сценарију. За разлику од аутоматских траса, прилагођене трасе пружају потпуну контролу над тиме шта се мери и омогућавају додавање атрибута за филтрирање.
Свака прилагођена траса може садржати атрибуте — парове кључ-вредност који се додају као метаподаци. Атрибути помажу у сегментацији података: на пример, може се пратити време наручивања одвојено за „promo_user„ и „regular_user„. Firebase Performance подржава до 5 атрибута по траси и до 100 јединствених вредности атрибута. Атрибути су индексирани и доступни за филтрирање у Firebase конзоли.
Према извештају Google I/O 2024, Spotify тим користи прилагођене трасе Firebase за праћење времена преласка између песама. Ово је омогућило смањење медијаног времена преласка са 400 ms на 120 ms идентификацијом уског грла у кеширању аудио бафера. Кључни увид је било филтрирање по атрибуту „device_model„ — проблем се јављао само на Samsung уређајима са 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()
// Извршење сценарија наручивања
validateCart()
processPayment()
confirmOrder()
trace.stop()
}
}
Интеграција Firebase Performance у Android захтева три корака: додавање google-services plugin-а, повезивање BOM (Bill of Materials) Firebase и додавање firebase-perf зависности. Firebase Performance аутоматски ради на свим Activity и фрагментима ако користе AppCompatActivity. За Compose екране Firebase препоручује коришћење прилагођених траса, јер аутоматско screen trace не подржава Compose директно.
Важна нијанса: Firebase Performance Gradle plugin мења бајткод апликације у фази компилације. Plugin додаје инструментациони код у сваки Activity и OkHttp клијент. Ово може повећати време изградње за 5-10% и величину APK-а за 200-400 KB. У debug верзијама Firebase Performance се аутоматски искључује — ово штити од изобличења метрика током локалног развоја. За присилно укључивање у debug-у користи се флаг firebasePerformanceInstrumentationEnabled у манифесту.
Firebase Performance такође подржава MetricKit за iOS и Perfetto за Android — нисконвојске системске трасере. MetricKit пружа податке о фреквенцији кадрова, потрошњи CPU и меморије на нивоу оперативног система. Firebase агрегира ове податке и приказује их у истој конзоли где се приказују HTTP трасе и screen traces, комбинујући системску и апликациону телеметрију у једном интерфејсу.
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 */ }
})
За iOS интеграција Firebase Performance се врши путем CocoaPods или Swift Package Manager. Након инсталације pod-ова FirebasePerformance и FirebaseCore, SDK аутоматски почиње са прикупљањем метрика. За пресретање HTTP захтева Firebase Performance iOS користи NSURLProtocol — системски механизам који омогућава пресретање свих URL учитавања у апликацији. SDK региструје своју NSURLProtocol подкласу при покретању и сви захтеви кроз URLSession аутоматски долазе под надзор.
Ограничење за iOS: Firebase Performance не подржава аутоматско screen trace за SwiftUI. За SwiftUI апликације потребно је ручно креирати прилагођене трасе, обавијајући тело View у start/stop блок. Firebase ради на изворној подршци за SwiftUI, али тренутно SDK аутоматски прати само UIView контролере. За хибридне апликације на UIKit + SwiftUI препоручује се креирање екрана у UIKit-у и уграђивање SwiftUI-ја путем UIHostingController-а.
Firebase Performance iOS такође пружа интеграцију са MetricKit — Apple фрејмворком који прикупља дијагностичке податке на нивоу оперативног система. MetricKit шаље дневне извештаје са метрикама CPU, GPU, меморије и фреквенције кадрова. Firebase Performance агрегира ове извештаје и приказује их у конзоли поред прилагођених траса, што даје потпуну слику перформанси како на нивоу апликације, тако и на нивоу система.
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()
}
}
Често постављана питања
Да, Firebase Performance је доступан на бесплатном Spark тарифу са лимитом 500.000 догађаја дневно. За пројекте са већим обимом података користи се Blaze тариф са плаћањем по потрошњи: 0,0003 долара за 1000 догађаја изнад лимита. За већину стартапа и средњих пројеката 500.000 догађаја дневно је више него довољно.
Firebase Performance SDK је оптимизован за минималан утицај. Слање података се обавља у позадинској нити са ниским приоритетом. Према Google тестовима, утицај SDK-а на време покретања је мањи од 1%. Величина SDK-а је око 300 KB за Android и 250 KB за iOS.
Аутоматски се прикупљају app start (cold/warm), screen rendering (време приказивања сваког екрана), HTTP захтеви (време, величина, статус) и frozen frames. За Android се додатно прикупља учесталост slow renders (>16 ms) и ANR.
Firebase Performance се аутоматски искључује у debug режиму. За присилну контролу користи се флаг у Android манифесту: firebasePerformanceInstrumentationEnabled. За iOS искључивање се врши путем флага -FIRPerformanceEnabled NO у аргументима шеме покретања.
Да, Firebase Performance подржава извоз у BigQuery. Након повезивања пројекта са BigQuery, све метрике се аутоматски дуплицирају у BigQuery табеле, доступне за SQL упите и креирање дашбордова у Looker Studio. Извоз се подешава у секцији Integrations Firebase конзоле.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође