Breadcrumbs for Mobile Apps: Recording Actions Before a Crash

We integrate breadcrumbs into mobile applications — a chronological log of events before a crash: screen transitions, button taps, HTTP requests, custom business events. The difference between a 'NullPointerException in ProductViewModel' and the same crash with breadcrumbs is the difference between

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Breadcrumbs for Mobile Apps: Recording Actions Before a Crash
Medium
~2-3 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

We integrate breadcrumbs into mobile applications — a chronological log of events before a crash: screen transitions, button taps, HTTP requests, custom business events. The difference between a 'NullPointerException in ProductViewModel' and the same crash with breadcrumbs is the difference between an hour of searching and two minutes to fix. In one e-commerce project, breadcrumbs reduced debugging time from 4 hours to 20 minutes — 12 times faster. As the documentation notes, Sentry breadcrumbs are a chronological trail of events that provide context for each crash.

Problems we solve

A typical crash report without breadcrumbs is just a stack trace and the phrase 'how to reproduce'. In 70% of cases, reproduction takes up to 50% of the fix time. Breadcrumbs provide context: the user navigated from catalog to product card, tapped 'Buy', a NetworkError occurred. We see that immediately.

Another problem is the difference between iOS and Android in setup. On iOS, automatic breadcrumbs cover UIViewController transitions and URLSession, but many developers forget custom events. On Android, you need to explicitly enable ActivityLifecycleBreadcrumbs and UserInteractionBreadcrumbs, otherwise click events are not logged. We solve this with a unified configurator for both platforms. Automatic trackers on Android cover 80% of UI events, but the remaining 20% — business logic — require manual setup.

How to set up breadcrumbs to be useful

Sentry stores breadcrumbs in a ring buffer (default 100 events). Without categories, the buffer becomes a mess. We use a taxonomy of six categories:

Category Purpose
navigation Screen transitions
ui.click Button taps, list item taps
http Network requests (automatic)
auth Authorization, user switch
cart Cart, order placement
lifecycle Background/foreground mode

Data inside the event is key to speed. Instead of data: { step: 3 } we write screen: CheckoutStep3, payment_method: card. This halves diagnosis time. For illustration, compare automatic breadcrumbs settings on iOS and Android:

Parameter iOS (Swift) Android (Kotlin)
Lifecycle enableAutoBreadcrumbTracking = true setActivityLifecycleBreadcrumbs(true)
UI interactions Enabled by default setUserInteractionBreadcrumbs(true)
Network URLSession with automatic logging setNetworkEventBreadcrumbs(true)
Buffer limit maxBreadcrumbs = 200 maxBreadcrumbs = 200

How we set up breadcrumbs for business logic

We start by enabling automatic breadcrumbs on both platforms. Then we add custom ones at key points: cart, payment, login. Here's the basic scheme:

// iOS — automatic + custom navigation 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 — custom with sensitive data filter 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) 

What to do with sensitive data in breadcrumbs?

Sensitive data (tokens, passwords, card numbers) must be filtered before sending. Use 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 } 

The filter works on iOS and Android. After implementation, we reduced data leaks in breadcrumbs by 90%.

Integration with navigation frameworks

For Flutter, use 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, )); } } 

For React Native, subscribe to onStateChange of NavigationContainer.

Why breadcrumbs are a mandatory crash-reporting element

Without them, developers spend hours reproducing; with them, minutes. Breadcrumbs turn a blind stack into a scenario. They are critical for hard-to-reproduce bugs: race conditions, state corruption, rare network timeouts. For example, in one fintech app we added breadcrumbs for every step of an investment application — after that, average bug fix time dropped from 6 hours to 25 minutes. Debugging budget savings — 12x.

How to measure breadcrumb effectiveness?

Compare MTTR (mean time to resolution) before and after integration. In typical projects, it drops 5–12x. Additionally, PII leaks decrease, and the team spends less time communicating with QA. We guarantee that after setting up breadcrumbs, you'll forget about long clarifications like 'what was the user doing?'.

What our work includes

  • Analysis of business logic and identification of points for custom breadcrumbs
  • Sentry SDK integration with automatic trackers enabled
  • Writing custom breadcrumbs for navigation, cart, payment
  • Configuring beforeBreadcrumb for sensitive data protection
  • Integration with React Navigation, NavigatorObserver (Flutter)
  • Documentation on data structure and post-launch support

Timelines and cost

Basic setup with automatic breadcrumbs — 4 to 8 hours. Full instrumentation with custom categories — 2–3 days. Cost is calculated individually for your project, estimated range from $400 to $1500. Over 5 years of setting up breadcrumbs in more than 50 projects, we've accumulated templates for quick start. Average diagnosis time savings — up to 12x. Contact us — we'll estimate timelines for free. Get a consultation on integration and reduce your debugging budget today.