Skip to main content

Configuration — Overview

This page is the canonical reference for every core SDK option recognised by the 7.0 Android SDK. Options from extension modules live on their own pages — see NDK options and Leak options.

Two configuration channels

Every Bugsee SDK option can be set in two equivalent ways. The literal string key is identical in both — no prefix conversion. The two channels are mutually exclusive rather than merged: passing a Map<String, Object> to Bugsee.launch(...) programmatically short-circuits the manifest auto-init path entirely, and any option absent from the map falls back to its registered default — not to the manifest value. If you mix channels, treat the manifest as your defaults and the programmatic map as a full override.

  • AndroidManifest.xml <meta-data> entries — recommended when you use the SDK's auto-init path (app token in the manifest, no programmatic launch call). Under <application>:
    <meta-data android:name="com.bugsee.option.<group>.<name>"
    android:value="..." />
  • Map<String, Object> passed to Bugsee.launch(...) — required when you want runtime / per-flavor control. Keys come from the Options interface; values are typed (boolean / int / float / String / enum):
    HashMap<String, Object> options = new HashMap<>();
    options.put(Options.SomeKey, value);
    Bugsee.launch(this, "<APP_TOKEN>", options);

General

Options constantManifest keyTypeDefaultDescription
Durationcom.bugsee.option.config.durationint (seconds)60Maximum length of the cyclical capture buffer (video, logs, breadcrumbs); older data rolls off once the window is full.
WifiOnlyUploadcom.bugsee.option.config.wifi-only-uploadbooleanfalseDefer report uploads until the device is on Wi-Fi.
ReportProcessingInProcesscom.bugsee.option.config.report-processing-in-processbooleantrueWhen true, report export and upload run in-process on background threads; when false they go through Android's JobScheduler so they survive process death, at the cost of upload latency.
ReportHandlerCallbackTimeoutcom.bugsee.option.config.report-handler-callback-timeoutint (seconds)30How long to wait for a ReportHandler completion callback before auto-firing it so the report isn't lost. 0 disables the timeout. Not applied to terminating (crash) sequences.

Duration caps the cyclical capture buffer (video, logs, breadcrumbs) at the given number of seconds. WifiOnlyUpload defers report uploads until Wi-Fi. ReportProcessingInProcess = false routes report processing through JobScheduler so it survives process death (at the cost of upload latency). ReportHandlerCallbackTimeout = 0 disables the timeout — but it doesn't apply to crash sequences.

<meta-data android:name="com.bugsee.option.config.duration"
android:value="60" />
<meta-data android:name="com.bugsee.option.config.wifi-only-upload"
android:value="true" />

Detection

The full set of detection options is documented on each detector's own page in Issue detection. The table below is the option reference.

Options constantManifest keyTypeDefaultDescription
DetectAndReportCrashcom.bugsee.option.detect.crashbooleantrueCatch unhandled Java/Kotlin exceptions and report them as crashes.
DetectAndReportEarlyCrashcom.bugsee.option.detect.early-crashbooleanfalseAlso catch crashes that happen very early in startup, before the SDK is fully attached.
DetectAndReportHangcom.bugsee.option.detect.hangbooleanfalseDetect and report when the main (UI) thread is blocked long enough to count as a hang.
DetectAndReportHangFairLevelcom.bugsee.option.detect.hang.level.fairint (ms)3000Main-thread block duration that triggers a "Fair"-severity hang report. Must be smaller than the Medium level; detection resolution is roughly 1 s.
DetectAndReportHangMediumLevelcom.bugsee.option.detect.hang.level.mediumint (ms)5000Main-thread block duration that triggers a "Medium"-severity hang report. Must sit between the Fair and Severe levels.
DetectAndReportHangSevereLevelcom.bugsee.option.detect.hang.level.severeint (ms)10000Main-thread block duration that triggers a "Severe"-severity hang report. Must be greater than the Medium level.
DetectAndReportMainThreadMisusecom.bugsee.option.detect.main_thread_misusebooleanfalseReport file I/O, network, database, or SharedPreferences operations performed on the main thread.
DetectAndReportAnomalycom.bugsee.option.detect.anomalybooleanfalseEnable the built-in statistical performance-anomaly detector (per-bucket EWMA baselines persisted across sessions).
DetectAndReportHttpErrorscom.bugsee.option.detect.http-errorsbooleanfalseConvert HTTP 5xx (500–599) responses into error reports sent to Bugsee.
DetectFrustrationcom.bugsee.option.detect.frustrationbooleanfalseDetect user-frustration patterns (rage taps, dead taps, stuck loading, frozen UI) and report them as simulated errors grouped by screen and element.
DetectAndReportExitcom.bugsee.option.detect.exitbooleantrueDetect and report application exits. The per-reason flags below select which exit reasons are reported.
DetectAndReportExitLowMemorycom.bugsee.option.detect.exit.low_memorybooleantrueReport exits where the OS killed the app to reclaim memory.
DetectAndReportExitNotRespondingcom.bugsee.option.detect.exit.not_respondingbooleantrueReport exits caused by the app not responding (ANR).
DetectAndReportExitExcessiveResourceUsagecom.bugsee.option.detect.exit.excessive_resource_usagebooleanfalseReport exits caused by excessive resource usage.
DetectAndReportExitDependencyDiedcom.bugsee.option.detect.exit.dependency_diedbooleanfalseReport exits caused by a dependency process dying.
DetectAndReportExitUserRequestedcom.bugsee.option.detect.exit.user_requestedbooleanfalseReport exits triggered by the user (e.g. force-stop).
DetectAndReportExitUserWasStoppedcom.bugsee.option.detect.exit.user_was_stoppedbooleanfalseReport exits caused by the system stopping the app.
DetectAndReportExitPermissionChangedcom.bugsee.option.detect.exit.permission_changedbooleanfalseReport exits caused by a runtime-permission change.
DetectAndReportExitPackageUpdatedcom.bugsee.option.detect.exit.package_updatedbooleanfalseReport exits caused by the app package being updated.
DetectAndReportExitPackageStateChangedcom.bugsee.option.detect.exit.package_state_changedbooleanfalseReport exits caused by a package state change.
DetectAndReportExitOthercom.bugsee.option.detect.exit.otherbooleanfalseReport exits the OS classifies with an "other" reason.
DetectAndReportExitUnknowncom.bugsee.option.detect.exit.unknownbooleanfalseReport exits with an unknown reason.
<meta-data android:name="com.bugsee.option.detect.hang"
android:value="true" />
<meta-data android:name="com.bugsee.option.detect.exit"
android:value="true" />

Capture

