Firebase Performance Monitoring ریئل ٹائم میں موبائل ایپس کی کارکردگی کو ٹریک کرنے کا Google کا ایک مفت ٹول ہے۔ سروس بنیادی منظرناموں کے لیے کوڈ لکھنے کی ضرورت کے بغیر اسٹارٹ اپ ٹائم، اسکرین رینڈرنگ کی رفتار اور HTTP درخواستوں کی مدت کے میٹرکس خودکار طور پر جمع کرتی ہے۔ Google Firebase, 2025 کے مطابق، SDK اضافی ترتیب کے بغیر خودکار طور پر نیٹ ورک کی 90% تک درخواستوں کو ٹریس کرتا ہے۔ یہ ٹول Firebase ایکو سسٹم کے تحت Android، iOS اور ویب ایپلیکیشنز کے لیے دستیاب ہے۔
اہم نکات
Firebase Performance Monitoring Google کی ایک کلاؤڈ سروس ہے جو موبائل ایپلیکیشنز کی کارکردگی کے میٹرکس جمع اور ظاہر کرتی ہے۔ یہ سروس Firebase ٹول سیٹ کا حصہ ہے اور اس کے لیے علیحدہ ادائیگی کی ضرورت نہیں ہے — نگرانی مفت Spark ٹیئر (فی دن 500,000 ایونٹس کی حد) اور ادائیگی والے Blaze ٹیئر میں دستیاب ہے۔ Firebase Performance معیاری منظرناموں کے لیے خودکار طور پر ٹریسز تیار کرتا ہے: کولڈ اسکرین اسٹارٹ، وارم اسٹارٹ، بیک گراؤنڈ 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 اضافی ترتیب کے بغیر خودکار طور پر میٹرکس جمع کرنا شروع کر دیتا ہے۔ ایک اہم اصول سست جمع آوری ہے: SDK ڈیٹا فوری طور پر نہیں بھیجتا، بلکہ اسے جمع کرتا ہے اور سازگار نیٹ ورک حالات میں بیچوں میں منتقل کرتا ہے۔
iOS کے لیے، SDK HTTP درخواستوں کو روکنے کے لیے NSURLProtocol استعمال کرتا ہے؛ Android کے لیے — OkHttp Interceptor۔ اگر ایپلیکیشن OkHttp استعمال نہیں کرتی، SDK خودکار طور پر HttpURLConnection کو لپیٹ دیتا ہے۔ روکی گئی درخواستیں میٹا ڈیٹا سے افزودہ ہوتی ہیں: Content-Type، جوابی حالت، بائٹس میں سائز، مدت۔ تمام ڈیٹا TLS 1.3 انکرپشن کے ساتھ HTTPS کے ذریعے Firebase سرور کو منتقل کیا جاتا ہے۔
Firebase Performance کی اہم ضروریات میں سے ایک Gradle پلگ ان کی فہرست میں آخری پلگ ان ہونا ہے۔ اگر ترتیب کی خلاف ورزی کی جاتی ہے، تو SDK تمام درخواستوں کو نہیں روک سکتا یا اسٹارٹ اپ ٹائم کو غلط طریقے سے ناپ سکتا ہے۔ Firebase پلگ ان کو پلگ ان بلاک کے آخر میں، Crashlytics اور دیگر Google Services پلگ ان کے بعد رکھنے کی سفارش کرتا ہے۔
// build.gradle (Module: app) — پلگ ان کی صحیح ترتیب
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 درخواستیں)۔ Android کے لیے screen trace Activity.onCreate کال اور پہلے فریم کی رینڈرنگ مکمل ہونے کے درمیان کا وقت ناپتا ہے۔ iOS کے لیے، viewDidLoad اور viewDidAppear کے درمیان کا وقت ناپا جاتا ہے۔ Firebase ہر اسکرین کے لیے خودکار طور پر ایک ٹریس بناتا ہے، Activity یا ViewController کا کلاس نام استعمال کرتے ہوئے۔
App start trace دو اقسام میں تقسیم ہے: کولڈ اسٹارٹ (ایپلیکیشن شروع سے شروع ہوتی ہے، عمل موجود نہیں تھا) اور وارم اسٹارٹ (ایپلیکیشن بیک گراؤنڈ حالت سے بحال ہوتی ہے)۔ کولڈ اسٹارٹ سب سے اہم میٹرک ہے کیونکہ اس میں تمام SDK کی ابتدائیہ، DEX فائلیں لوڈ کرنا اور پہلی Activity بنانا شامل ہے۔ Firebase عمل شروع ہونے کے لمحے سے پہلی اسکرین کے مکمل رینڈر ہونے تک کولڈ اسٹارٹ ناپتا ہے۔ Google کی سفارشات کے مطابق، کولڈ اسٹارٹ P50 کے لیے 500 ms اور P99 کے لیے 2 سیکنڈ سے زیادہ نہیں ہونا چاہیے۔
Network request trace میٹا ڈیٹا (URL، طریقہ، جوابی کوڈ، جوابی سائز، منتقلی کی رفتار) کے ساتھ ہر HTTP درخواست کو خودکار طور پر ریکارڈ کرتا ہے۔ 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" صفت کے مطابق فلٹرنگ سے آئی — مسئلہ صرف Android 13 والے Samsung آلات پر ظاہر ہوا۔
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()
}
}
Android میں Firebase Performance کا انضمام تین مراحل کی ضرورت ہے: google-services پلگ ان شامل کرنا، Firebase BOM (Bill of Materials) جوڑنا اور firebase-perf انحصار شامل کرنا۔ Firebase Performance تمام Activity اور فریگمنٹس پر خودکار طور پر کام کرتا ہے اگر وہ AppCompatActivity استعمال کرتے ہیں۔ Compose اسکرینوں کے لیے، Firebase کسٹم ٹریسز استعمال کرنے کی سفارش کرتا ہے کیونکہ خودکار screen trace براہ راست Compose کو سپورٹ نہیں کرتا۔
ایک اہم باریکی: Firebase Performance Gradle پلگ ان کمپائل ٹائم پر ایپلیکیشن کے بائٹ کوڈ میں ترمیم کرتا ہے۔ پلگ ان ہر Activity اور OkHttp کلائنٹ میں انسٹرومینٹیشن کوڈ شامل کرتا ہے۔ اس سے بلڈ ٹائم 5-10% اور APK سائز 200-400 KB تک بڑھ سکتا ہے۔ ڈیبگ بلڈز میں، Firebase Performance خودکار طور پر غیر فعال ہو جاتا ہے — یہ مقامی ڈیولپمنٹ کے دوران میٹرک کی خرابی کو روکتا ہے۔ ڈیبگ میں جبری طور پر فعال کرنے کے لیے، مینی فیسٹ میں firebasePerformanceInstrumentationEnabled فلیگ استعمال کریں۔
Firebase Performance iOS کے لیے MetricKit اور Android کے لیے Perfetto کو بھی سپورٹ کرتا ہے — نچلی سطح کے سسٹم ٹریسرز۔ 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 کے ذریعے کیا جاتا ہے۔ FirebasePerformance اور FirebaseCore پوڈز انسٹال کرنے کے بعد، SDK خودکار طور پر میٹرکس جمع کرنا شروع کر دیتا ہے۔ HTTP درخواستوں کو روکنے کے لیے، Firebase Performance iOS NSURLProtocol استعمال کرتا ہے — ایک سسٹم میکانزم جو ایپلیکیشن میں تمام URL لوڈز کو روکنے کی اجازت دیتا ہے۔ SDK اسٹارٹ اپ پر اپنا NSURLProtocol ذیلی طبقہ رجسٹر کرتا ہے، اور URLSession کے ذریعے تمام درخواستیں خودکار طور پر نگرانی میں آ جاتی ہیں۔
iOS کے لیے حد: Firebase Performance SwiftUI کے لیے خودکار screen trace کو سپورٹ نہیں کرتا۔ SwiftUI ایپلیکیشنز کے لیے، آپ کو View باڈی کو اسٹارٹ/اسٹاپ بلاک میں لپیٹ کر دستی طور پر کسٹم ٹریسز بنانا ہوں گے۔ Firebase مقامی SwiftUI سپورٹ پر کام کر رہا ہے، لیکن فی الحال SDK صرف UIView کنٹرولرز کو خودکار طور پر ٹریس کرتا ہے۔ UIKit + SwiftUI پر ہائبرڈ ایپلیکیشنز کے لیے، UIKit پر اسکرینیں بنانے اور UIHostingController کے ذریعے SwiftUI ایمبیڈ کرنے کی سفارش کی جاتی ہے۔
Firebase Performance iOS MetricKit کے ساتھ انضمام بھی فراہم کرتا ہے — Apple کا ایک فریم ورک جو OS کی سطح پر تشخیصی ڈیٹا جمع کرتا ہے۔ 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 ٹیئر استعمال کیا جاتا ہے جس میں استعمال کے مطابق ادائیگی ہوتی ہے: حد سے زیادہ ہر 1,000 ایونٹس کے لیے $0.0003۔ زیادہ تر اسٹارٹ اپس اور درمیانے درجے کے پروجیکٹس کے لیے، فی دن 500,000 ایونٹس کافی سے زیادہ ہیں۔
Firebase Performance SDK کم سے کم اثر کے لیے بہتر بنایا گیا ہے۔ ڈیٹا بھیجنا کم ترجیح والے بیک گراؤنڈ تھریڈ پر کیا جاتا ہے۔ Google کے ٹیسٹوں کے مطابق، لانچ ٹائم پر SDK کا اثر 1% سے کم ہے۔ SDK کا سائز Android کے لیے تقریباً 300 KB اور iOS کے لیے 250 KB ہے۔
App start (کولڈ/وارم)، screen rendering (ہر اسکرین کا رینڈرنگ وقت)، HTTP درخواستیں (وقت، سائز، سٹیٹس) اور frozen frames خودکار طور پر جمع ہوتے ہیں۔ Android کے لیے، slow renders کی فریکوئنسی (>16 ms) اور ANR بھی جمع ہوتے ہیں۔
Firebase Performance ڈیبگ موڈ میں خودکار طور پر غیر فعال ہو جاتا ہے۔ جبری کنٹرول کے لیے، Android مینی فیسٹ میں فلیگ استعمال کریں: firebasePerformanceInstrumentationEnabled۔ iOS کے لیے، غیر فعال کرنا لانچ سکیم آرگیومینٹس میں -FIRPerformanceEnabled NO فلیگ کے ذریعے کیا جاتا ہے۔
جی ہاں، Firebase Performance BigQuery میں برآمد کرنے کو سپورٹ کرتا ہے۔ پروجیکٹ کو BigQuery سے منسلک کرنے کے بعد، تمام میٹرکس خودکار طور پر BigQuery ٹیبلز میں نقل ہو جاتے ہیں، جو SQL سوالات اور Looker Studio میں ڈیش بورڈز بنانے کے لیے دستیاب ہوتے ہیں۔ برآمد Firebase کنسول کے انٹیگریشنز سیکشن میں ترتیب دی جاتی ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں