Skip to content

Sentry 9.25.0 upgrade, span-streaming migration, replay + ProGuard fixes - #25

Merged
Prithvirajkumar merged 2 commits into
mainfrom
chore/unify-sentry-release
Jul 21, 2026
Merged

Prithvirajkumar merged 2 commits into
mainfrom
chore/unify-sentry-release

Conversation

@Prithvirajkumar

Copy link
Copy Markdown
Collaborator

Upgrades the Sentry SDK to the latest and adopts the Span Streaming API, plus fixes surfaced by end-to-end verification on Android + iOS with events confirmed in the demo org.

Changes

  • SDK upgrade 9.22.0 → 9.25.0 (sentry_flutter/dio/file/logging) + other deps; app version → 9.25.0+1
  • Span Streaming API: enable traceLifecycle = stream; migrate all manual startTransaction/startChild instrumentation to the Sentry.startSpan callback API (product_list, navbar_destination, main, file_io_demo, webview)
  • Webview distributed tracing: hold the journey span via startInactiveSpan + hand its sentry-trace to the loaded page explicitly (getSpan() is null in stream mode); keep generateNewTrace() for a fresh trace
  • Session replay fix: stop masking all images (maskAllImages/maskAssetImages = false); keep price masking via maskCallback
  • Engineer separation on spans: propagate se/customerType onto all streamed spans via scope.setAttributes (scope tags don't reach spans in stream mode)
  • ProGuard/R8 mapping: add io.sentry.android.gradle 6.15.0 (scoped to mapping handling) so the APK embeds a UUID and the matching mapping uploads during the build — fixes size-analysis "Missing proguard mapping" and Kotlin/Java crash de-obfuscation; demo.sh manual upload made a no-op
  • SENTRY_DEBUG dart-define/.env toggle for delivery diagnostics
  • Docs: CLAUDE.md + .env.example updated

Verified in Sentry (demo/flutter)

  • All startup error types + ANR + Kotlin exception + N+1 HTTP errors (filterable by se:tda)
  • Full Flutter→web→backend distributed trace on one trace id
  • Session replays captured; streamed spans carry se/customerType
  • APK embeds io.sentry.ProguardUuids; matching proguard mapping uploaded; build distributed for size analysis

🤖 Generated with Claude Code

Prithvirajkumar and others added 2 commits July 21, 2026 14:11
- Bump Sentry SDK 9.22.0 -> 9.25.0 (sentry_flutter/dio/file/logging) plus dio,
  flutter_dotenv, cupertino_icons, webview_flutter; app version -> 9.25.0+1
- Enable Span Streaming (traceLifecycle = stream) and migrate all manual
  instrumentation from startTransaction/startChild to the Sentry.startSpan
  callback API (product_list, navbar_destination, main, file_io_demo, webview)
- Webview distributed tracing: hold the journey span via startInactiveSpan and
  hand its sentry-trace to the loaded page explicitly (Sentry.getSpan() is null
  in stream mode); keep generateNewTrace() so the journey gets a fresh trace
- Fix session replay rendering: stop masking all images
  (maskAllImages/maskAssetImages = false); keep price masking via maskCallback
- Propagate se/customerType onto all streamed spans via scope.setAttributes
  (scope tags don't reach spans in stream mode) so Performance/Trace data stays
  filterable per engineer, consistent with errors and replays
- Add SENTRY_DEBUG dart-define/.env toggle for envelope-delivery diagnostics
- Update CLAUDE.md and .env.example to match

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The APK carried no ProGuard UUID, so uploaded R8 mappings were orphaned and
Sentry size analysis reported "Missing proguard mapping" (no DEX breakdown),
and Kotlin/Java crashes wouldn't de-obfuscate.

- Add io.sentry.android.gradle 6.15.0 (settings + app build.gradle.kts), scoped
  to mapping handling only: autoUploadProguardMapping + includeProguardMapping,
  with autoInstallation and tracingInstrumentation disabled so it doesn't add a
  native SDK or instrument bytecode on top of sentry_flutter
- Org/project/authToken read from env (demo.sh exports them); upload is skipped
  when absent
- demo.sh: make the manual `sentry-cli upload-proguard` step a no-op — the plugin
  now embeds the matching UUID into the APK and uploads the mapping during build,
  which the manual step could not do

Verified: APK now embeds assets/sentry-debug-meta.properties (ProguardUuids
43c717a2-...), the matching proguard mapping is uploaded to demo/flutter, and a
re-distributed build gets a detailed DEX breakdown.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Prithvirajkumar
Prithvirajkumar merged commit ff351a4 into main Jul 21, 2026
1 of 2 checks passed
@Prithvirajkumar
Prithvirajkumar deleted the chore/unify-sentry-release branch July 21, 2026 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant