From 821fef94291860ba463269804a57016e3a3dec3f Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Mon, 3 Feb 2025 15:21:42 +0200 Subject: [PATCH] Ignore JavascriptException by default --- .../java/io/sentry/react/RNSentryStartTest.kt | 4 ++-- .../main/java/io/sentry/react/RNSentryStart.java | 16 ++++------------ 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/packages/core/RNSentryAndroidTester/app/src/test/java/io/sentry/react/RNSentryStartTest.kt b/packages/core/RNSentryAndroidTester/app/src/test/java/io/sentry/react/RNSentryStartTest.kt index c2ee6f1d88..a49112f421 100644 --- a/packages/core/RNSentryAndroidTester/app/src/test/java/io/sentry/react/RNSentryStartTest.kt +++ b/packages/core/RNSentryAndroidTester/app/src/test/java/io/sentry/react/RNSentryStartTest.kt @@ -63,9 +63,9 @@ class RNSentryStartTest { } @Test - fun `the JavascriptException is added to the ignoredExceptionsForType list on initialisation`() { + fun `the JavascriptException is added to the ignoredExceptionsForType list on with react defaults`() { val actualOptions = SentryAndroidOptions() - RNSentryStart.getSentryAndroidOptions(actualOptions, JavaOnlyMap.of(), activity, logger) + RNSentryStart.updateWithReactDefaults(actualOptions) assertTrue(actualOptions.ignoredExceptionsForType.contains(JavascriptException::class.java)) } diff --git a/packages/core/android/src/main/java/io/sentry/react/RNSentryStart.java b/packages/core/android/src/main/java/io/sentry/react/RNSentryStart.java index fba830f062..0fa6f5dc11 100644 --- a/packages/core/android/src/main/java/io/sentry/react/RNSentryStart.java +++ b/packages/core/android/src/main/java/io/sentry/react/RNSentryStart.java @@ -194,10 +194,6 @@ static void getSentryAndroidOptions( return breadcrumb; }); - // React native internally throws a JavascriptException. - // we want to ignore it on the native side to avoid sending it twice. - options.addIgnoredExceptionForType(JavascriptException.class); - if (rnOptions.hasKey("enableNativeCrashHandling") && !rnOptions.getBoolean("enableNativeCrashHandling")) { final List integrations = options.getIntegrations(); @@ -224,6 +220,10 @@ static void updateWithReactDefaults(@NotNull SentryAndroidOptions options) { options.setTracesSampleRate(null); options.setTracesSampler(null); options.setEnableTracing(false); + + // React native internally throws a JavascriptException. + // we want to ignore it on the native side to avoid sending it twice. + options.addIgnoredExceptionForType(JavascriptException.class); } /** @@ -234,14 +234,6 @@ static void updateWithReactFinals(@NotNull SentryAndroidOptions options) { BeforeSendCallback userBeforeSend = options.getBeforeSend(); options.setBeforeSend( (event, hint) -> { - // Unhandled JS Exception are processed by the SDK on JS layer - // To avoid duplicates we drop them in the native SDKs - if (event.getExceptions() != null && !event.getExceptions().isEmpty()) { - String exType = event.getExceptions().get(0).getType(); - if (exType != null && exType.contains("Unhandled JS Exception")) { - return null; // Skip sending this event - } - } setEventOriginTag(event); addPackages(event, options.getSdkVersion()); if (userBeforeSend != null) {