Skip to content

Conversation

@antonis
Copy link
Contributor

@antonis antonis commented Jan 14, 2026

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Fix duplicate JS error reporting on iOS with New Architecture.

With New Architecture, React Native wraps JS errors in C++ exceptions. These exceptions are caught by the native crash handler and should be filtered out since the JS error is already reported by the JS error handler. The key indicator is "ExceptionsManager.reportException" in the exception value, which is React Native's mechanism for reporting JS errors to the native layer.

💡 Motivation and Context

Fixes #5529

💚 How did you test it?

CI

📝 Checklist

  • I added tests to verify changes
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • All tests passing
  • No breaking changes

🔮 Next steps

@antonis
Copy link
Contributor Author

antonis commented Jan 14, 2026

@sentry review

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

Semver Impact of This PR

None (no version bump detected)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


  • fix(ios): Fix duplicate JS error reporting on iOS with New Architecture by antonis in #5532
  • chore(deps): update Bundler Plugins to v4.6.2 by github-actions in #5536
  • chore(deps): update JavaScript SDK to v10.34.0 by github-actions in #5535
  • chore(deps): bump undici from 6.21.3 to 6.23.0 by dependabot in #5533
  • chore(deps): update Cocoa SDK to v8.58.0 by antonis in #5524
  • chore(deps): update Maestro to v2.1.0 by github-actions in #5521
  • chore(deps): update JavaScript SDK to v10.33.0 by github-actions in #5522
  • Fix: Update changelog-preview workflow reference by lucas-zimerman in #5527
  • ci(release): Switch from action-prepare-release to Craft by BYK in #5519
  • chore(deps): update Wizard to v6.11.0 by github-actions in #5520
  • fix(appstart): Skip span ID check when standalone mode is enabled by antonis in #5493
  • chore(deps): update JavaScript SDK to v10.32.1 by github-actions in #5496
  • chore(deps): bump aws-sdk-s3 from 1.169.0 to 1.208.0 in /samples/react-native by dependabot in #5498
  • chore(deps): bump github/codeql-action from 4.31.8 to 4.31.9 by dependabot in #5497
  • chore(deps): bump aws-sdk-s3 from 1.203.0 to 1.208.0 in /performance-tests by dependabot in #5491
  • chore(deps): bump aws-sdk-s3 from 1.169.0 to 1.208.0 in /samples/react-native-macos by dependabot in #5490
  • chore(deps): update JavaScript SDK to v10.32.0 by github-actions in #5487
  • Fix for missing replay_id from metrics by alwx in #5483
  • chore(deps): update Wizard to v6.10.0 by github-actions in #5474
  • Bump e2e tests to XCode 26 by alwx in #5467
  • chore(deps): update JavaScript SDK to v10.31.0 by github-actions in #5480

🤖 This preview updates automatically when you update the PR.

@antonis antonis added the ready-to-merge Triggers the full CI test suite label Jan 14, 2026
@antonis antonis changed the title fix(ios): Fix duplicate error reporting on iOS with New Architecture fix(ios): Fix duplicate JS error reporting on iOS with New Architecture Jan 14, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 465.66 ms 483.28 ms 17.62 ms
Size 43.75 MiB 48.09 MiB 4.34 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
1c38acd+dirty 398.09 ms 409.18 ms 11.09 ms
b7aa1aa+dirty 324.73 ms 327.76 ms 3.03 ms
785ffb1 471.92 ms 460.96 ms -10.96 ms
fdbea8b+dirty 494.72 ms 529.06 ms 34.34 ms
d1bfbde+dirty 478.88 ms 505.52 ms 26.64 ms
ee69ed5+dirty 409.44 ms 441.30 ms 31.86 ms
0d6e618+dirty 414.00 ms 416.90 ms 2.90 ms
f8d19f8+dirty 422.98 ms 421.98 ms -1.00 ms
8e653ac+dirty 360.28 ms 372.04 ms 11.76 ms
170d5ea+dirty 407.92 ms 422.49 ms 14.57 ms

App size

Revision Plain With Sentry Diff
1c38acd+dirty 43.75 MiB 48.08 MiB 4.33 MiB
b7aa1aa+dirty 17.75 MiB 19.75 MiB 2.00 MiB
785ffb1 17.75 MiB 20.15 MiB 2.41 MiB
fdbea8b+dirty 43.75 MiB 48.05 MiB 4.29 MiB
d1bfbde+dirty 43.75 MiB 47.99 MiB 4.24 MiB
ee69ed5+dirty 43.75 MiB 48.04 MiB 4.29 MiB
0d6e618+dirty 43.75 MiB 47.99 MiB 4.24 MiB
f8d19f8+dirty 43.75 MiB 48.08 MiB 4.33 MiB
8e653ac+dirty 17.75 MiB 19.75 MiB 2.00 MiB
170d5ea+dirty 17.75 MiB 19.70 MiB 1.95 MiB

Previous results on branch: antonis/new-arch-ios-duplication

Startup times

Revision Plain With Sentry Diff
a09b404+dirty 413.02 ms 424.54 ms 11.52 ms

App size

Revision Plain With Sentry Diff
a09b404+dirty 43.75 MiB 48.09 MiB 4.33 MiB

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 371.73 ms 383.30 ms 11.57 ms
Size 43.94 MiB 48.92 MiB 4.98 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
1c38acd+dirty 411.84 ms 470.18 ms 58.34 ms
b7aa1aa+dirty 281.02 ms 317.53 ms 36.51 ms
fdbea8b+dirty 551.94 ms 577.02 ms 25.08 ms
a02e30b+dirty 346.13 ms 381.76 ms 35.62 ms
c7f264b+dirty 356.98 ms 407.46 ms 50.48 ms
d1bfbde+dirty 438.90 ms 494.82 ms 55.92 ms
ee69ed5+dirty 411.19 ms 447.04 ms 35.85 ms
0d6e618+dirty 369.02 ms 387.69 ms 18.67 ms
46bd012+dirty 333.76 ms 359.24 ms 25.48 ms
f8d19f8+dirty 374.17 ms 383.40 ms 9.23 ms

App size

Revision Plain With Sentry Diff
1c38acd+dirty 43.94 MiB 48.91 MiB 4.97 MiB
b7aa1aa+dirty 7.15 MiB 8.46 MiB 1.31 MiB
fdbea8b+dirty 43.94 MiB 48.87 MiB 4.93 MiB
a02e30b+dirty 7.15 MiB 8.42 MiB 1.27 MiB
c7f264b+dirty 7.15 MiB 8.41 MiB 1.26 MiB
d1bfbde+dirty 43.94 MiB 48.82 MiB 4.88 MiB
ee69ed5+dirty 43.94 MiB 48.87 MiB 4.93 MiB
0d6e618+dirty 43.94 MiB 48.82 MiB 4.88 MiB
46bd012+dirty 7.15 MiB 8.42 MiB 1.27 MiB
f8d19f8+dirty 43.94 MiB 48.91 MiB 4.97 MiB

Previous results on branch: antonis/new-arch-ios-duplication

Startup times

Revision Plain With Sentry Diff
a09b404+dirty 468.06 ms 497.11 ms 29.05 ms

App size

Revision Plain With Sentry Diff
a09b404+dirty 43.94 MiB 48.92 MiB 4.98 MiB

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1209.47 ms 1213.06 ms 3.59 ms
Size 3.38 MiB 4.60 MiB 1.22 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
46e3d54+dirty 1213.17 ms 1216.33 ms 3.17 ms
46bd012+dirty 1231.78 ms 1212.30 ms -19.47 ms
eb07ba3+dirty 1214.49 ms 1221.59 ms 7.10 ms
0b64753+dirty 1225.77 ms 1232.98 ms 7.21 ms
6a70a7e+dirty 1231.40 ms 1239.49 ms 8.09 ms
3401245+dirty 1216.70 ms 1241.44 ms 24.74 ms
2104bb9+dirty 1221.63 ms 1214.73 ms -6.91 ms
3e0a5f9+dirty 1233.65 ms 1239.10 ms 5.45 ms
3bd3f0d+dirty 1230.18 ms 1243.41 ms 13.22 ms
955f2eb+dirty 1225.78 ms 1239.27 ms 13.49 ms

App size

