Skip to main content

Configuration — Overview

This page is the canonical reference for every core SDK option recognised by the 7.1 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; since 7.3.0 a handler that never completes still can't hold up its report indefinitely. Not applied to terminating (crash) sequences.
NotifyFlushDelaycom.bugsee.option.config.notify-flush-delayint (ms)0Coalescing window before the notification relay queue drains; 0 starts the drain as soon as a notification is persisted. Only affects the non-urgent, batched drain — not an urgent notify() skip-ahead POST.
MaxDataSizecom.bugsee.option.config.max-data-sizeint (MB)150Maximum disk space for reports waiting to be sent. Past it, the oldest reports are deleted, errors before bug reports and bug reports before crashes; the newest crash and reports being sent are always kept. Minimum 10. (7.3.0)
MaxPendingReportscom.bugsee.option.config.max-pending-reportsint30Maximum number of reports waiting to be sent; past it, reports are deleted in the same order as for MaxDataSize. Minimum 1. (7.3.0)
MaxPendingReportAgecom.bugsee.option.config.max-pending-report-ageint (days)30Maximum age of a report waiting to be sent; older reports are deleted. 0 or less turns aging off. (7.3.0)

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. NotifyFlushDelay delays the notification-relay drain so nearby Bugsee.notify(...) calls can batch together.

<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.
DetectAndReportHangSamplingcom.bugsee.option.detect.hang.samplingbooleantrueSample the main thread's stack during a hang and attribute the report to the derived culprit frames rather than to a single snapshot taken at the moment of reporting. Only has effect when DetectAndReportHang is enabled. (7.2.0)
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.
DetectAndReportExitLowMemoryBackgroundAsErrorcom.bugsee.option.detect.exit.bg_low_memory_as_errorbooleanfalseReport a low-memory kill of the app while it was not in the foreground as a non-fatal error instead of a crash. Foreground kills stay crashes. Requires DetectAndReportExitLowMemory. (7.3.0)
DetectAndReportExitNotRespondingcom.bugsee.option.detect.exit.not_respondingbooleantrueReport exits caused by the app not responding (ANR).
DetectAndReportExitNotRespondingAsCrashcom.bugsee.option.detect.exit.not_responding.as_crashbooleanfalseReport ANR exits as crashes rather than as exits, so they group with crashes in the dashboard. Requires DetectAndReportExitNotResponding. (7.1.0)
DetectAndReportAnrSamplingcom.bugsee.option.detect.anr.samplingbooleantrueSample the main thread's stack during an ANR and attribute the report to the derived culprit frames rather than to a single snapshot taken once the OS confirms the ANR. Only has effect when DetectAndReportExitNotResponding is enabled. (7.2.0)
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.
CaptureNetworkOnLaunchcom.bugsee.option.capture.network.on-launchbooleanfalseSubscribe the network provider during launch() instead of when capture starts, so requests issued during app startup are not missed. Costs a few extra milliseconds on the launching thread. (7.1.0)
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 network event filter is set, in code or in the manifest.
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).
CaptureVideoAdaptivecom.bugsee.option.capture.video.adaptivebooleanfalseSkip capturing new frames while nothing on screen has been redrawn, lowering CPU and battery cost on idle screens. A frame is still taken at least once per second. (7.1.0)
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+).
CaptureRespectFlagSecurecom.bugsee.option.capture.respect-flag-securebooleantrueHonor the platform's FLAG_SECURE: windows that set it are blanked in video and screenshots, excluded from the view hierarchy, and their input is dropped. An app that sets FLAG_SECURE broadly will see empty recordings after upgrading — set to false to restore pre-7.1.0 behavior. (7.1.0)

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 floor rather than a fixed probability — scored transactions are promoted on top of the random draw.

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). Since 7.3.0 the launch map accepts the name as a string too, matched case-insensitively. An integer is not accepted in place of an enum constant in the map.

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

IssueSeverity constants carry the numeric values 1 (VeryLow) through 5 (Blocker). The value-1 constant is named VeryLow here and Low in the other Bugsee SDKs (BugseeSeverityLow on iOS); both mean the same severity.

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)

Bugsee.getHostLaunchOptions() (7.3.0) returns only the options your app supplied, through Bugsee.launch(...) or manifest <meta-data>, as a read-only Map<String, Serializable> without the SDK defaults. Unrecognized keys and rejected values are left out. Each launch() or relaunch() replaces it.

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 →