Reference

Troubleshooting

Symptoms first, then the likely cause. Start with bugcapsule inspect <id>: eligibility gaps and replay divergences usually name the problem.

Capture and upload

Nothing shows up in bugcapsule list
Web: CORS errors in the browser console

Your app's origin isn't allowed for your project yet. Send the exact origin (scheme, host and port) to your BugCapsule team; see Get your origin allowed.

Some capsules never arrive
Capsule is partial
Capsule is ineligible

A manual capture without a failure assertion. Add check/fail for the behaviour QA reports, so the capsule has something replay can check.

A secret showed up in a capsule

Delete the capsule in the dashboard, add the field name to Extra redaction keys in the dashboard's capture settings (it reaches every device at its next refresh and also re-redacts what's already buffered), then add it to your app's redactKeys or a beforeRecord hook. Rotate the leaked secret itself.

Replay

INCONCLUSIVE with network.unrecorded
action.unregistered or text.untracked

The replayed build doesn't register an id the recording used: renamed, registered later than the input, or behind a feature flag. Web: BugCapsule.action() registers its replay handler only after init.

restore.late or restore.missing

Init isn't first (Android: not at the top of Application.onCreate, or from an App Startup initializer; iOS: something read UserDefaults before start; web: rendering before await init). Or state is registered after the first input. Or the replayed build lacks an integration the capture had.

*.redacted divergences on a login flow

A token or OTP was replaced on device and replayed as a placeholder, so the app took another path. Use a QA test account whose credentials aren't needed in the failing flow, or start the flow after login.

INCOMPATIBLE
FLAKY on a race

Recorded latency is replayed exactly, but idle compression can skip over a timer whose effect wasn't recorded. Try --no-compress-idle. Replace DateTime.now()/Date.now()/Math.random() with the SDK hooks.

Runtime-specific

Android: attempts time out or never start
iOS: the app ignores replay
Web: the CLI refuses to start, or reports network.escaped
Flutter: pub get fails after adding the package

The package depends on every library it integrates with. Your app's bloc, riverpod, get, mobx, dio, http, go_router and shared_preferences versions must be inside its ranges even if you don't use them with BugCapsule.

Known limitations