Configuration — Overview (7.x Beta)
APIs, defaults, and option names may still change before the 7.0 stable release.
This page is the canonical reference for every core SDK option recognised by the 7.x 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 programmaticlaunchcall). Under<application>:<meta-data android:name="com.bugsee.option.<group>.<name>"android:value="..." />Map<String, Object>passed toBugsee.launch(...)— required when you want runtime / per-flavor control. Keys come from theOptionsinterface; 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);
LaunchOptions class was removed in 7.xAll configuration in 7.x flows through either the manifest or the Map<String, Object> passed to launch(). See the 6.x → 7.x migration guide for details.
General
Options constant | Manifest key | Type | Default |
|---|---|---|---|
Duration | com.bugsee.option.config.duration | int (seconds) | 60 |
WifiOnlyUpload | com.bugsee.option.config.wifi-only-upload | boolean | false |
ReportProcessingInProcess | com.bugsee.option.config.report-processing-in-process | boolean | true |
ReportHandlerCallbackTimeout | com.bugsee.option.config.report-handler-callback-timeout | int (seconds) | 30 |
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.
- AndroidManifest.xml
- Programmatic
<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" />
HashMap<String, Object> options = new HashMap<>();
options.put(Options.Duration, 60);
options.put(Options.WifiOnlyUpload, true);
Bugsee.launch(this, "<APP_TOKEN>", options);
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 constant | Manifest key | Type | Default |
|---|---|---|---|
DetectAndReportCrash | com.bugsee.option.detect.crash | boolean | true |
DetectAndReportEarlyCrash | com.bugsee.option.detect.early-crash | boolean | false |
DetectAndReportHang | com.bugsee.option.detect.hang | boolean | false |
DetectAndReportHangFairLevel | com.bugsee.option.detect.hang.level.fair | int (ms) | 3000 |
DetectAndReportHangMediumLevel | com.bugsee.option.detect.hang.level.medium | int (ms) | 5000 |
DetectAndReportHangSevereLevel | com.bugsee.option.detect.hang.level.severe | int (ms) | 10000 |
DetectAndReportMainThreadMisuse | com.bugsee.option.detect.main_thread_misuse | boolean | false |
DetectAndReportAnomaly | com.bugsee.option.detect.anomaly | boolean | false |
DetectAndReportHttpErrors | com.bugsee.option.detect.http-errors | boolean | false |
DetectFrustration | com.bugsee.option.detect.frustration | boolean | false |
DetectAndReportExit | com.bugsee.option.detect.exit | boolean | true |
DetectAndReportExitLowMemory | com.bugsee.option.detect.exit.low_memory | boolean | true |
DetectAndReportExitNotResponding | com.bugsee.option.detect.exit.not_responding | boolean | true |
DetectAndReportExitExcessiveResourceUsage | com.bugsee.option.detect.exit.excessive_resource_usage | boolean | false |
DetectAndReportExitDependencyDied | com.bugsee.option.detect.exit.dependency_died | boolean | false |
DetectAndReportExitUserRequested | com.bugsee.option.detect.exit.user_requested | boolean | false |
DetectAndReportExitUserWasStopped | com.bugsee.option.detect.exit.user_was_stopped | boolean | false |
DetectAndReportExitPermissionChanged | com.bugsee.option.detect.exit.permission_changed | boolean | false |
DetectAndReportExitPackageUpdated | com.bugsee.option.detect.exit.package_updated | boolean | false |
DetectAndReportExitPackageStateChanged | com.bugsee.option.detect.exit.package_state_changed | boolean | false |
DetectAndReportExitOther | com.bugsee.option.detect.exit.other | boolean | false |
DetectAndReportExitUnknown | com.bugsee.option.detect.exit.unknown | boolean | false |
- AndroidManifest.xml
- Programmatic
<meta-data android:name="com.bugsee.option.detect.hang"
android:value="true" />
<meta-data android:name="com.bugsee.option.detect.exit"
android:value="true" />
HashMap<String, Object> options = new HashMap<>();
options.put(Options.DetectAndReportHang, true);
options.put(Options.DetectAndReportExit, true);
Bugsee.launch(this, "<APP_TOKEN>", options);
Capture
Options constant | Manifest key | Type | Default |
|---|---|---|---|
CaptureLogs | com.bugsee.option.capture.logs | boolean | true |
CaptureLogsLevel | com.bugsee.option.capture.logs.level | LogLevel | Verbose |
CaptureLogsUseAllSources | com.bugsee.option.capture.logs.allsources | boolean | false |
CaptureScreenshot | com.bugsee.option.capture.screenshot | boolean | true |
CaptureScreenshotScale | com.bugsee.option.capture.screenshot.scale | float [0.05, 1.0] | 1.0 |
CaptureNetwork | com.bugsee.option.capture.network | boolean | true |
CaptureNetworkBodySizeLimit | com.bugsee.option.capture.network.body-size-limit | int (bytes) | 20480 |
CaptureNetworkBodyWithoutType | com.bugsee.option.capture.network.body-without-type | boolean | false |
CaptureNetworkUseDefaultSanitizer | com.bugsee.option.capture.network.default-sanitizer | boolean | true |
CaptureViewHierarchy | com.bugsee.option.capture.view-hierarchy | boolean | true |
CaptureBreadcrumbs | com.bugsee.option.capture.breadcrumbs | boolean | false |
CaptureBreadcrumbsExtras | com.bugsee.option.capture.breadcrumbs.extras | boolean | false |
CaptureVideo | com.bugsee.option.capture.video | boolean | true |
CaptureVideoMode | com.bugsee.option.capture.video.mode | VideoMode | V2 |
CaptureVideoQuality | com.bugsee.option.capture.video.quality | VideoQuality | Default |
CaptureVideoFrameRate | com.bugsee.option.capture.video.frame-rate | FrameRate | High |
CaptureVideoScale | com.bugsee.option.capture.video.scale | float [0.1, 1.0] | 1.0 |
CaptureVideoSecureScrolling | com.bugsee.option.capture.video.secure-scrolling | boolean | false |
CaptureVideoUsingCustomMuxer | com.bugsee.option.capture.video.custom-muxer | boolean | false |
CaptureVideoFullscreenRememberUserDecision | com.bugsee.option.capture.video.fullscreen-remember-decision | boolean | true |
CaptureVideoFullscreenKeepRunning | com.bugsee.option.capture.video.fullscreen-keep-running | boolean | true |
For video modes and redaction details see Privacy → Video.
- AndroidManifest.xml
- Programmatic
<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" />
HashMap<String, Object> options = new HashMap<>();
options.put(Options.CaptureVideoFrameRate, FrameRate.Medium);
options.put(Options.CaptureNetworkBodySizeLimit, 10240);
Bugsee.launch(this, "<APP_TOKEN>", options);
Reporting triggers
Options constant | Manifest key | Type | Default |
|---|---|---|---|
ReportingTriggerByShake | com.bugsee.option.reporting.triggers.shake | boolean | true |
ReportingTriggerByScreenshot | com.bugsee.option.reporting.triggers.screenshot | boolean | false |
ReportingTriggerByNotification | com.bugsee.option.reporting.triggers.notification-bar | boolean | true |
ReportingTriggerByBroadcast | com.bugsee.option.reporting.triggers.broadcast | boolean | false |
- AndroidManifest.xml
- Programmatic
<meta-data android:name="com.bugsee.option.reporting.triggers.shake"
android:value="false" />
HashMap<String, Object> options = new HashMap<>();
options.put(Options.ReportingTriggerByShake, false);
Bugsee.launch(this, "<APP_TOKEN>", options);
Reporting defaults
Options constant | Manifest key | Type | Default |
|---|---|---|---|
ReportingDefaultCrashPriority | com.bugsee.option.reporting.defaults.crash-priority | IssueSeverity | Blocker |
ReportingDefaultErrorPriority | com.bugsee.option.reporting.defaults.error-priority | IssueSeverity | High |
ReportingDefaultBugPriority | com.bugsee.option.reporting.defaults.bug-priority | IssueSeverity | High |
Reporting UI
Options constant | Manifest key | Type | Default |
|---|---|---|---|
ReportingUISummaryRequired | com.bugsee.option.reporting.ui.summary-required | boolean | false |
ReportingUIDescriptionRequired | com.bugsee.option.reporting.ui.description-required | boolean | false |
ReportingUIEmailRequired | com.bugsee.option.reporting.ui.email-required | boolean | false |
ReportingUILabelsEnabled | com.bugsee.option.reporting.ui.labels-enabled | boolean | false |
ReportingUILabelsRequired | com.bugsee.option.reporting.ui.labels-required | boolean | false |
ReportingUIPrioritySelectorEnabled | com.bugsee.option.reporting.ui.priority-selector-enabled | boolean | false |
ReportingUILabelsRequired = true implies ReportingUILabelsEnabled = true.
Performance monitoring
See Performance monitoring for the APM overview.
Options constant | Manifest key | Type | Default |
|---|---|---|---|
PerformanceMonitoring | com.bugsee.option.performance.enabled | boolean | true |
PerformanceSampleRate | com.bugsee.option.performance.sample-rate | float [0, 1] | 0.01 |
PerformanceUploadMode | com.bugsee.option.performance.upload-mode | String | "batched" |
PerformanceAdaptiveSampling | com.bugsee.option.performance.adaptive-sampling | boolean | true |
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).
| Enum | Values |
|---|---|
LogLevel | Error, Warning, Info, Debug, Verbose |
VideoMode | None, V1, V2, Fullscreen, DirectBuffers |
VideoQuality | Default, Medium, High |
FrameRate | Low, Medium, High, Raw (no frame-rate cap; only meaningful with VideoMode.DirectBuffers, otherwise coerced to High) |
IssueSeverity | VeryLow, Medium, High, Critical, Blocker |
IssueType | Bug, 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
<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
- Kotlin
- Java
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)
}
}
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
HashMap<String, Serializable> options = new HashMap<>();
options.put(Options.Duration, 60);
options.put(Options.DetectAndReportHang, true);
options.put(Options.CaptureVideoFrameRate, FrameRate.Medium);
options.put(Options.ReportingTriggerByShake, 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.
Related pages
- Issue detection — per-detector deep dives.
- Performance monitoring — APM transactions, spans, and sampling.
- Privacy: video — video modes, secure areas, and redaction.