Options constantManifest keyTypeDefaultDescription
CaptureLogscom.bugsee.option.capture.logsbooleantrueAutomatically capture Logcat output.
CaptureLogsLevelcom.bugsee.option.capture.logs.levelLogLevelVerboseMinimum log level to capture; lower-priority entries are dropped.
CaptureLogsUseAllSourcescom.bugsee.option.capture.logs.allsourcesbooleanfalseQuery all logcat buffers (system, radio, etc.) instead of just the default sources, which suffice in most cases.
CaptureScreenshotcom.bugsee.option.capture.screenshotbooleantrueCapture a screenshot when a report is created.
CaptureScreenshotScalecom.bugsee.option.capture.screenshot.scalefloat [0.05, 1.0]1.0Privacy down-then-up scaling applied to screenshots: destroys fine detail (text, icons) while preserving layout. 1.0 disables the transform. Mirrors CaptureVideoScale.
CaptureNetworkcom.bugsee.option.capture.networkbooleantrueMonitor and capture network requests and responses.
CaptureNetworkBodySizeLimitcom.bugsee.option.capture.network.body-size-limitint (bytes)20480Maximum captured request/response body size, in bytes.
CaptureNetworkBodyWithoutTypecom.bugsee.option.capture.network.body-without-typebooleanfalseAlso attach request/response bodies that have no declared content type; otherwise only textual bodies are kept.
CaptureNetworkUseDefaultSanitizercom.bugsee.option.capture.network.default-sanitizerbooleantrueAuto-redact known sensitive keys (PII) in URL query parameters, HTTP headers, and JSON bodies. Applies only when no custom network event filter is set.
CaptureViewHierarchycom.bugsee.option.capture.view-hierarchybooleantrueCapture the view-hierarchy snapshot for reports.
CaptureBreadcrumbscom.bugsee.option.capture.breadcrumbsbooleanfalseCapture the breadcrumb trail of user and system events.
CaptureBreadcrumbsExtrascom.bugsee.option.capture.breadcrumbs.extrasbooleanfalseAlso attach the raw Intent extras of captured system-event broadcasts to each breadcrumb.
CaptureVideocom.bugsee.option.capture.videobooleantrueRecord screen video for reports.
CaptureVideoModecom.bugsee.option.capture.video.modeVideoModeV2Screen-capture mode/strategy to use (see enum reference).
CaptureVideoQualitycom.bugsee.option.capture.video.qualityVideoQualityDefaultQuality of the final encoded video.
CaptureVideoFrameRatecom.bugsee.option.capture.video.frame-rateFrameRateHighHow often frames are captured (see enum reference).
CaptureVideoScalecom.bugsee.option.capture.video.scalefloat [0.1, 1.0]1.0Additional down-scaling applied to recorded video (e.g. 0.5 halves both width and height).
CaptureVideoSecureScrollingcom.bugsee.option.capture.video.secure-scrollingbooleanfalseIn VideoMode.V1, skip more frames while secure views are present on screen.
CaptureVideoUsingCustomMuxercom.bugsee.option.capture.video.custom-muxerbooleanfalseUse Bugsee's lightweight MP4 muxer instead of Android's MediaMuxer for video encoding; produces less verbose log output.
CaptureVideoFullscreenRememberUserDecisioncom.bugsee.option.capture.video.fullscreen-remember-decisionbooleantruePersist the user's MediaProjection (screen-capture) consent decision across launches so they aren't re-prompted. Clear it at runtime with Bugsee.resetVideoCapturePermission().
CaptureVideoFullscreenKeepRunningcom.bugsee.option.capture.video.fullscreen-keep-runningbooleantrueKeep the MediaProjection session running in background (true: small ongoing CPU/battery cost plus a persistent foreground-service notification, but no re-prompt) versus tearing it down and re-acquiring on return to foreground (false: no background cost, but re-prompts on Android 14+).

For video modes and redaction details see Privacy → Video.

<meta-data android:name="com.bugsee.option.capture.video.frame-rate"
android:value="Medium" />
<meta-data android:name="com.bugsee.option.capture.network.body-size-limit"
android:value="10240" />

Reporting triggers

Options constantManifest keyTypeDefaultDescription
ReportingTriggerByShakecom.bugsee.option.reporting.triggers.shakebooleantrueOpen the bug-reporting UI when the device is shaken.
ReportingTriggerByScreenshotcom.bugsee.option.reporting.triggers.screenshotbooleanfalseOpen the bug-reporting UI when the user takes a screenshot.
ReportingTriggerByNotificationcom.bugsee.option.reporting.triggers.notification-barbooleantrueShow a notification-bar entry that opens the bug-reporting UI when tapped.
ReportingTriggerByBroadcastcom.bugsee.option.reporting.triggers.broadcastbooleanfalseAllow a report to be triggered by an Android broadcast intent.
<meta-data android:name="com.bugsee.option.reporting.triggers.shake"
android:value="false" />

Reporting defaults

Options constantManifest keyTypeDefaultDescription
ReportingDefaultCrashPrioritycom.bugsee.option.reporting.defaults.crash-priorityIssueSeverityBlockerDefault severity assigned to crash reports.
ReportingDefaultErrorPrioritycom.bugsee.option.reporting.defaults.error-priorityIssueSeverityHighDefault severity assigned to error reports.
ReportingDefaultBugPrioritycom.bugsee.option.reporting.defaults.bug-priorityIssueSeverityHighDefault severity assigned to manually filed bug reports.

Reporting UI

Options constantManifest keyTypeDefaultDescription
ReportingUISummaryRequiredcom.bugsee.option.reporting.ui.summary-requiredbooleanfalseMake the Summary field mandatory in the bug-reporting UI.
ReportingUIDescriptionRequiredcom.bugsee.option.reporting.ui.description-requiredbooleanfalseMake the Description field mandatory in the bug-reporting UI.
ReportingUIEmailRequiredcom.bugsee.option.reporting.ui.email-requiredbooleanfalseMake the Email field mandatory in the bug-reporting UI.
ReportingUILabelsEnabledcom.bugsee.option.reporting.ui.labels-enabledbooleanfalseShow the Labels input field in the bug-reporting UI.
ReportingUILabelsRequiredcom.bugsee.option.reporting.ui.labels-requiredbooleanfalseMake the Labels field mandatory in the bug-reporting UI (implies it is shown).
ReportingUIPrioritySelectorEnabledcom.bugsee.option.reporting.ui.priority-selector-enabledbooleanfalseLet the user set the report priority manually in the bug-reporting UI.

ReportingUILabelsRequired = true implies ReportingUILabelsEnabled = true.

Performance monitoring

See Performance monitoring for the APM overview.

Options constantManifest keyTypeDefaultDescription
PerformanceMonitoringcom.bugsee.option.performance.enabledbooleantrueMaster switch for performance monitoring (APM).
PerformanceSampleRatecom.bugsee.option.performance.sample-ratefloat [0, 1]0.01Probability that a transaction is sampled for standalone APM upload. Does not affect capture — every transaction still flows into the report pipeline.
PerformanceUploadModecom.bugsee.option.performance.upload-modeString"batched"How standalone APM data is uploaded: "batched" (30 s flush) or "realtime".
PerformanceAdaptiveSamplingcom.bugsee.option.performance.adaptive-samplingbooleantrueOn top of the static sample rate, promote "interesting" unsampled transactions — scored at finish by status, duration outlier-ness, and span-tree complexity — into the upload pipeline.

PerformanceUploadMode accepts "batched" (30 s flush) or "realtime". PerformanceSampleRate gates standalone APM uploads only — every transaction still flows into the capture pipeline for reports regardless of sampling. PerformanceAdaptiveSampling = true turns the sample rate into a ceiling rather than a fixed probability.

Enum reference

Enum-typed options accept the enum constant programmatically, or the enum value name as a string in the manifest (for example, android:value="Blocker" for IssueSeverity.Blocker).

EnumValues
LogLevelError, Warning, Info, Debug, Verbose
VideoModeNone, V1, V2, Fullscreen, DirectBuffers
VideoQualityDefault, Medium, High
FrameRateLow, Medium, High, Raw (no frame-rate cap; only meaningful with VideoMode.DirectBuffers, otherwise coerced to High)
IssueSeverityVeryLow, Medium, High, Critical, Blocker
IssueTypeBug, Crash, Error

Reading effective options at runtime

OptionsContainer is the read-only view of effective launch options. It's returned by Bugsee.getLaunchOptions() and is what extensions receive in their launch(OptionsContainer) callback:

boolean hasOption(String key);
<T> T getOption(String key);
<T> T getOption(String key, T defaultValue);
Map<String, Serializable> toMap();
val opts: OptionsContainer = Bugsee.getLaunchOptions()
val duration: Int = opts.getOption(Options.Duration, 60)

Worked examples

Manifest-only configuration

AndroidManifest.xml
<application ...>
<meta-data android:name="com.bugsee.app-token"
android:value="@string/bugsee_app_token" />

<meta-data android:name="com.bugsee.option.detect.hang"
android:value="true" />
<meta-data android:name="com.bugsee.option.capture.video.frame-rate"
android:value="Medium" />
<meta-data android:name="com.bugsee.option.reporting.triggers.shake"
android:value="false" />
</application>

Programmatic configuration

class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
val options: HashMap<String, java.io.Serializable> = hashMapOf(
Options.Duration to 60,
Options.DetectAndReportHang to true,
Options.CaptureVideoFrameRate to FrameRate.Medium,
Options.ReportingTriggerByShake to false,
)
Bugsee.launch(this, "<APP_TOKEN>", options)
}
}

Extension options

Each extension module that ships its own runtime options has a dedicated page:

  • NDK options — native crash detection (bugsee-android-ndk).
  • Leak options — memory and thread leak detection (bugsee-android-leak).

Other shipped extensions (feedback, okhttp, ktor-2, ktor-3, cronet, compose) don't expose runtime options today — they're activated solely by being on the classpath.

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