Настройка дашборда Crash-Free Users Rate для мобильного приложения
Crash-Free Users Rate — метрика, которую продакт-менеджер, тимлид и CTO смотрят в первую очередь после релиза. Но стандартный дашборд в Firebase Crashlytics показывает только общий процент и топ-5 крэшей. Чтобы ответить на вопрос «у какой версии, на каком устройстве и в каком регионе проблема» — нужен дашборд с drill-down.
Что должен показывать дашборд
Минимальный набор измерений:
- По версии приложения — сравнение текущего релиза с предыдущим
- По платформе — iOS vs Android отдельно
- По OS версии — часто крэши специфичны для Android 8 или iOS 15
- По устройству — Samsung Galaxy A-серии 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 дня. Стоимость рассчитывается индивидуально.







