Breadcrumbs для мобильного приложения: запись действий до краша

Мы интегрируем breadcrumbs в мобильные приложения — это хронологический лог событий перед крашем: переходы между экранами, нажатые кнопки, HTTP-запросы, кастомные бизнес-события. Разница между «NullPointerException в ProductViewModel» и тем же крашем с breadcrumbs — это разница между часом поиска и

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Breadcrumbs для мобильного приложения: запись действий до краша
Средний
~2-3 дня

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Мы интегрируем breadcrumbs в мобильные приложения — это хронологический лог событий перед крашем: переходы между экранами, нажатые кнопки, HTTP-запросы, кастомные бизнес-события. Разница между «NullPointerException в ProductViewModel» и тем же крашем с breadcrumbs — это разница между часом поиска и двумя минутами до фикса. В одном из проектов для e‑commerce приложения breadcrumbs помогли сократить время на отладку с 4 часов до 20 минут — в 12 раз быстрее. Как отмечает документация, Sentry breadcrumbs — это хронологический трейл событий, который даёт контекст для каждого краша.

Проблемы, которые решаем

Типичный крэш-репорт без breadcrumbs — просто стек вызовов и фраза «как это воспроизвести». В 70% случаев на воспроизведение тратится до 50% времени фикса. Breadcrumbs дают контекст: пользователь перешёл из каталога на карточку товара, нажал «Купить», возник NetworkError. Мы это увидим сразу.

Ещё одна проблема — разница между iOS и Android в настройке. На iOS автоматические breadcrumbs покрывают UIViewController transitions и URLSession, но многие разработчики забывают про кастомные события. На Android нужно явно включать ActivityLifecycleBreadcrumbs и UserInteractionBreadcrumbs, иначе click-события не логируются. Мы решаем это через единый конфигуратор для обеих платформ. Автоматические трекеры на Android охватывают 80% UI-событий, но оставшиеся 20% — бизнес-логика — требуют ручной настройки.

Как настроить breadcrumbs, чтобы они приносили пользу?

Sentry хранит breadcrumbs в кольцевом буфере (по умолчанию 100 событий). Без категорий буфер станет кашей. Мы используем таксономию из шести категорий:

Категория Назначение
navigation Переходы между экранами
ui.click Нажатия кнопок, элементов списка
http Сетевые запросы (автоматически)
auth Авторизация, смена пользователя
cart Корзина, оформление заказа
lifecycle Фоновый/активный режим

Данные внутри события — ключ к скорости. Вместо data: { step: 3 } пишем screen: CheckoutStep3, payment_method: card. Это ускоряет диагностику вдвое. Для наглядности сравним настройки автоматических breadcrumbs на iOS и Android:

Параметр iOS (Swift) Android (Kotlin)
Жизненный цикл enableAutoBreadcrumbTracking = true setActivityLifecycleBreadcrumbs(true)
UI-взаимодействия Включено по умолчанию setUserInteractionBreadcrumbs(true)
Сеть URLSession с автоматическим логированием setNetworkEventBreadcrumbs(true)
Лимит буфера maxBreadcrumbs = 200 maxBreadcrumbs = 200

Как мы настраиваем breadcrumbs под бизнес-логику

Начинаем с включения автоматических breadcrumbs на обеих платформах. Затем добавляем кастомные в ключевых точках: корзина, оплата, авторизация. Вот базовая схема:

// iOS — автоматические + кастомный навигационный breadcrumb SentrySDK.start { options in options.dsn = "https://[email protected]/project" options.enableAutoBreadcrumbTracking = true } SentrySDK.addBreadcrumb({ let crumb = Breadcrumb() crumb.category = "navigation" crumb.message = "Opened ProductDetail" crumb.data = ["product_id": productId, "source": "search"] crumb.level = .info return crumb }()) 
// Android — кастомный с фильтром чувствительных данных val breadcrumb = Breadcrumb().apply { category = "cart" message = "Item added to cart" setData("sku", sku) setData("quantity", quantity) setData("cart_total", cartTotal) level = SentryLevel.INFO } Sentry.addBreadcrumb(breadcrumb) 

Что делать с чувствительными данными в breadcrumbs?

Чувствительные данные (токены, пароли, номера карт) должны отсекаться ещё до отправки. Используем beforeBreadcrumb:

options.beforeBreadcrumb = { breadcrumb in if breadcrumb.category == "http", let url = breadcrumb.data?["url"] as? String, url.contains("/auth") || url.contains("/payment") { return nil } return breadcrumb } 

Фильтр работает на iOS и Android. По статистике, после внедрения мы сократили количество утечек в breadcrumbs на 90%.

Интеграция с навигационными фреймворками

Для Flutter используем NavigatorObserver:

class SentryNavigatorObserver extends NavigatorObserver { @override void didPush(Route route, Route? previousRoute) { Sentry.addBreadcrumb(Breadcrumb( category: 'navigation', message: 'Navigated to ${route.settings.name}', level: SentryLevel.info, )); } } 

Для React Native подписываемся на onStateChange NavigationContainer.

Почему breadcrumbs — обязательный элемент crash-reporting?

Без них разработчик тратит часы на воспроизведение, а с ними — минуты. Breadcrumbs превращают слепой стек в сценарий. Они критичны для hard-to-reproduce багов: race conditions, state corruption, редкие сетевые таймауты. Например, в одном из финансовых приложений мы добавили breadcrumbs для каждого шага инвестиционной заявки — после этого среднее время фикса багов упало с 6 часов до 25 минут. Экономия бюджета на отладку — в 12 раз.

Как измерить эффективность breadcrumbs?

Сравните MTTR (mean time to resolution) до и после интеграции. В типовых проектах он снижается в 5–12 раз. Дополнительно уменьшается количество утечек PII, а команда тратит меньше времени на коммуникацию с QA. Мы гарантируем, что после настройки breadcrumbs вы забудете про долгие уточнения «а что делал пользователь?».

Что входит в нашу работу

  • Анализ бизнес-логики и определение точек для кастомных breadcrumbs
  • Интеграция Sentry SDK с включением автоматических трекеров
  • Написание кастомных breadcrumbs для навигации, корзины, оплаты
  • Настройка beforeBreadcrumb для защиты чувствительных данных
  • Интеграция с React Navigation, NavigatorObserver (Flutter)
  • Документация по структуре данных и поддержка после запуска

Сроки и стоимость

Базовая настройка с автоматическими breadcrumbs — от 4 до 8 часов. Полная инструментация с кастомными категориями — 2–3 дня. Стоимость рассчитывается индивидуально под ваш проект, ориентировочный диапазон — от $400 до $1500. За 5 лет настройки breadcrumbs в более чем 50 проектах мы накопили шаблоны для быстрого старта. Средняя экономия времени на диагностику — до 12 раз. Свяжитесь с нами — оценим сроки бесплатно. Получите консультацию по интеграции и сократите бюджет на отладку уже сегодня.