All Products
Search
Document Center

Application Real-Time Monitoring Service:exception tracking

Last Updated:Mar 18, 2026

Exception Tracking automatically captures application errors and performance issues in production. When your app crashes, hangs, or fails to load resources, Exception Tracking collects error details, stack traces, and user context—helping you identify root causes and reproduce issues.

Features

With Exception Tracking, you can:

  • Detect errors automatically - The SDK captures crashes, ANRs, lag, and network failures without manual instrumentation.

  • Pinpoint exact code locations - Get symbolicated stack traces mapping directly to source files and line numbers.

  • Reproduce issues with session replays - See the exact user action sequence that triggered the error.

  • Diagnose network problems - Break down request timing by DNS, TCP, TLS, and TTFB to isolate client vs. server issues.

  • Monitor app stability - Track error rates across versions, devices, and pages.

Preparations

Before you begin, ensure that you have:

Note: Exception Tracking is enabled by default after SDK initialization. The SDK automatically collects network errors, crashes, ANRs, and lag events without additional configuration.

How Exception Tracking Works

Detection Methods

The SDK detects exceptions through:

  • Automatic capture - Monitors network request failures, crash signals, main thread blocking, and frame rate drops without code changes.

  • Manual reporting - Reports exceptions caught in your code (e.g., try-catch blocks) via the SDK's custom exception API for non-fatal errors or business-specific failures.

Stack Trace Collection and Symbolication

When an exception occurs, the SDK captures the call stack. Symbolication requirements vary by platform:

  • Web and Mini-Programs - Collects JavaScript error stack traces. For minified code, the service uses your SourceMap files to de-obfuscate stacks, mapping compressed positions to original file names, method names, and line numbers.

  • Mobile Apps (iOS/Android) - Captures full call stacks from the crash thread and all threads, plus binary image metadata (module names, architectures, UUIDs, load addresses). The service uses your symbol files (iOS dSYM / Android Mapping) to symbolicate memory addresses into readable class names, method names, and line numbers.

The goal: transform raw stacks into human-readable source locations for direct code inspection.

Contextual Enrichment

Every exception event includes:

  • Session ID - Links to the complete user session for action replay.

  • Page information - Page name and ID where the error occurred.

  • User identifiers - User ID, username, or custom identifiers.

  • Device and environment - Device model, OS version, network type, app version.

This context provides the full user journey—not just an isolated stack trace.

Exception Processing Flow

┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│  Exception   │───▶│  Signal      │───▶│  Stack       │
│  Occurs      │    │  Capture     │    │  Collection  │
└──────────────┘    └──────────────┘    └──────┬───────┘
                                               │
                                               ▼
┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│  Console     │◀───│  Server-side │◀───│  Attach      │
│  Root Cause  │    │  Symbolication│   │  Context     │
│  Analysis    │    │  & Restore   │    │  & Report    │
└──────────────┘    └──────────────┘    └──────────────┘
Note: Crashes terminate the app, so crash data is reported on the next app launch.

Exception Types

Network Request Errors

The SDK intercepts network requests. When requests fail, time out, or return HTTP errors, it logs errors with detailed timing breakdowns to distinguish client-side network issues from server-side problems.

Attribute

Description

Request URL

Full request address

HTTP Method

Request method (GET, POST, etc.)

Status Code

HTTP response status code

Error Type

Error classification (timeout, connection failure, etc.)

Resource Type

Resource type (API, Image, Media, Font, etc.)

DNS Timing

DNS resolution time (ms)

TCP Connect Timing

TCP connection time (ms)

TLS Timing

TLS handshake time (ms)

Time to First Byte (TTFB)

Time from request sent to first response byte (ms)

Response Timing

Total response time (ms)

Request Size

Request body size (bytes)

Response Size

Response body size (bytes)

Timing breakdowns help identify issues:

  • High DNS timing - DNS resolver instability or domain configuration issue

  • High TCP/TLS timing - Network path instability or certificate issue

  • High TTFB - Server processing delay

  • HTTP 4xx/5xx status - Server-side error requiring backend investigation

Slow Page Loads

The SDK measures page load time for every view. When load time exceeds the configured threshold, the page is flagged as slow.

Attribute

Description

Page Name

Page identifier

Page URL

Page path

Page Load Time

Time from load start to complete (ms)

Slow Load Flag

Whether threshold was exceeded

Page Dwell Time

Time user spent on the page (ms)

Note: Configure the slow load threshold remotely via the console.

App Crashes

The SDK captures crashes during app execution, including uncaught exceptions and system-level errors. Crash data is reported on next app launch.

Supported crash types:

Crash Type

Description

Platform

Uncaught Exceptions

Runtime exceptions not caught (e.g., iOS NSException, Android UncaughtException)

Mobile

System Signals

SIGSEGV (illegal memory access), SIGABRT (abnormal termination), SIGBUS (bus error)

Mobile

JavaScript Error

Uncaught JS runtime errors (TypeError, ReferenceError)

Web / Mini-Programs

Promise Rejection

Unhandled Promise rejections

Web / Mini-Programs

Wild Pointer Access

Crashes from accessing deallocated objects

Mobile

Captured attributes:

Attribute

Description

Exception Type

Crash classification

