Fixes
- Restore the interrupt flag when cached envelope processing is interrupted between files (#5884)
- Reduce false-positive SDK crash attribution for host app SQLite cursor crashes (#5883)
- Prevent inflated cold app start when the OS spawns the process in the background (e.g. FCM push) on API 35+ (#5841, #5880)
- Preserve single-sample ANR profile chunks so profiles remain available on ANR events (#5872)
- Avoid a CPU busy-loop when recording discarded log or metric envelopes under rate limiting (#5835)
ClientReportRecordernow reads the item count from the envelope item header instead of deserializing the payload, which under sustained rate limiting could pin CPU cores while repeatedly throwing exceptions
- Report tasks handed to a no-op
ISentryExecutorServiceas cancelled (#5874)NoOpSentryExecutorServicepreviously returned aFuturethat was never run and never cancelled, so callers could not tell a dropped task from a queued one andget()would block until its timeout
Performance
- Defer use of reflection by
SentryFrameMetricsCollectorduringSentry.init(#5886) - Avoid waiting up to
shutdownTimeoutMilliswhen closing the SDK with a pending transaction timeout or session-end task (#5851) - Use
RGB_565instead ofARGB_8888for screenshot and replay capture bitmaps, halving per-frame memory usage (#5821) - Remove an unused lock from
SentryPerformanceProvider, which was allocated on every cold start inContentProvider.onCreatewithout ever being acquired (#5871) - Reduce main-thread allocations when parsing the app start profiling config (#5867)
- Batch and coalesce scope-persistence disk writes to reduce startup cost (#5791)
- Scope mutations are now coalesced (latest value per field) and breadcrumbs are appended in batches behind a single fsync, instead of one synchronous disk write per mutation.
- Reduce the number of SDK threads: the
HostnameCacheworker thread now times out while idle instead of staying alive for the whole process lifetime (#5817)