Налаштування дашборду Crash-Free Users Rate для мобільного додатку
Crash-Free Users Rate — метрика, яку product manager, тімлід та CTO дивляться в першу чергу після релізу. Але стандартний дашборд у Firebase Crashlytics показує тільки загальний відсоток та топ-5 крахів. Щоб відповісти на запитання «у якої версії, на якому пристрої та в якому регіоні проблема» — потрібен дашборд з drill-down.
Що має показувати дашборд
Мінімальний набір вимірів:
- За версією додатку — порівняння поточного релізу з попереднім
- За платформою — iOS vs Android окремо
- За версією OS — крахи часто специфічні для Android 8 або iOS 15
- За пристроєм — Samsung Galaxy A-series vs Pixel vs iPhone SE
- За часом — динаміка за 7/30 днів, аномалії після деплоїв
Sentry Release Comparison
У Sentry це вбудовано в Release Health. Але якщо потрібен кастомний дашборд:
# Sentry API — отримати crash-free rate за релізами
import requests
resp = requests.get(
"https://sentry.io/api/0/organizations/YOUR_ORG/sessions/",
headers={"Authorization": "Bearer YOUR_TOKEN"},
params={
"project": "YOUR_PROJECT_ID",
"field": ["crash_free_rate(session)", "sum(session)"],
"groupBy": "release",
"statsPeriod": "14d",
"interval": "1d"
}
)
data = resp.json()
Datadog RUM Dashboard
У Datadog дашборд будується через RUM Analytics. Запит для віджета:
# Crash-Free Users Rate за версією
formula: (1 - (count:rum.crash{env:production} / count:rum.session{env:production})) * 100
group_by: @application.version
visualize_as: timeseries
Корисний віджет — Comparison: порівняти поточну версію з попередньою на одному графіку:
# Версія n
count:rum.crash{env:production,application.version:2.3.1} / count:rum.session{env:production,application.version:2.3.1}
# Версія n-1
count:rum.crash{env:production,application.version:2.3.0} / count:rum.session{env:production,application.version:2.3.0}
Firebase + Grafana
Firebase Crashlytics не має API для експорту метрик у реальному часі, але BigQuery Export дозволяє стримити дані:
-- BigQuery: Crash-Free Users Rate за версією за останні 30 днів
SELECT
app_info.version AS app_version,
platform,
ROUND(
100 * (1 - COUNTIF(is_fatal) / COUNT(DISTINCT user.id)),
2
) AS crash_free_users_rate,
COUNT(DISTINCT user.id) AS total_users
FROM `project.firebase_crashlytics.table_YYYYMMDD`
WHERE DATE(_PARTITIONTIME) >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY app_version, platform
ORDER BY app_version DESC
З BigQuery дані можна тягнути у Grafana через BigQuery Data Source плагін та будувати потрібні візуалізації.
Важлива примітка: Users vs Sessions
Firebase рахує Crash-Free Sessions Rate за замовчуванням. Sentry рахує Users Rate. Це різні числа.
Якщо один користувач відкрив додаток 10 разів і впав в одній сесії:
- Sessions Rate: 90% crash-free sessions (1 з 10 сесій з крахом)
- Users Rate: 0% crash-free users для цього користувача
Users Rate — більш жорстка та чесна метрика для UX. Sessions Rate — зручніша для мониторингу тренду.
Компоновка дашборду
┌─────────────────────────────────────────────────────────────────┐
│ Crash-Free Users Rate [last 7d] [last 30d] [custom] │
├──────────────────────────┬──────────────────────────────────────┤
│ Timeseries: │ By Version: │
│ v2.3.1 vs v2.3.0 │ v2.3.1: 99.4% (12,340 users) │
│ [graph] │ v2.3.0: 98.9% (45,120 users) │
│ │ v2.2.8: 99.1% (8,230 users) │
├──────────────────────────┼──────────────────────────────────────┤
│ By Platform: │ By OS Version: │
│ iOS: 99.5% │ Android 13: 99.6% │
│ Android: 98.9% │ Android 11: 98.4% ← аномалія │
│ │ iOS 17: 99.7% │
│ │ iOS 15: 99.2% │
├──────────────────────────┴──────────────────────────────────────┤
│ Top Crash Issues (last 24h): │
│ 1. NullPointerException in CartViewModel [+340% vs yesterday] │
│ 2. OutOfMemoryError in ImageLoader │
└─────────────────────────────────────────────────────────────────┘
Червона аномалія на Android 11 в прикладі вище — реальний паттерн. Часто пов'язана з баком системної бібліотеки в конкретній версії OS, яку додаток триггерить.
Що ми робимо
- Визначаємо джерело даних (Sentry / Datadog / Firebase+BigQuery)
- Будуємо дашборд з drill-down за версією, платформою, OS, пристроєм
- Налаштовуємо comparison-віджети для порівняння релізів
- Додаємо алерт при падінні нижче порога (наприклад, < 99%)
- Створюємо Slack-digest з щоденним звітом по Crash-Free Rate
Часові оцінки
Дашборд у Sentry або Datadog: 4–8 годин. Firebase + BigQuery + Grafana: 1–2 дні. Ціна розраховується індивідуально.







