Skip to content

Commit ab915eb

Browse files
antonisclaude
andcommitted
fix(core): Guard against nil SPI result on iOS and leaked listener on Android
- iOS: Add nil check on getFramesDelaySPI result before accessing delayDuration (messaging nil returns 0 in ObjC, causing false frames.delay: 0) - Android: Call stop() before start() in RNSentryFrameDelayCollector to prevent leaked listeners on repeated initialization (e.g. JS bundle reload) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 40181ed commit ab915eb

2 files changed

Lines changed: 2 additions & 1 deletion

File tree

packages/core/android/src/main/java/io/sentry/react/RNSentryFrameDelayCollector.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public boolean start(@Nullable SentryFrameMetricsCollector frameMetricsCollector
3131
if (frameMetricsCollector == null) {
3232
return false;
3333
}
34+
stop();
3435
this.collector = frameMetricsCollector;
3536
this.listenerId = frameMetricsCollector.startCollection(this);
3637
return this.listenerId != null;

packages/core/ios/RNSentry.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ - (void)handleShakeDetected
572572
SentryFramesDelayResultSPI *result = [framesTracker getFramesDelaySPI:startSystemTime
573573
endSystemTimestamp:endSystemTime];
574574

575-
if (result.delayDuration >= 0) {
575+
if (result != nil && result.delayDuration >= 0) {
576576
resolve(@(result.delayDuration));
577577
} else {
578578
resolve(nil);

0 commit comments

Comments
 (0)