Exception Subtype

Specific signal type or error category

Exception Name

Exception name

Exception Reason

What caused the crash

Stack Trace

Full call stack at crash point

Crash Thread ID

Thread identifier where crash occurred (mobile)

Binary Images

Module names, architectures, UUIDs, load addresses for symbolication (mobile)

Page Context

Page where crash occurred

Session ID

Session containing the crash

App State

Whether app was in foreground

Crash Timestamp

Exact crash time

ANR (Application Not Responding)

The SDK detects when the main thread is blocked for an extended period. When blocking exceeds the threshold, an ANR event is logged with the main thread stack trace.

Attribute

Description

Exception Type

ANR / Main thread deadlock

Stack Trace

Main thread call stack at ANR

Binary Images

Module information for symbolication

Page Context

Page where ANR occurred

Session ID

Session containing the ANR

Common ANR causes:

  • Main thread performing synchronous I/O operations (file reads/writes, database queries)

  • Main thread executing heavy computation or large data processing

  • Deadlock or inter-thread waiting

  • Synchronous network requests blocking the main thread

Lag (Long Task)

The SDK monitors main thread execution and rendering frame rate. When it detects long-running blocking or frame rate drops, it records lag events.

Attribute

Description

Lag Type

Lag classification (main thread blocking, frame rate drop)

Lag Duration

Main thread blocking duration (ms)

Stack Trace

Main thread call stack during lag

Binary Images

Module information for symbolication

Page Context

Page where lag occurred

Session ID

Session containing the lag

Detected lag types:

  • Main Thread Blocking - Tasks exceeding the execution time threshold

  • Frame Rate Drop (FPS Drop) - Rendering frame rate below threshold, causing UI stuttering

  • Disk I/O Blocking - Disk read/write operations on the main thread

  • CPU Overload - High CPU usage causing performance degradation

Root Cause Analysis

Exception Tracking helps you move quickly from symptoms to root causes:

Stack Symbolication

Raw stacks require symbolication to become actionable:

  • Web apps - Upload SourceMap files to map minified code positions to original source file names, method names, and line/column numbers.

  • Mobile apps - Upload symbol files (iOS dSYM / Android Mapping) to convert memory addresses to readable class names, method names, and line numbers.

After symbolication:

  • Identify the class and method - See exactly which class and method threw the error.

  • Jump to the source line - Get the precise file name and line number.

Symbolicated stacks let you jump directly to the problematic code.

Session Replay

Every exception links to a Session ID and page context. From the console, view the user's complete action sequence before the error:

  1. Which pages the user visited in order

  2. What actions they performed on each page (taps, scrolls)

  3. Which network requests were triggered and whether they succeeded

  4. Whether other errors or lag occurred before the final exception

This context provides the full scenario—not just an isolated stack trace.

Multi-Dimensional Aggregation

The console automatically groups similar exceptions. Analyze impact and distribution patterns across dimensions:

  • Device - Errors concentrated on specific device models or OS versions

  • Version - Error introduced in a particular release

  • Page - Errors concentrated on specific pages

  • Time - Error spikes during specific time windows

Use Cases

Diagnosing Crash Root Causes

Production crash rate suddenly spikes. Check the crash list in the console to identify new crash types. View the symbolicated stack to pinpoint the exact code line. Review session replays—crashes consistently occur after users perform a specific action sequence, confirming a logic bug in the latest release.

Troubleshooting Network Failures

User reports "data failed to load." Use the user ID to find the session. Locate the failed network request in the session trace. Check timing: DNS and TCP connection are normal, but TTFB exceeds 10 seconds and returns 504—identifying a backend timeout for escalation to the server team.

Optimizing Lag Performance

User reports "list scrolling is choppy." Check lag events—many frame rate drops concentrate on the product list page. Review the lag stack trace—the main thread performs synchronous image decoding during scroll. Move image decoding to a background thread, resolving the lag.

FAQ

Do I need to manually enable Exception Tracking?

No. After SDK initialization, crashes, ANRs, lag, and network errors are collected automatically.

Is crash data reported in real time?

Mobile crashes terminate the app, so crash data is reported on next app launch. Web JavaScript errors are reported in real time. Other exception types (network errors, lag, ANR) are reported in real time.

How do I upload symbol files or SourceMaps?

Upload files in the console's application settings: Web apps upload SourceMap files, iOS apps upload dSYM files, Android apps upload Mapping files. We recommend integrating automatic uploads into your CI/CD pipeline to ensure timely symbol file uploads for every release.

How do I report custom exceptions?

For exceptions caught in your code, use the SDK's custom exception reporting API. Refer to your platform's SDK configuration documentation for API usage.

What's the difference between ANR and lag?

ANR indicates the main thread is completely unresponsive for an extended period (typically from deadlock or severe blocking)—a critical issue. Lag indicates brief main thread blocking or frame rate drops causing UI stuttering—affects user experience but doesn't render the app unresponsive. Detection mechanisms and thresholds differ; ANR thresholds are typically higher.

Does exception collection impact app performance?

The SDK's exception collection is optimized for minimal performance impact. Stack collection only triggers when exceptions occur. Lag and frame rate monitoring use lightweight detection methods with negligible main thread overhead.