Skip to content

feat(core): Expose scope-level attributes API#6009

Open
antonis wants to merge 4 commits intomainfrom
feat/scope-attributes-api
Open

feat(core): Expose scope-level attributes API#6009
antonis wants to merge 4 commits intomainfrom
feat/scope-attributes-api

Conversation

@antonis
Copy link
Copy Markdown
Contributor

@antonis antonis commented Apr 16, 2026

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Implements setAttribute, setAttributes, and removeAttribute on the native bridge, enabling scope-level attributes to be synced from JavaScript to the native Android and iOS SDKs.

Changes:

  • Android: Implemented setAttribute (via scope.setAttribute), setAttributes (via SentryAttributes.fromMap), and added removeAttribute in the module impl + old/new arch modules
  • iOS: Enabled setAttribute (setAttributeValue:forKey:), setAttributes (iterates dictionary), and added removeAttribute (removeAttributeForKey:)
  • JS Bridge: Added removeAttribute to the native spec and wrapper
  • Scope Sync: Enabled setAttribute/setAttributes sync (previously disabled with warnings), added removeAttribute sync. Only primitive values (string, number, boolean) are synced to native.
  • Tests: Uncommented existing attribute tests and added removeAttribute test

💡 Motivation and Context

Android SDK 8.34.0+ and Cocoa SDK 9.10.0 added scope-level attributes APIs. These attributes are automatically included in structured logs and metrics. This is a prerequisite for structured logs support in React Native.

Closes #5764

💚 How did you test it?

  • All 1283 existing tests pass (107 test suites)
  • Uncommented and enabled 7 previously-disabled attribute tests
  • Added new removeAttribute test
  • Build passes, all linters pass (TypeScript, Java, ObjC)

📝 Checklist

🔮 Next steps

Implement setAttribute, setAttributes, and removeAttribute bridging to
native SDKs (Android 8.38.0+ and Cocoa 9.10.0+). These scope attributes
are automatically included in structured logs and metrics.

Closes #5764

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 16, 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).


  • feat(core): Expose scope-level attributes API by antonis in #6009
  • chore(deps): update Android SDK to v8.39.1 by github-actions in #6010
  • chore(deps): update JavaScript SDK to v10.49.0 by github-actions in #6011
  • ci: Integrate Warden for AI-powered PR code review by antonis in #6003
  • chore(lint): Fixes lint issue on main by antonis in #6013
  • feat(expo): Warn when prebuilt native projects are missing Sentry config by alwx in #5984

🤖 This preview updates automatically when you update the PR.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 16, 2026

Messages
📖 Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 630185c

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@antonis
Copy link
Copy Markdown
Contributor Author

antonis commented Apr 16, 2026

@cursor review

@antonis
Copy link
Copy Markdown
Contributor Author

antonis commented Apr 16, 2026

@sentry review

Comment thread packages/core/ios/RNSentry.mm
Comment thread CHANGELOG.md Outdated
Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit b31db62. Configure here.

@antonis antonis marked this pull request as ready for review April 16, 2026 15:01
Comment thread packages/core/ios/RNSentry.mm
@antonis antonis added the ready-to-merge Triggers the full CI test suite label Apr 17, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 409.32 ms 429.78 ms 20.46 ms
Size 43.75 MiB 48.13 MiB 4.38 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
7ac3378+dirty 404.78 ms 439.84 ms 35.06 ms
4953e94+dirty 442.02 ms 456.52 ms 14.50 ms
3ce5254+dirty 410.57 ms 448.48 ms 37.91 ms
0d9949d+dirty 403.57 ms 437.00 ms 33.43 ms
5c1e987+dirty 423.52 ms 471.64 ms 48.12 ms
2c735cc+dirty 414.09 ms 438.47 ms 24.38 ms
a50b33d+dirty 500.81 ms 532.11 ms 31.30 ms
04207c4+dirty 459.19 ms 518.54 ms 59.35 ms
3817909+dirty 406.67 ms 416.58 ms 9.91 ms
df5d108+dirty 527.06 ms 603.58 ms 76.52 ms

App size

Revision Plain With Sentry Diff
7ac3378+dirty 43.75 MiB 48.13 MiB 4.37 MiB
4953e94+dirty 43.75 MiB 48.08 MiB 4.33 MiB
3ce5254+dirty 43.75 MiB 48.12 MiB 4.37 MiB
0d9949d+dirty 43.75 MiB 48.13 MiB 4.37 MiB
5c1e987+dirty 43.75 MiB 48.08 MiB 4.33 MiB
2c735cc+dirty 43.75 MiB 48.08 MiB 4.33 MiB
a50b33d+dirty 43.75 MiB 48.08 MiB 4.33 MiB
04207c4+dirty 43.75 MiB 48.12 MiB 4.37 MiB
3817909+dirty 43.75 MiB 48.08 MiB 4.33 MiB
df5d108+dirty 43.75 MiB 48.08 MiB 4.33 MiB

@sentry
Copy link
Copy Markdown

sentry bot commented Apr 17, 2026

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
Sentry RN io.sentry.reactnative.sample 8.8.0 (83) Release

⚙️ sentry-react-native Build Distribution Settings