Revision Plain With Sentry Diff
46e3d54+dirty 3.41 MiB 4.58 MiB 1.17 MiB
46bd012+dirty 3.19 MiB 4.38 MiB 1.19 MiB
eb07ba3+dirty 3.19 MiB 4.38 MiB 1.19 MiB
0b64753+dirty 3.19 MiB 4.55 MiB 1.36 MiB
6a70a7e+dirty 3.19 MiB 4.54 MiB 1.36 MiB
3401245+dirty 3.41 MiB 4.58 MiB 1.17 MiB
2104bb9+dirty 3.19 MiB 4.57 MiB 1.38 MiB
3e0a5f9+dirty 3.19 MiB 4.38 MiB 1.19 MiB
3bd3f0d+dirty 3.19 MiB 4.55 MiB 1.37 MiB
955f2eb+dirty 3.19 MiB 4.55 MiB 1.36 MiB

Previous results on branch: antonis/new-arch-ios-duplication

Startup times

Revision Plain With Sentry Diff
a09b404+dirty 1210.29 ms 1218.67 ms 8.38 ms

App size

Revision Plain With Sentry Diff
a09b404+dirty 3.44 MiB 4.60 MiB 1.16 MiB

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1197.93 ms 1202.70 ms 4.76 ms
Size 3.38 MiB 4.60 MiB 1.22 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
46e3d54+dirty 1216.40 ms 1210.47 ms -5.93 ms
46bd012+dirty 1220.49 ms 1226.89 ms 6.40 ms
eb07ba3+dirty 1222.46 ms 1220.37 ms -2.08 ms
0b64753+dirty 1232.49 ms 1226.96 ms -5.53 ms
6a70a7e+dirty 1225.82 ms 1230.79 ms 4.98 ms
3401245+dirty 1222.60 ms 1223.06 ms 0.46 ms
2104bb9+dirty 1222.94 ms 1221.16 ms -1.77 ms
3e0a5f9+dirty 1226.94 ms 1230.02 ms 3.08 ms
3bd3f0d+dirty 1231.51 ms 1229.10 ms -2.41 ms
955f2eb+dirty 1235.06 ms 1253.88 ms 18.81 ms

App size

Revision Plain With Sentry Diff
46e3d54+dirty 3.41 MiB 4.58 MiB 1.17 MiB
46bd012+dirty 2.63 MiB 3.81 MiB 1.18 MiB
eb07ba3+dirty 2.63 MiB 3.81 MiB 1.18 MiB
0b64753+dirty 2.63 MiB 3.98 MiB 1.35 MiB
6a70a7e+dirty 2.63 MiB 3.98 MiB 1.34 MiB
3401245+dirty 3.41 MiB 4.58 MiB 1.17 MiB
2104bb9+dirty 2.63 MiB 4.00 MiB 1.37 MiB
3e0a5f9+dirty 2.63 MiB 3.81 MiB 1.18 MiB
3bd3f0d+dirty 2.63 MiB 3.99 MiB 1.35 MiB
955f2eb+dirty 2.63 MiB 3.98 MiB 1.35 MiB

Previous results on branch: antonis/new-arch-ios-duplication

Startup times

Revision Plain With Sentry Diff
a09b404+dirty 1191.00 ms 1202.65 ms 11.65 ms

App size

Revision Plain With Sentry Diff
a09b404+dirty 3.44 MiB 4.60 MiB 1.16 MiB

@antonis antonis marked this pull request as ready for review January 14, 2026 16:31

### Fixes

- Fix duplicate error reporting on iOS with New Architecture ([#5532](https://github.com/getsentry/sentry-react-native/pull/5532))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we specify if this was fixed on a specific version of React Native onwards?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this behavior is part of New Architecture's error handling, so the fix applies to all RN versions with New Architecture enabled (0.69+), not just a specific version

Copy link
Collaborator

@lucas-zimerman lucas-zimerman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than the changelog question, LGTM!

@antonis antonis enabled auto-merge (squash) January 15, 2026 11:49
@antonis antonis merged commit c73f7cc into main Jan 15, 2026
70 of 71 checks passed
@antonis antonis deleted the antonis/new-arch-ios-duplication branch January 15, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Triggers the full CI test suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

iOS Duplicate JS unhandled issues in new architecture

2 participants