Changelog History
Page 1
-
v8.50.0 Changes
July 22, 2026π Android 17 support
- β We've put Android 17 through a set of rigorous tests. We're now officially giving it the Sentry stamp of compatibility .(#5796)
π Fixes
- β¬οΈ Reduce main-thread work during
Sentry.initby resolving the shake-detector accelerometer off the main thread (~1.75ms on a Pixel 10) (#5784) - π Backfill release, environment, distribution, tags, and app version/buildβand use the matching replay-on-error sample rateβfor
ApplicationExitInfoANR and native crash events captured before SDK initialization, without reusing options cached by a later app update (#5762) - 0οΈβ£
SentryTagModifierNode.isImportantForBoundsnow matches the default behavior and returnstrue(#5789) π² Prevent a
StackOverflowErrorwhen abeforeSend,beforeBreadcrumb,beforeSendLog, orbeforeEnvelopecallback triggers another capture (directly or through a logging integration such as Timber) (#5737)- Captures made from within a user callback (event, transaction, breadcrumb, log, envelope, or check-in) are now dropped while that callback runs, instead of recursing. Captures made by event processors are unaffected.
π Replace deprecated
ThrowableProxywithLogEvent#getThrown()insentry-log4j2(#5751)
Dependencies
-
v8.49.0 Changes
July 16, 2026π Features
Session Replay: Record segment names (transaction names) (#5763)
β Add
io.sentry:sentry-opentelemetry-bomto align Sentry OpenTelemetry modules with tested OpenTelemetry dependencies (#5629)
π Fixes
- Session Replay: Fix first recording segment missing for replays in
buffermode (#5753) - Session Replay: Fix error-to-replay linkage in
buffermode (#5754) - β± Prevent logs and metrics from remaining queued after a flush scheduling race (#5756)
- π Fix main thread identification for tombstone (native crash) events (#5742)
- π¨ Prevent malformed JDBC URLs, which may contain credentials, from being printed to stdout (#5656)
- π§ Restrict JVM-global proxy authentication credentials to challenges from the configured proxy host (#5656)
- Sanitize Spring 7 and Spring Jakarta WebClient span descriptions to prevent embedded URL credentials from being sent to Sentry (#5656)
- Respect
tracePropagationTargetswhen injecting Sentry tracing headers through the OpenTelemetry OTLP propagator (#5656)
π Performance
- β± Schedule transaction idle/deadline timeouts on a shared, dedicated executor instead of spawning a
Timerthread per transaction (#5670)
Dependencies
β¬οΈ Bump OpenTelemetry to support Spring Boot 4.1 (#5573)
- If this causes issues for you because you are also using Spring Boot Dependency Management Plugin (io.spring.dependency-management),
β¬οΈ which may downgrade the OpenTelemetry SDK, please have a look at the changelog entry above that explains how to usesentry-opentelemetry-bom. - OpenTelemetry to 1.63.0 (was 1.60.1)
- OpenTelemetry Instrumentation to 2.29.0 (was 2.26.0)
- OpenTelemetry Instrumentation Alpha to 2.29.0-alpha (was 2.26.0-alpha)
- OpenTelemetry Semantic Conventions to 1.42.0 (was 1.40.0)
- OpenTelemetry Semantic Conventions Alpha to 1.42.0-alpha (was 1.40.0-alpha)
- If this causes issues for you because you are also using Spring Boot Dependency Management Plugin (io.spring.dependency-management),
β¬οΈ Bump Native SDK from v0.15.2 to v0.15.3 (#5728)
-
v8.48.0 Changes
July 08, 2026π Features
β Add
Sentry.extendAppStart(),Sentry.finishExtendedAppStart(), andSentry.getExtendedAppStartSpan()to extend the app start measurement past the first frame for extra launch-time work on Android (#5604)Add
trace_metric_bytedata category and record byte-level client reports when trace metrics are discarded (#5626)π Support the
io.sentry.tombstone.report-historicalmanifest option to enable historical tombstone reporting viaAndroidManifest.xml<meta-data>(#5683)
π Fixes
- π Fix
NoSuchMethodErrorfrom usingMath.floorDiv/Math.floorModoverloads that are unavailable on Java 8 (#5743) - π Fix main thread identification parsing for ApplicationExitInfo ANRs (#5733)
- Do not send threads without stacktraces for ApplicationExitInfo ANRs (#5733)
- π Record byte-level client reports when event processors discard logs or trace metrics (#5718)
- Name the device-info caching thread
SentryDeviceInfoCacheso all threads spawned by the SDK are identifiable (#5684) - π² Apply byte-category rate limits to log and trace metric envelope items (#5716)
π Performance
- Skip
Hintallocation inScope.addBreadcrumbwhen nobeforeBreadcrumbcallback is set (#5689) - Speed up scope persistence by detecting the Sentry executor thread via a marker instead of a
Thread.getName()name scan on every scope mutation (#5691) - β Remove executor prewarm during SDK init (#5681)
- The single-threaded
SentryExecutorServicequeued the prewarm work ahead of the first useful task, so it could only delay init work, never speed it up; the thread and class loading it warmed are paid identically by the first real task submitted right after.
- The single-threaded
-
v8.47.0 Changes
July 02, 2026Behavioral Changes
SentryOkHttpInterceptor::interceptnow throwsIOException. This is a source-only and Java-only breaking change (#5654)
π Fixes
π» Don't start a redundant UI interaction transaction when a transaction is already bound to the Scope (#5491)
- Previously,
SentryGestureListeneralways started a UI transaction and only afterwards skipped binding it to the Scope when a manually-bound transaction already existed, leaving the new transaction to be dropped as an idle transaction without children.
- Previously,
π Fix potential NPE within
Scope.endSession()(#5657)π Fix memory leak in
ReplayIntegrationdue to persisting executor not being shut down (#5627)π Fix AbstractMethodError when compose-ui 1.11+ is used in combination with
Modifier.sentryTag()or the Sentry Kotlin compiler plugin (#5672)
π Performance
- β
Speed up touch gesture target detection on deeply nested view hierarchies by hit-testing in local coordinates instead of calling
getLocationOnScreenper view (#5595) - Probe class availability without initializing the class during SDK init (#5635)
- π» Avoid constructing an exception per view when resolving view ids during view-hierarchy and gesture capture (#5631)
- Start the frame metrics thread lazily on first collection instead of during SDK init (#5641)
- π Reduce
SentryIdandSpanIdallocation overhead by replacing their per-instanceLazyEvaluator(and its lock) with a lightweight lazily-generatedString. (#5645) - π Lazily allocate the
ReentrantLockbackingAutoClosableReentrantLockto avoid eager lock allocations for SDK objects that never contend duringSentryAndroid.init(#5643)
-
v8.46.0 Changes
June 25, 2026Behavioral Changes
Collections returned by scope (e.g.
getBreadcrumbs,getTags,getAttachments) are shared state and should not be mutated. (#5541)- Previously, when going through
CombinedScopeView, we were returning a copy where mutations didn't show up in the underlying scopes. - This has now changed in order to reduce SDK overhead.
- Previously, when going through
Dateobjects returned by SDK data model getters are shared state and should not be mutated. (#5603)- Previously, these getters returned defensive copies for some date fields.
- This has now changed in order to reduce SDK overhead.
π Performance
- β¬οΈ Reduce writer buffer size from 8192 to 512 (#5544)
- β Remove redundant event map copies (#5536)
- β‘οΈ Optimize combined scope by adding an early return if only one scope has data (#5541)
- β¬οΈ Reduce model access overhead by avoiding defensive
Datecopies in SDK data model getters. (#5603) - β¬οΈ Reduce timestamp parsing and formatting overhead with Sentry-specific ISO-8601 handling. (#5602)
- β¬οΈ Reduce JSON serialization overhead by creating the reflection serializer only when unknown-object fallback serialization is needed. (#5601)
- β¬οΈ Reduce JSON serialization overhead by allocating reflection cycle-tracking state only when reflection serialization is used. (#5600)
- β¬οΈ Reduce context serialization overhead by sorting key snapshots with arrays instead of temporary lists. (#5599)
- β¬οΈ Reduce breadcrumb allocation overhead by creating the
Breadcrumbdata map only when data is added. (#5598) - β¬οΈ Reduce JSON serialization overhead by lowering the initial
JsonWriternesting stack size while preserving on-demand growth. (#5591) - β¬οΈ Reduce timestamp helper overhead by replacing unnecessary
Calendarusage inDateUtilswith directDatecreation. (#5589) - β¬οΈ Reduce Android startup overhead by using the default timezone directly on older devices or when no timezone info is available in the locale. (#5587)
-
v8.45.0 Changes
June 24, 2026π Features
- On Android 15+ (API 35), the standalone
app.starttransaction now reports why the OS started the process viaapp.vitals.start.reasontrace data (e.g.launcher,broadcast,service,content_provider), derived fromApplicationStartInfo.getReason(). You can search and group by this attribute in the Trace Explorer. (#5552)
π Fixes
- π Use
System.nanoTime()for cron check-in duration measurement to avoid incorrect durations from wall-clock adjustments (#5611) - π Fix crash when
getHistoricalProcessStartReasonsis called from an isolated or wrong-userId process (#5597) - π Release
MediaMuxerwhen a replay segment has no encodable frames to avoid a resource leak (#5583)
Dependencies
- On Android 15+ (API 35), the standalone
-
v8.44.1 Changes
June 19, 2026π Fixes
- π Fix
FirstDrawDoneListenerleaking anOnGlobalLayoutListenerper registration (#5567)
π Features
- β Add experimental
SentrySQLiteDrivertosentry-android-sqlitefor instrumentingandroidx.sqlite.SQLiteDriver(#5563)- To use it, pass
SQLiteDrivertoSentrySQLiteDriver.create(...) - Requires
androidx.sqlite:sqlite(2.5.0+) on runtime classpath (typically provided by Room or SQLDelight)
- To use it, pass
Dependencies
- π Fix
-
v8.44.0 Changes
June 17, 2026π Features
- β Add
enableStandaloneAppStartTracingoption to send app start as a standalone transaction instead of attaching it as a child span of the first activity transaction (#5342)- Disabled by default; opt in via
options.isEnableStandaloneAppStartTracing = trueor manifest meta-dataio.sentry.standalone-app-start-tracing.enable - Emits a transaction named
App Startwith opapp.start, carrying the existing app start measurements and phase spans (process.load,contentprovider.load,application.load, activity lifecycle spans) as direct children of the root - The standalone transaction shares the same
traceIdas the firstui.loadactivity transaction so they remain linked in the trace view - Also covers non-activity starts (broadcast receivers, services, content providers)
- Disabled by default; opt in via
π Improvements
- π Reduce boxing to improve performance (#5523, #5527, #5551)
- π Replace
Datewith a unix timestamp inSentryNanotimeDateto improve performance (#5550)SentryNanotimeDateis now marked@ApiStatus.Internal. A new(long unixDateMillis, long nanos)constructor was added, whereunixDateMillisis milliseconds since the epoch. The existing(Date, long)constructor is retained but deprecated.
Dependencies
π Fixes
- β Add
-
v8.43.3 Changes
June 24, 2026π Fixes
- π Fix crash when
getHistoricalProcessStartReasonsis called from an isolated or wrong-userId process (#5597)
- π Fix crash when
-
v8.43.2 Changes
June 10, 2026