Skip to main content

Issue detection — Overview (7.x Beta)

7.x Beta

The detection subsystem is new in 7.x and has no 6.x equivalent. Several detectors are off by default in the beta and must be explicitly enabled. Defaults may still evolve before the stable release.

7.x 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 →