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 разів. Зв'яжіться з нами — оцінимо строки безкоштовно. Отримайте консультацію з інтеграції та скоротите бюджет на налагодження вже сьогодні.