tag:github.com,2008:https://github.com/getsentry/sentry-java/releases Release notes from sentry-java 2026-03-12T09:07:04Z tag:github.com,2008:Repository/3368190/8.35.0 2026-03-12T11:44:37Z 8.35.0 <h3>Fixes</h3> <ul> <li>Android: Remove the dependency on protobuf-lite for tombstones (<a href="https://github.com/getsentry/sentry-java/pull/5157" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5157/hovercard">#5157</a>)</li> </ul> <h3>Features</h3> <ul> <li>Add new experimental option to capture profiles for ANRs (<a href="https://github.com/getsentry/sentry-java/pull/4899" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4899/hovercard">#4899</a>) <ul> <li>This feature will capture a stack profile of the main thread when it gets unresponsive</li> <li>The profile gets attached to the ANR event on the next app start, providing a flamegraph of the ANR issue on the sentry issue details page</li> <li>Enable via <code>options.setAnrProfilingSampleRate(&lt;sample-rate&gt;)</code> or AndroidManifest.xml: <code>&lt;meta-data android:name="io.sentry.anr.profiling.sample-rate" android:value="[0.0-1.0]" /&gt;</code></li> <li>The sample rate controls the probability of collecting a profile for each detected foreground ANR (0.0 to 1.0, null to disable)</li> </ul> </li> </ul> <h3>Behavioral Changes</h3> <ul> <li>Add <code>enableAnrFingerprinting</code> option which assigns static fingerprints to ANR events with system-only stacktraces <ul> <li>When enabled, ANRs whose stacktraces contain only system frames (e.g. <code>java.lang</code> or <code>android.os</code>) are grouped into a single issue instead of creating many separate issues</li> <li>This will help to reduce overall ANR issue noise in the Sentry dashboard</li> <li><strong>IMPORTANT:</strong> This option is enabled by default.</li> <li>Disable via <code>options.setEnableAnrFingerprinting(false)</code> or AndroidManifest.xml: <code>&lt;meta-data android:name="io.sentry.anr.enable-fingerprinting" android:value="false" /&gt;</code></li> </ul> </li> </ul> sentry-release-bot[bot] tag:github.com,2008:Repository/3368190/8.34.1 2026-03-05T15:54:49Z 8.34.1 <h3>Fixes</h3> <ul> <li>Common: Finalize previous session even when auto session tracking is disabled (<a href="https://github.com/getsentry/sentry-java/pull/5154" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5154/hovercard">#5154</a>)</li> <li>Android: Add <code>filterTouchesWhenObscured</code> to prevent Tapjacking on user feedback dialog (<a href="https://github.com/getsentry/sentry-java/pull/5155" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5155/hovercard">#5155</a>)</li> <li>Android: Add proguard rules to prevent error about missing Replay classes (<a href="https://github.com/getsentry/sentry-java/pull/5153" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5153/hovercard">#5153</a>)</li> </ul> sentry-release-bot[bot] tag:github.com,2008:Repository/3368190/8.34.0 2026-03-04T11:56:52Z 8.34.0 <h3>Features</h3> <ul> <li>Add scope-level attributes API (<a href="https://github.com/getsentry/sentry-java/pull/5118" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5118/hovercard">#5118</a>) via (<a href="https://github.com/getsentry/sentry-java/pull/5148" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5148/hovercard">#5148</a>) <ul> <li>Automatically include scope attributes in logs and metrics (<a href="https://github.com/getsentry/sentry-java/pull/5120" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5120/hovercard">#5120</a>)</li> <li>New APIs are <code>Sentry.setAttribute</code>, <code>Sentry.setAttributes</code>, <code>Sentry.removeAttribute</code></li> </ul> </li> <li>Support collections and arrays in attribute type inference (<a href="https://github.com/getsentry/sentry-java/pull/5124" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5124/hovercard">#5124</a>)</li> <li>Add support for <code>SENTRY_SAMPLE_RATE</code> environment variable / <code>sample-rate</code> property (<a href="https://github.com/getsentry/sentry-java/pull/5112" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5112/hovercard">#5112</a>)</li> <li>Create <code>sentry-opentelemetry-otlp</code> and <code>sentry-opentelemetry-otlp-spring</code> modules for combining OpenTelemetry SDK OTLP export with Sentry SDK (<a href="https://github.com/getsentry/sentry-java/pull/5100" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5100/hovercard">#5100</a>) <ul> <li>OpenTelemetry is configured to send spans to Sentry directly using an OTLP endpoint.</li> <li>Sentry only uses trace and span ID from OpenTelemetry (via <code>OpenTelemetryOtlpEventProcessor</code>) but will not send spans through OpenTelemetry nor use OpenTelemetry <code>Context</code> for <code>Scopes</code> propagation.</li> <li>See the OTLP setup docs for <a href="https://docs.sentry.io/platforms/java/opentelemetry/setup/otlp/" rel="nofollow">Java</a> and <a href="https://docs.sentry.io/platforms/java/guides/spring-boot/opentelemetry/setup/otlp/" rel="nofollow">Spring Boot</a> for installation and configuration instructions.</li> </ul> </li> <li>Add screenshot masking support using view hierarchy (<a href="https://github.com/getsentry/sentry-java/pull/5077" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5077/hovercard">#5077</a>) <ul> <li>Masks sensitive content (text, images) in error screenshots using the same view hierarchy approach as Session Replay</li> <li>Requires the <code>sentry-android-replay</code> module to be present at runtime for masking to work</li> <li>Enable via code: <div class="highlight highlight-source-kotlin notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="SentryAndroid.init(context) { options -&gt; options.isAttachScreenshot = true options.screenshot.setMaskAllText(true) options.screenshot.setMaskAllImages(true) // Or mask specific view classes options.screenshot.addMaskViewClass(&quot;com.example.MyCustomView&quot;) }"><pre><span class="pl-en">SentryAndroid</span>.<span class="pl-en">init</span>(context) { options <span class="pl-k">-&gt;</span> options.isAttachScreenshot <span class="pl-k">=</span> <span class="pl-c1">true</span> options.screenshot.setMaskAllText(<span class="pl-c1">true</span>) options.screenshot.setMaskAllImages(<span class="pl-c1">true</span>) <span class="pl-c"><span class="pl-c">//</span> Or mask specific view classes</span> options.screenshot.addMaskViewClass(<span class="pl-s"><span class="pl-pds">"</span>com.example.MyCustomView<span class="pl-pds">"</span></span>) }</pre></div> </li> <li>Or via <code>AndroidManifest.xml</code>: <div class="highlight highlight-text-xml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;meta-data android:name=&quot;io.sentry.attach-screenshot&quot; android:value=&quot;true&quot; /&gt; &lt;meta-data android:name=&quot;io.sentry.screenshot.mask-all-text&quot; android:value=&quot;true&quot; /&gt; &lt;meta-data android:name=&quot;io.sentry.screenshot.mask-all-images&quot; android:value=&quot;true&quot; /&gt;"><pre>&lt;<span class="pl-ent">meta-data</span> <span class="pl-e">android</span><span class="pl-e">:</span><span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">"</span>io.sentry.attach-screenshot<span class="pl-pds">"</span></span> <span class="pl-e">android</span><span class="pl-e">:</span><span class="pl-e">value</span>=<span class="pl-s"><span class="pl-pds">"</span>true<span class="pl-pds">"</span></span> /&gt; &lt;<span class="pl-ent">meta-data</span> <span class="pl-e">android</span><span class="pl-e">:</span><span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">"</span>io.sentry.screenshot.mask-all-text<span class="pl-pds">"</span></span> <span class="pl-e">android</span><span class="pl-e">:</span><span class="pl-e">value</span>=<span class="pl-s"><span class="pl-pds">"</span>true<span class="pl-pds">"</span></span> /&gt; &lt;<span class="pl-ent">meta-data</span> <span class="pl-e">android</span><span class="pl-e">:</span><span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">"</span>io.sentry.screenshot.mask-all-images<span class="pl-pds">"</span></span> <span class="pl-e">android</span><span class="pl-e">:</span><span class="pl-e">value</span>=<span class="pl-s"><span class="pl-pds">"</span>true<span class="pl-pds">"</span></span> /&gt;</pre></div> </li> </ul> </li> <li>The <code>ManifestMetaDataReader</code> now read the <code>DIST</code> (<a href="https://github.com/getsentry/sentry-java/pull/5107" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5107/hovercard">#5107</a>)</li> </ul> <h3>Fixes</h3> <ul> <li>Fix attribute type detection for <code>Long</code>, <code>Short</code>, <code>Byte</code>, <code>BigInteger</code>, <code>AtomicInteger</code>, and <code>AtomicLong</code> being incorrectly inferred as <code>double</code> instead of <code>integer</code> (<a href="https://github.com/getsentry/sentry-java/pull/5122" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5122/hovercard">#5122</a>)</li> <li>Remove <code>AndroidRuntimeManager</code> StrictMode relaxation to prevent ANRs during SDK init (<a href="https://github.com/getsentry/sentry-java/pull/5127" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5127/hovercard">#5127</a>) <ul> <li><strong>IMPORTANT:</strong> StrictMode violations may appear again in debug builds. This is intentional to prevent ANRs in production releases.</li> </ul> </li> <li>Fix crash when unregistering <code>SystemEventsBroadcastReceiver</code> with try-catch block. (<a href="https://github.com/getsentry/sentry-java/pull/5106" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5106/hovercard">#5106</a>)</li> <li>Use <code>peekDecorView</code> instead of <code>getDecorView</code> in <code>SentryGestureListener</code> to avoid forcing view hierarchy construction (<a href="https://github.com/getsentry/sentry-java/pull/5134" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5134/hovercard">#5134</a>)</li> <li>Log an actionable error message when Relay returns HTTP 413 (Content Too Large) (<a href="https://github.com/getsentry/sentry-java/pull/5115" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5115/hovercard">#5115</a>) <ul> <li>Also switch the client report discard reason for all HTTP 4xx/5xx errors (except 429) from <code>network_error</code> to <code>send_error</code></li> </ul> </li> <li>Trim DSN string before parsing to avoid <code>URISyntaxException</code> caused by trailing whitespace (<a href="https://github.com/getsentry/sentry-java/pull/5113" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5113/hovercard">#5113</a>)</li> <li>Reduce allocations and bytecode instructions during <code>Sentry.init</code> (<a href="https://github.com/getsentry/sentry-java/pull/5135" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5135/hovercard">#5135</a>)</li> </ul> <h3>Dependencies</h3> <ul> <li>Bump Native SDK from v0.12.7 to v0.13.1 (<a href="https://github.com/getsentry/sentry-java/pull/5104" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5104/hovercard">#5104</a>) <ul> <li><a href="https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0131">changelog</a></li> <li><a href="https://github.com/getsentry/sentry-native/compare/0.12.7...0.13.1">diff</a></li> </ul> </li> </ul> sentry-release-bot[bot] tag:github.com,2008:Repository/3368190/8.33.0 2026-02-18T13:28:40Z 8.33.0 <h3>Features</h3> <ul> <li>Add <code>installGroupsOverride</code> parameter to Build Distribution SDK for programmatic filtering, with support for configuration via properties file using <code>io.sentry.distribution.install-groups-override</code> (<a href="https://github.com/getsentry/sentry-java/pull/5066" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5066/hovercard">#5066</a>)</li> </ul> <h3>Fixes</h3> <ul> <li>When merging tombstones with Native SDK, use the tombstone message if the Native SDK didn't explicitly provide one. (<a href="https://github.com/getsentry/sentry-java/pull/5095" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5095/hovercard">#5095</a>)</li> <li>Fix thread leak caused by eager creation of <code>SentryExecutorService</code> in <code>SentryOptions</code> (<a href="https://github.com/getsentry/sentry-java/pull/5093" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5093/hovercard">#5093</a>) <ul> <li>There were cases where we created options that ended up unused but we failed to clean those up.</li> </ul> </li> <li>Attach user attributes to logs and metrics regardless of <code>sendDefaultPii</code> (<a href="https://github.com/getsentry/sentry-java/pull/5099" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5099/hovercard">#5099</a>)</li> <li>No longer log a warning if a logging integration cannot initialize Sentry due to missing DSN (<a href="https://github.com/getsentry/sentry-java/pull/5075" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5075/hovercard">#5075</a>) <ul> <li>While this may have been useful to some, it caused lots of confusion.</li> </ul> </li> <li>Session Replay: Add <code>androidx.camera.view.PreviewView</code> to default <code>maskedViewClasses</code> to mask camera previews by default. (<a href="https://github.com/getsentry/sentry-java/pull/5097" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5097/hovercard">#5097</a>)</li> </ul> <h3>Dependencies</h3> <ul> <li>Bump Native SDK from v0.12.4 to v0.12.7 (<a href="https://github.com/getsentry/sentry-java/pull/5071" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5071/hovercard">#5071</a>, <a href="https://github.com/getsentry/sentry-java/pull/5098" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5098/hovercard">#5098</a>) <ul> <li><a href="https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0127">changelog</a></li> <li><a href="https://github.com/getsentry/sentry-native/compare/0.12.4...0.12.7">diff</a></li> </ul> </li> </ul> <h3>Internal</h3> <ul> <li>Add integration to track session replay custom masking (<a href="https://github.com/getsentry/sentry-java/pull/5070" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5070/hovercard">#5070</a>)</li> </ul> sentry-release-bot[bot] tag:github.com,2008:Repository/3368190/8.32.0 2026-02-09T10:10:38Z 8.32.0 <h3>Features</h3> <ul> <li>Add <code>installGroupsOverride</code> parameter and <code>installGroups</code> property to Build Distribution SDK (<a href="https://github.com/getsentry/sentry-java/pull/5062" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5062/hovercard">#5062</a>)</li> <li>Update Android targetSdk to API 36 (Android 16) (<a href="https://github.com/getsentry/sentry-java/pull/5016" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5016/hovercard">#5016</a>)</li> <li>Add AndroidManifest support for Spotlight configuration via <code>io.sentry.spotlight.enable</code> and <code>io.sentry.spotlight.url</code> (<a href="https://github.com/getsentry/sentry-java/pull/5064" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5064/hovercard">#5064</a>)</li> <li>Collect database transaction spans (<code>BEGIN</code>, <code>COMMIT</code>, <code>ROLLBACK</code>) (<a href="https://github.com/getsentry/sentry-java/pull/5072" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5072/hovercard">#5072</a>) <ul> <li>To enable creation of these spans, set <code>options.enableDatabaseTransactionTracing</code> to <code>true</code></li> <li><code>enable-database-transaction-tracing=true</code> when using <code>sentry.properties</code></li> <li>For Spring Boot, use <code>sentry.enable-database-transaction-tracing=true</code> in <code>application.properties</code> or in <code>application.yml</code>: <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="sentry: enable-database-transaction-tracing: true"><pre><span class="pl-ent">sentry</span>: <span class="pl-ent">enable-database-transaction-tracing</span>: <span class="pl-c1">true</span></pre></div> </li> </ul> </li> <li>Add support for collecting native crashes using Tombstones (<a href="https://github.com/getsentry/sentry-java/pull/4933" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4933/hovercard">#4933</a>, <a href="https://github.com/getsentry/sentry-java/pull/5037" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5037/hovercard">#5037</a>) <ul> <li>Added Tombstone integration that detects native crashes using <code>ApplicationExitInfo.REASON_CRASH_NATIVE</code> on Android 12+</li> <li>Crashes enriched with Tombstones contain more crash details and detailed thread info</li> <li>Tombstone and NDK integrations are now automatically merged into a single crash event, eliminating duplicate reports</li> <li>To enable it, add the integration in your Sentry initialization: <div class="highlight highlight-source-kotlin notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="SentryAndroid.init(context, options -&gt; { options.isTombstoneEnabled = true })"><pre><span class="pl-en">SentryAndroid</span>.<span class="pl-en">init</span>(context, options <span class="pl-k">-&gt;</span> { options.isTombstoneEnabled <span class="pl-k">=</span> <span class="pl-c1">true</span> })</pre></div> or in the <code>AndroidManifest.xml</code> using: <div class="highlight highlight-text-xml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;meta-data android:name=&quot;io.sentry.tombstone.enable&quot; android:value=&quot;true&quot; /&gt;"><pre>&lt;<span class="pl-ent">meta-data</span> <span class="pl-e">android</span><span class="pl-e">:</span><span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">"</span>io.sentry.tombstone.enable<span class="pl-pds">"</span></span> <span class="pl-e">android</span><span class="pl-e">:</span><span class="pl-e">value</span>=<span class="pl-s"><span class="pl-pds">"</span>true<span class="pl-pds">"</span></span> /&gt;</pre></div> </li> </ul> </li> </ul> <h3>Fixes</h3> <ul> <li>Extract <code>SpotlightIntegration</code> to separate <code>sentry-spotlight</code> module to prevent insecure HTTP URLs from appearing in release APKs (<a href="https://github.com/getsentry/sentry-java/pull/5064" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5064/hovercard">#5064</a>) <ul> <li><strong>Breaking:</strong> Users who enable Spotlight must now add the <code>io.sentry:sentry-spotlight</code> dependency: <div class="highlight highlight-source-kotlin notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="dependencies { debugImplementation(&quot;io.sentry:sentry-spotlight:&lt;version&gt;&quot;) }"><pre>dependencies { debugImplementation(<span class="pl-s"><span class="pl-pds">"</span>io.sentry:sentry-spotlight:&lt;version&gt;<span class="pl-pds">"</span></span>) }</pre></div> </li> </ul> </li> <li>Fix scroll target detection for Jetpack Compose (<a href="https://github.com/getsentry/sentry-java/pull/5017" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5017/hovercard">#5017</a>)</li> <li>No longer fork Sentry <code>Scopes</code> for <code>reactor-kafka</code> consumer poll <code>Runnable</code> (<a href="https://github.com/getsentry/sentry-java/pull/5080" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5080/hovercard">#5080</a>) <ul> <li>This was causing a memory leak because <code>reactor-kafka</code>'s poll event reschedules itself infinitely, and each invocation of <code>SentryScheduleHook</code> created forked scopes with a parent reference, building an unbounded chain that couldn't be garbage collected.</li> </ul> </li> <li>Fix cold/warm app start type detection for Android devices running API level 34+ (<a href="https://github.com/getsentry/sentry-java/pull/4999" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4999/hovercard">#4999</a>)</li> </ul> <h3>Internal</h3> <ul> <li>Establish new native exception mechanisms to differentiate events generated by <code>sentry-native</code> from <code>ApplicationExitInfo</code>. (<a href="https://github.com/getsentry/sentry-java/pull/5052" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5052/hovercard">#5052</a>)</li> <li>Set <code>write</code> permission for <code>statuses</code> in the changelog preview GHA workflow. (<a href="https://github.com/getsentry/sentry-java/pull/5053" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5053/hovercard">#5053</a>)</li> </ul> <h3>Dependencies</h3> <ul> <li>Bump Native SDK from v0.12.3 to v0.12.4 (<a href="https://github.com/getsentry/sentry-java/pull/5061" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5061/hovercard">#5061</a>) <ul> <li><a href="https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0124">changelog</a></li> <li><a href="https://github.com/getsentry/sentry-native/compare/0.12.3...0.12.4">diff</a></li> </ul> </li> </ul> sentry-release-bot[bot] tag:github.com,2008:Repository/3368190/8.31.0 2026-02-25T13:00:16Z 8.31.0 (Stable) <h3>Features</h3> <ul> <li>Added <code>io.sentry.ndk.sdk-name</code> Android manifest option to configure the native SDK's name (<a href="https://github.com/getsentry/sentry-java/pull/5027" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5027/hovercard">#5027</a>)</li> <li>Replace <code>sentry.trace.parent_span_id</code> attribute with <code>spanId</code> property on <code>SentryLogEvent</code> (<a href="https://github.com/getsentry/sentry-java/pull/5040" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5040/hovercard">#5040</a>)</li> </ul> <h3>Fixes</h3> <ul> <li>Only attach user attributes to logs if <code>sendDefaultPii</code> is enabled (<a href="https://github.com/getsentry/sentry-java/pull/5036" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5036/hovercard">#5036</a>)</li> <li>Reject new logs if <code>LoggerBatchProcessor</code> is shutting down (<a href="https://github.com/getsentry/sentry-java/pull/5041" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5041/hovercard">#5041</a>)</li> <li>Downgrade protobuf-javalite dependency from 4.33.1 to 3.25.8 (<a href="https://github.com/getsentry/sentry-java/pull/5044" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5044/hovercard">#5044</a>)</li> </ul> <h3>Dependencies</h3> <ul> <li>Bump Native SDK from v0.12.2 to v0.12.3 (<a href="https://github.com/getsentry/sentry-java/pull/5012" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5012/hovercard">#5012</a>) <ul> <li><a href="https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0123">changelog</a></li> <li><a href="https://github.com/getsentry/sentry-native/compare/0.12.2...0.12.3">diff</a></li> </ul> </li> </ul> sentry-release-bot[bot] tag:github.com,2008:Repository/3368190/8.30.0 2026-01-15T10:01:08Z 8.30.0 <h3>Fixes</h3> <ul> <li>Fix ANRs when collecting device context (<a href="https://github.com/getsentry/sentry-java/pull/4970" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4970/hovercard">#4970</a>) <ul> <li><strong>IMPORTANT:</strong> This disables collecting external storage size (total/free) by default, to enable it back<br> use <code>options.isCollectExternalStorageContext = true</code> or <code>&lt;meta-data android:name="io.sentry.external-storage-context" android:value="true" /&gt;</code></li> </ul> </li> <li>Fix <code>NullPointerException</code> when reading ANR marker (<a href="https://github.com/getsentry/sentry-java/pull/4979" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4979/hovercard">#4979</a>)</li> <li>Report discarded log in batch processor as <code>log_byte</code> (<a href="https://github.com/getsentry/sentry-java/pull/4971" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4971/hovercard">#4971</a>)</li> </ul> <h3>Improvements</h3> <ul> <li>Expose <code>MAX_EVENT_SIZE_BYTES</code> constant in SentryOptions (<a href="https://github.com/getsentry/sentry-java/pull/4962" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4962/hovercard">#4962</a>)</li> <li>Discard envelopes on <code>4xx</code> and <code>5xx</code> response (<a href="https://github.com/getsentry/sentry-java/pull/4950" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4950/hovercard">#4950</a>) <ul> <li>This aims to not overwhelm Sentry after an outage or load shedding (including HTTP 429) where too many events are sent at once</li> </ul> </li> </ul> <h3>Feature</h3> <ul> <li>Add a Tombstone integration that detects native crashes without relying on the NDK integration, but instead using <code>ApplicationExitInfo.REASON_CRASH_NATIVE</code> on Android 12+. (<a href="https://github.com/getsentry/sentry-java/pull/4933" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4933/hovercard">#4933</a>) <ul> <li>Currently exposed via options as an <em>internal</em> API only.</li> <li>If enabled alongside the NDK integration, crashes will be reported as two separate events. Users should enable only one; deduplication between both integrations will be added in a future release.</li> </ul> </li> <li>Add Sentry Metrics to Java SDK (<a href="https://github.com/getsentry/sentry-java/pull/5026" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/5026/hovercard">#5026</a>) <ul> <li>Metrics are enabled by default</li> <li>APIs are namespaced under <code>Sentry.metrics()</code></li> <li>We offer the following APIs: <ul> <li><code>count</code>: A metric that increments counts</li> <li><code>gauge</code>: A metric that tracks a value that can go up or down</li> <li><code>distribution</code>: A metric that tracks the statistical distribution of values</li> </ul> </li> <li>For more details, see the Metrics documentation: <a href="https://docs.sentry.io/product/explore/metrics/getting-started/" rel="nofollow">https://docs.sentry.io/product/explore/metrics/getting-started/</a></li> </ul> </li> </ul> sentry-release-bot[bot] tag:github.com,2008:Repository/3368190/8.29.0 2026-01-23T14:47:06Z 8.29.0 (Stable) <h3>Fixes</h3> <ul> <li>Support serialization of primitive arrays (boolean[], byte[], short[], char[], int[], long[], float[], double[]) (<a href="https://github.com/getsentry/sentry-java/pull/4968" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4968/hovercard">#4968</a>)</li> <li>Session Replay: Improve network body parsing and truncation handling (<a href="https://github.com/getsentry/sentry-java/pull/4958" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4958/hovercard">#4958</a>)</li> </ul> <h3>Internal</h3> <ul> <li>Support <code>metric</code> envelope item type (<a href="https://github.com/getsentry/sentry-java/pull/4956" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4956/hovercard">#4956</a>)</li> </ul> sentry-release-bot[bot] tag:github.com,2008:Repository/3368190/8.28.0 2025-12-04T14:05:09Z 8.28.0 <h3>Features</h3> <ul> <li>Android: Flush logs when app enters background (<a href="https://github.com/getsentry/sentry-java/pull/4951" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4951/hovercard">#4951</a>)</li> <li>Add option to capture additional OkHttp network request/response details in session replays (<a href="https://github.com/getsentry/sentry-java/pull/4919" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4919/hovercard">#4919</a>) <ul> <li>Depends on <code>SentryOkHttpInterceptor</code> to intercept the request and extract request/response bodies</li> <li>To enable, add url regexes via the <code>io.sentry.session-replay.network-detail-allow-urls</code> metadata tag in AndroidManifest (<a href="https://github.com/getsentry/sentry-java/blob/b03edbb1b0d8b871c62a09bc02cbd8a4e1f6fea1/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml#L196-L205">code sample</a>) <ul> <li>Or you can manually specify SentryReplayOptions via <code>SentryAndroid#init</code>:<br> <em>(Make sure you disable the auto init via manifest meta-data: io.sentry.auto-init=false)</em></li> </ul> </li> </ul> </li> </ul> <details> <summary>Kotlin</summary> <div class="highlight highlight-source-kotlin notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="SentryAndroid.init( this, options -&gt; { // options.dsn = &quot;https://[email protected]/0&quot; // options.sessionReplay.sessionSampleRate = 1.0 // options.sessionReplay.onErrorSampleRate = 1.0 // .. options.sessionReplay.networkDetailAllowUrls = listOf(&quot;.*&quot;) options.sessionReplay.networkDetailDenyUrls = listOf(&quot;.*deny.*&quot;) options.sessionReplay.networkRequestHeaders = listOf(&quot;Authorization&quot;, &quot;X-Custom-Header&quot;, &quot;X-Test-Request&quot;) options.sessionReplay.networkResponseHeaders = listOf(&quot;X-Response-Time&quot;, &quot;X-Cache-Status&quot;, &quot;X-Test-Response&quot;) });"><pre><span class="pl-en">SentryAndroid</span>.<span class="pl-en">init</span>( <span class="pl-c1">this</span>, options <span class="pl-k">-&gt;</span> { <span class="pl-c"><span class="pl-c">//</span> options.dsn = "https://[email protected]/0"</span> <span class="pl-c"><span class="pl-c">//</span> options.sessionReplay.sessionSampleRate = 1.0</span> <span class="pl-c"><span class="pl-c">//</span> options.sessionReplay.onErrorSampleRate = 1.0</span> <span class="pl-c"><span class="pl-c">//</span> ..</span> options.sessionReplay.networkDetailAllowUrls <span class="pl-k">=</span> <span class="pl-c1">listOf</span>(<span class="pl-s"><span class="pl-pds">"</span>.*<span class="pl-pds">"</span></span>) options.sessionReplay.networkDetailDenyUrls <span class="pl-k">=</span> <span class="pl-c1">listOf</span>(<span class="pl-s"><span class="pl-pds">"</span>.*deny.*<span class="pl-pds">"</span></span>) options.sessionReplay.networkRequestHeaders <span class="pl-k">=</span> <span class="pl-c1">listOf</span>(<span class="pl-s"><span class="pl-pds">"</span>Authorization<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>X-Custom-Header<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>X-Test-Request<span class="pl-pds">"</span></span>) options.sessionReplay.networkResponseHeaders <span class="pl-k">=</span> <span class="pl-c1">listOf</span>(<span class="pl-s"><span class="pl-pds">"</span>X-Response-Time<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>X-Cache-Status<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>X-Test-Response<span class="pl-pds">"</span></span>) });</pre></div> </details> <details> <summary>Java</summary> <div class="highlight highlight-source-java notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="SentryAndroid.init( this, options -&gt; { options.getSessionReplay().setNetworkDetailAllowUrls(Arrays.asList(&quot;.*&quot;)); options.getSessionReplay().setNetworkDetailDenyUrls(Arrays.asList(&quot;.*deny.*&quot;)); options.getSessionReplay().setNetworkRequestHeaders( Arrays.asList(&quot;Authorization&quot;, &quot;X-Custom-Header&quot;, &quot;X-Test-Request&quot;)); options.getSessionReplay().setNetworkResponseHeaders( Arrays.asList(&quot;X-Response-Time&quot;, &quot;X-Cache-Status&quot;, &quot;X-Test-Response&quot;)); }); "><pre><span class="pl-smi">SentryAndroid</span>.<span class="pl-en">init</span>( <span class="pl-smi">this</span>, <span class="pl-s1">options</span> -&gt; { <span class="pl-s1">options</span>.<span class="pl-en">getSessionReplay</span>().<span class="pl-en">setNetworkDetailAllowUrls</span>(<span class="pl-smi">Arrays</span>.<span class="pl-en">asList</span>(<span class="pl-s">".*"</span>)); <span class="pl-s1">options</span>.<span class="pl-en">getSessionReplay</span>().<span class="pl-en">setNetworkDetailDenyUrls</span>(<span class="pl-smi">Arrays</span>.<span class="pl-en">asList</span>(<span class="pl-s">".*deny.*"</span>)); <span class="pl-s1">options</span>.<span class="pl-en">getSessionReplay</span>().<span class="pl-en">setNetworkRequestHeaders</span>( <span class="pl-smi">Arrays</span>.<span class="pl-en">asList</span>(<span class="pl-s">"Authorization"</span>, <span class="pl-s">"X-Custom-Header"</span>, <span class="pl-s">"X-Test-Request"</span>)); <span class="pl-s1">options</span>.<span class="pl-en">getSessionReplay</span>().<span class="pl-en">setNetworkResponseHeaders</span>( <span class="pl-smi">Arrays</span>.<span class="pl-en">asList</span>(<span class="pl-s">"X-Response-Time"</span>, <span class="pl-s">"X-Cache-Status"</span>, <span class="pl-s">"X-Test-Response"</span>)); });</pre></div> </details> <h3>Improvements</h3> <ul> <li>Avoid forking <code>rootScopes</code> for Reactor if current thread has <code>NoOpScopes</code> (<a href="https://github.com/getsentry/sentry-java/pull/4793" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4793/hovercard">#4793</a>) <ul> <li>This reduces the SDKs overhead by avoiding unnecessary scope forks</li> </ul> </li> </ul> <h3>Fixes</h3> <ul> <li>Fix missing thread stacks for ANRv1 events (<a href="https://github.com/getsentry/sentry-java/pull/4918" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4918/hovercard">#4918</a>)</li> <li>Fix handling of unparseable mime-type on request filter (<a href="https://github.com/getsentry/sentry-java/pull/4939" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4939/hovercard">#4939</a>)</li> </ul> <h3>Internal</h3> <ul> <li>Support <code>span</code> envelope item type (<a href="https://github.com/getsentry/sentry-java/pull/4935" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4935/hovercard">#4935</a>)</li> </ul> <h3>Dependencies</h3> <ul> <li>Bump Native SDK from v0.12.1 to v0.12.2 (<a href="https://github.com/getsentry/sentry-java/pull/4944" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4944/hovercard">#4944</a>) <ul> <li><a href="https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0122">changelog</a></li> <li><a href="https://github.com/getsentry/sentry-native/compare/0.12.1...0.12.2">diff</a></li> </ul> </li> </ul> sentry-release-bot[bot] tag:github.com,2008:Repository/3368190/8.27.1 2025-11-24T13:32:48Z 8.27.1 <h3>Fixes</h3> <ul> <li>Do not log if <code>sentry.properties</code> in rundir has not been found (<a href="https://github.com/getsentry/sentry-java/pull/4929" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-java/pull/4929/hovercard">#4929</a>)</li> </ul> sentry-release-bot[bot]