Repository navigation
chore(deps): update Android SDK to v8.63.0 - #1173
github-actions[bot] wants to merge 1 commit into
Conversation
d4eec0d to
d214afa
Compare
d214afa to
88c515f
Compare
bbca653 to
858847d
Compare
858847d to
004996a
Compare
004996a to
90a5389
Compare
90a5389 to
e636389
Compare
d92dff6 to
37553fe
Compare
37553fe to
28f2eb0
Compare
a7f71ca to
4996d09
Compare
4996d09 to
4e1e1aa
Compare
4e1e1aa to
f2f750c
Compare
8376130 to
0d5e663
Compare
0d5e663 to
fb4892c
Compare
49011b6 to
546a567
Compare
546a567 to
fce6360
Compare
fce6360 to
9a239de
Compare
9a239de to
75ed20e
Compare
36b3504 to
7cc3b01
Compare
7cc3b01 to
c1bb04c
Compare
c1bb04c to
e66b608
Compare
e66b608 to
a145bbb
Compare
a145bbb to
61100a6
Compare
61100a6 to
fbd60dd
Compare
| dependencies { | ||
| implementation project(':capacitor-android') | ||
| implementation 'io.sentry:sentry-android:8.41.0' | ||
| implementation 'io.sentry:sentry-android:8.51.0' |
There was a problem hiding this comment.
Bug: The captureEnvelope method does not create the outbox directory before writing, a new requirement in sentry-java 8.51.0, which can lead to silent event loss.
Severity: HIGH
Suggested Fix
Before the call to InternalSentrySdk.captureEnvelope in SentryCapacitor.java, ensure the outbox directory exists. This can be done by getting the outbox path from the Sentry options and calling new File(outboxPath).mkdirs().
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: android/build.gradle#L94
Potential issue: The update to `sentry-java` version 8.51.0 requires that the outbox
directory is created before writing envelopes to it. The `captureEnvelope` method in
`SentryCapacitor.java` calls `InternalSentrySdk.captureEnvelope` without first creating
this directory. If the directory does not exist, the operation will fail. This failure
is caught and results in a rejected promise on the JavaScript side, causing events to be
silently dropped instead of being sent to Sentry. This is a functional regression that
leads to data loss.
Also affects:
android/src/main/java/io/sentry/capacitor/SentryCapacitor.java:259~270
Did we get this right? 👍 / 👎 to inform future reviews.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit fbd60dd. Configure here.
| dependencies { | ||
| implementation project(':capacitor-android') | ||
| implementation 'io.sentry:sentry-android:8.50.1' | ||
| implementation 'io.sentry:sentry-android:8.58.0' |
There was a problem hiding this comment.
Bug: The dependency bump for the Sentry Android SDK may cause silent data loss. The code relies on an internal API, InternalSentrySdk.serializeScope(), whose structure could have changed, leading to missing event data.
Severity: MEDIUM
Suggested Fix
Verify the structure of the map returned by InternalSentrySdk.serializeScope() in Sentry Android SDK v8.58.0. If the keys have changed, update the code to use the new keys. Consider adding logging for when expected keys are not found to make future breakages more visible. If possible, switch to a public, stable API to avoid this issue with future updates.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: android/build.gradle#L94
Potential issue: The code relies on the internal Sentry API
`InternalSentrySdk.serializeScope()` to fetch native device contexts and log attributes,
specifically checking for keys like `"breadcrumbs"`, `"contexts"`, and `"release"`. The
Sentry Android SDK is being upgraded across 8 minor versions (8.50.1 to 8.58.0). As this
is an internal, undocumented API, its return structure may have changed. If the key
names in the map returned by `serializeScope()` have been altered in the new version,
the existing `containsKey()` checks will fail silently. This will not cause a crash but
will result in the loss of native context and breadcrumbs from Sentry events, leading to
incomplete diagnostic data.

Bumps scripts/update-android.sh from 8.61.0 to 8.63.0.
Auto-generated by a dependency updater.
Changelog
8.63.0
Features
Environmentto theScope, allowing you to overwrite theEnvironmentset on the options (#5772)Environmentis also applied to the trace envelope header (DSC), logs, metrics and profiles, so all telemetry of a trace reports the same environmentattachTracingHeadersflag toSentryApolloInterceptorto stop attachingsentry-traceandbaggageheaders to Apollo v2 requests (#6414)tracePropagationTargets. PassattachTracingHeaders = falseto opt out.Improvements
maskViewClasses/unmaskViewClasseslists by using constant-time class lookups (#6410)Behavioral Changes
SentryTraced, now let any idle parent transaction finish after the idle timeout (3s by default) with statusok, rather than waiting for the deadline (30s by default) and reportingdeadline_exceeded(#6396)SentryTraced, expect shorter durations and lower failure rates for affectedui.loadand navigation transactions, plus changes to metrics measured over the transaction's lifetime, such as slow and frozen frames.Fixes
startProfileris called before a requested stop takes effect at the end of the current chunk (#6291)TRACEmode while sampled spans were active. On API 34 and lower, every later profile also stopped after one chunk.diston ANR and app-exit events when the release has no+versionCode(#6450)invalid character '').distis now left empty unlessoptions.distis set or the release contains a version code.Dependencies
8.62.0
Improvements
SentryNavEffect(#6305)Fixes
NullPointerException: Cannot invoke "String.length()") when dexing the SDK with AGP 8.0 and older, a regression from 8.61.1 (#6356)8.61.1
Fixes
SIGABRTon the RenderThread) when stopping a replay that uses the canvas screenshot strategy (#6342)stop()is called right afterflush()in buffer mode (#6340)sentry.io), not to self-hosted Sentry, not to any other connection your app makes, and not if you set your ownSentryOptions.setSslSocketFactory.eglDestroySurface(#6282)Internal
ScreenshotUtils.takeMaskedScreenshotso Hybrid SDKs can capture screenshots masked according toSentryAndroidOptions.getScreenshot()(#6281)Dependencies