Breadcrumbs for Mobile Apps: Recording Actions Before a Crash

Developers spend hours reproducing a crash when the call stack doesn't explain what the user did before the failure. We implement breadcrumbs in mobile apps—a chronological action log that turns 'how to reproduce this' into a clear scenario. Our team configures automatic and custom events on iOS and Android, delivering a turnkey solution with ongoing support to make diagnostics fast and reliable.

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.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a mobile application for FEEDME
    Development of a mobile application for FEEDME
    971
  • Development of a mobile application for XOOMER
    Development of a mobile application for XOOMER
    868
  • Development of a mobile application for RHL
    Development of a mobile application for RHL
    1288
  • Development of a mobile application for ZIPPY
    Development of a mobile application for ZIPPY
    1143
  • Development of a mobile application for Affhome
    Development of a mobile application for Affhome
    1076
  • Development of a mobile application for the FLAVORS company
    Development of a mobile application for the FLAVORS company
    677

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. Get a consultation on integration and reduce your debugging budget today.