@github-actions
Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1209.06 ms 1213.98 ms 4.92 ms
Size 3.38 MiB 4.76 MiB 1.38 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
3817909+dirty 1183.90 ms 1187.50 ms 3.60 ms
3ce5254+dirty 1219.93 ms 1221.90 ms 1.96 ms
04207c4+dirty 1191.27 ms 1189.78 ms -1.48 ms
7ac3378+dirty 1213.37 ms 1218.15 ms 4.78 ms
5c1e987+dirty 1204.30 ms 1222.15 ms 17.85 ms
0d9949d+dirty 1211.38 ms 1219.67 ms 8.29 ms
4953e94+dirty 1212.06 ms 1214.83 ms 2.77 ms
df5d108+dirty 1225.90 ms 1220.14 ms -5.76 ms
a50b33d+dirty 1197.74 ms 1197.17 ms -0.57 ms
3d377b5+dirty 1218.48 ms 1219.51 ms 1.03 ms

App size

Revision Plain With Sentry Diff
3817909+dirty 3.38 MiB 4.73 MiB 1.35 MiB
3ce5254+dirty 3.38 MiB 4.76 MiB 1.38 MiB
04207c4+dirty 3.38 MiB 4.76 MiB 1.38 MiB
7ac3378+dirty 3.38 MiB 4.76 MiB 1.38 MiB
5c1e987+dirty 3.38 MiB 4.73 MiB 1.35 MiB
0d9949d+dirty 3.38 MiB 4.76 MiB 1.38 MiB
4953e94+dirty 3.38 MiB 4.73 MiB 1.35 MiB
df5d108+dirty 3.38 MiB 4.73 MiB 1.35 MiB
a50b33d+dirty 3.38 MiB 4.73 MiB 1.35 MiB
3d377b5+dirty 3.38 MiB 4.76 MiB 1.38 MiB

@github-actions
Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1225.49 ms 1227.39 ms 1.90 ms
Size 3.38 MiB 4.76 MiB 1.38 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
3817909+dirty 1210.76 ms 1215.64 ms 4.89 ms
3ce5254+dirty 1217.70 ms 1224.69 ms 6.99 ms
04207c4+dirty 1228.55 ms 1226.04 ms -2.51 ms
7ac3378+dirty 1202.35 ms 1198.31 ms -4.04 ms
5c1e987+dirty 1208.43 ms 1220.72 ms 12.29 ms
0d9949d+dirty 1203.94 ms 1202.27 ms -1.67 ms
4953e94+dirty 1217.41 ms 1223.53 ms 6.12 ms
df5d108+dirty 1207.34 ms 1210.50 ms 3.16 ms
a50b33d+dirty 1207.11 ms 1212.10 ms 5.00 ms
3d377b5+dirty 1201.55 ms 1201.80 ms 0.25 ms

App size

Revision Plain With Sentry Diff
3817909+dirty 3.38 MiB 4.73 MiB 1.35 MiB
3ce5254+dirty 3.38 MiB 4.76 MiB 1.38 MiB
04207c4+dirty 3.38 MiB 4.76 MiB 1.38 MiB
7ac3378+dirty 3.38 MiB 4.76 MiB 1.38 MiB
5c1e987+dirty 3.38 MiB 4.73 MiB 1.35 MiB
0d9949d+dirty 3.38 MiB 4.76 MiB 1.38 MiB
4953e94+dirty 3.38 MiB 4.73 MiB 1.35 MiB
df5d108+dirty 3.38 MiB 4.73 MiB 1.35 MiB
a50b33d+dirty 3.38 MiB 4.73 MiB 1.35 MiB
3d377b5+dirty 3.38 MiB 4.76 MiB 1.38 MiB

@github-actions
Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 476.62 ms 500.64 ms 24.02 ms
Size 43.94 MiB 48.99 MiB 5.05 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
7ac3378+dirty 410.67 ms 442.60 ms 31.92 ms
4953e94+dirty 398.80 ms 431.81 ms 33.01 ms
3ce5254+dirty 373.90 ms 427.84 ms 53.94 ms
0d9949d+dirty 414.88 ms 428.68 ms 13.81 ms
5c1e987+dirty 444.71 ms 475.13 ms 30.42 ms
2c735cc+dirty 435.20 ms 459.48 ms 24.28 ms
a50b33d+dirty 353.21 ms 398.48 ms 45.27 ms
04207c4+dirty 395.40 ms 456.55 ms 61.15 ms
3817909+dirty 357.52 ms 391.52 ms 34.00 ms
df5d108+dirty 434.82 ms 447.39 ms 12.57 ms

App size

Revision Plain With Sentry Diff
7ac3378+dirty 43.94 MiB 48.99 MiB 5.05 MiB
4953e94+dirty 43.94 MiB 48.94 MiB 5.00 MiB
3ce5254+dirty 43.94 MiB 48.98 MiB 5.04 MiB
0d9949d+dirty 43.94 MiB 48.99 MiB 5.05 MiB
5c1e987+dirty 43.94 MiB 48.94 MiB 5.00 MiB
2c735cc+dirty 43.94 MiB 48.94 MiB 5.00 MiB
a50b33d+dirty 43.94 MiB 48.94 MiB 5.00 MiB
04207c4+dirty 43.94 MiB 48.98 MiB 5.04 MiB
3817909+dirty 43.94 MiB 48.94 MiB 5.00 MiB
df5d108+dirty 43.94 MiB 48.94 MiB 5.00 MiB

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.

Expose scope-level attributes API

1 participant