Skip to main content

Issue detection — Overview

note

The detection subsystem is new in 7.0.0. Several detectors are off by default and must be explicitly enabled.

7.0.0 introduces a dedicated detection subsystem that observes the running app and turns behavior deviations into Bugsee issue reports. Each detector is an independent provider — enable or disable any of them in isolation without affecting the rest of the SDK.

Built-in detectors

DetectorWhat it observesDefaultDocumentation
CrashesUncaught JVM (Java / Kotlin) exceptionsOnCrashes
HangsMain-thread stalls long enough to degrade UX, but short enough that the OS hasn't raised an ANROffHangs
ExitsProcess terminations reported by ActivityManager.getHistoricalProcessExitReasons() — ANRs, low-memory kills, dependency death, and moreOn (master) / per-reason mixExits
Main-thread misuseBlocking I/O, network, DB, or SharedPreferences work performed on the UI threadOffMain-thread misuse
HTTP errors5xx server responses surfaced as standalone issuesOffHTTP errors
AnomalyPer-bucket statistical outliers over completed APM transactionsOffAnomaly
FrustrationUX-frustration patterns: rage taps, error taps, stuck loading, frozen UIOffFrustration

Extension-shipped detectors

DetectorExtensionWhat it observesDefaultDocumentation
Native crashesbugsee-android-ndkNative (NDK) crashes via Crashpad, with ApplicationExitInfo tombstone matchingOn (when module present)Native crashes
Memory leaksbugsee-android-leakRetained Activity / Fragment / ViewModel / Compose nodes via watch-source instrumentation; Shark heap-dump for deep modesOn (when module present)Leaks
Thread leaksbugsee-android-leakThread-group growth over time as a proxy for leaking ThreadPoolExecutor / unbounded task scheduling (Java-only Phase 1)OffLeaks

Extension detectors register themselves with the detection coordinator at process start via their module's ContentProvider — adding the Gradle dependency (or DSL toggle, for ndk / leak) is the only setup required.

How options work

Every detector is gated by a single Options.* constant from com.bugsee.library.contracts.options. The same string key can be set in two equivalent ways:

  • As AndroidManifest.xml meta-data<meta-data android:name="com.bugsee.option.detect.hang" android:value="true" /> under <application>.
  • As an entry in the Bugsee.launch(...) options mapoptions.put(Options.DetectAndReportHang, true).

Programmatic values take precedence over manifest values, so a meta-data default can be overridden at launch time per-build-flavor / per-environment. See Configuration for the full options pipeline.

All detection option keys

The authoritative table of detection option keys — Options constants, manifest keys, types, and defaults — lives in the Configuration → Detection reference, alongside the core options for capture, reporting, and APM. Extension-specific options are documented on the matching extension pages: NDK options and Leak options.

Found an issue, typo, or wrong statement on this page? Report it now →