You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Expose enableUserInteractionBreadcrumbs (Android) to disable the native UserInteractionIntegration #6993
On Android, the native UserInteractionIntegration from sentry-java wraps every activity's Window.Callback and does gesture detection on the main thread for every touch event. In a React Native app this mostly duplicates the touch breadcrumbs the JS SDK already records.
On low-end Android devices we saw recurring ANRs where the blocked main-thread frame was inside the Sentry window callback (on touch dispatch and around onPause). The only way we found to turn the integration off from a React Native / Expo app was a config plugin that writes these manifest meta-data entries:
RNSentryStart.java already forwards the other native Android breadcrumb off-switches added in #6764 and #6768 (enableActivityLifecycleBreadcrumbs, enableAppLifecycleBreadcrumbs, enableSystemEventBreadcrumbs, enableAppComponentBreadcrumbs, enableNetworkEventBreadcrumbs). setEnableUserInteractionBreadcrumbs is not forwarded, so there is no option in Sentry.init for it. #6747 did not list it.
Solution Brainstorm
Add an Android-only enableUserInteractionBreadcrumbs option and handle it the same way as the existing off-switches:
RNSentryStart.java: call options.setEnableUserInteractionBreadcrumbs(...) only when the key is present, so the native default (true) stays the same.
options.ts: add the type with JSDoc (@default true, @platform android).
Tests in RNSentryStartTest (true, false, and default kept when unset) and in wrapper.test.ts, plus the API report and a CHANGELOG entry.
Native user interaction tracing is already false by default in sentry-java, and the RN SDK does not turn it on. So with this option set to false, UserInteractionIntegration.register sees both flags off and does not install the window callback. I don't think a second option for native tracing is needed. I also kept this option separate from the existing JS enableUserInteractionTracing, because that one controls JS touch tracing.
Thank you for the detailed report. We agree with the approach. Please open the PR.
We checked the details against the code. In sentry-java 8.63.0, UserInteractionIntegration.register installs the window callback only when user interaction breadcrumbs or user interaction tracing is on. Native tracing is false by default, and the React Native SDK does not turn it on. So one option is enough, and we do not need a second option for native tracing.
Before you open the PR, please do these things:
Rebase your branch on main.
Keep the CHANGELOG entry to one line. You can remove the second line.
In the JSDoc, say that the native breadcrumbs duplicate the JS touch breadcrumbs only when the app uses Sentry.wrap (which adds TouchEventBoundary).
Activity
linear-code commentedon Nov 5, 2026
RN-848
alwx commentedon Nov 8, 2026
Duplicate of #Thanks for reporting. We've seen your request and added it to our triage queue.
We'll review it shortly and follow up if we need more information or once next steps are clearer.
alwx commentedon Nov 10, 2026
Thank you for the detailed report. We agree with the approach. Please open the PR.
We checked the details against the code. In sentry-java 8.63.0,
UserInteractionIntegration.registerinstalls the window callback only when user interaction breadcrumbs or user interaction tracing is on. Native tracing isfalseby default, and the React Native SDK does not turn it on. So one option is enough, and we do not need a second option for native tracing.Before you open the PR, please do these things:
main.Sentry.wrap(which addsTouchEventBoundary).feat(android): Add enableUserInteractionBreadcrumbs option
GersonRocha9 commentedon Nov 10, 2026
Thank you for the review. The PR is open: #7016.
main.Sentry.wrap, which addsTouchEventBoundary.