Start here

What's new

What changed recently, and what changes when you upgrade. Published releases come first. After them are the changes already in the SDK repositories that ship with the next SDK and CLI releases. Read those before you upgrade, because several of them change defaults.

Published

2 November 2026

1 November 2026

Coming in the next SDK and CLI releases

!

Not published yet. Everything in this section is in the SDK repositories but not in any release on pub.dev, Maven Central, Swift Package Manager or npm. The current releases are Flutter 0.4.1-beta.10, Android 0.4.1-beta.6, iOS 0.4.1-beta.5 and web 0.4.0-beta.4, and they behave as the rest of these docs describe. The Flutter, Android, iOS and web releases share test fixtures and the capsule and verdict specs, so upgrade the SDK, the CLI and @bugcapsule/web-replay together.

Stricter verdicts (verdict v2)

verify, regress run and gate report FIXED only when the capsule's own commit reproduced the failure every time (the baseline), enough attempts on your build ran cleanly, and each clean attempt shows the failing path ran. Two new verdicts appear: FIXED (QUALIFIED) (exit 4) and UNSAFE (exit 5). Add BugCapsule.expect(…) postconditions to flows whose capsules come from exceptions. The full rules are under verdict v2.

Privacy defaults

Flutter, Android and web add collectionEnabled in the config, a persisted setCollectionEnabled(…) consent switch and clearLocalData(). Saved captures expire after 7 days. Android keeps its files out of Auto Backup, and Flutter on iOS can exclude them from backups with bug_capsule_native. The iOS SDK follows in a later release. See consent and local data.

Project settings can only narrow capture

Storage restore follows the capture policy

Capsules record which storage keys their capture allowed (manifest.storagePolicy). Replay writes only those keys, further narrowed by the replayed build's own allowlist, and reports every other key as the material divergence restore.disallowed. Android also validates SharedPreferences and DataStore names and refuses paths outside the app's storage directories. Capsules recorded by older SDKs have no policy and replay without storage restoration.

Replay safety

Startup and memory

CLI

Upgrade checklist

  1. Decide whether production needs bodies, and set captureNetworkBodies explicitly if it does. On Android and iOS, update code that reads it as a boolean.
  2. Move trace propagation targets you set only in the dashboard into the app config.
  3. Replace plain-http LAN backends with https, adb reverse or a tunnel.
  4. Add BugCapsule.expect(…) postconditions for key flows, so fixes can reach FIXED instead of FIXED (QUALIFIED) or INCONCLUSIVE.
  5. Update CI: treat exit codes 4 and 5, decide on --accept-qualified and --fail-on unverified, and make sure CI can check out the capsule's commit for the baseline.
  6. Wire your consent screen to setCollectionEnabled and your "delete my data" action to clearLocalData().
  7. Web: replay against a production-style build, and upgrade @bugcapsule/web and @bugcapsule/web-replay together.
  8. Flutter: add the profile replay dart-define if you replay profile builds.