feat(core): Enable autoInjectSentryLabel by default in Metro config - #6141

Merged
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label
May 13, 2026
Merged

feat(core): Enable autoInjectSentryLabel by default in Metro config#6141
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label

Conversation

@antonis

@antonisantonis commented May 12, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Passes autoInjectSentryLabel: true to @sentry/babel-plugin-component-annotate by default when annotateReactComponents is enabled in the Metro config. This enables automatic injection of sentry-label props from static text content at build time.

The Babel plugin (shipped in @sentry/babel-plugin-component-annotate@5.3.0, getsentry/sentry-javascript-bundler-plugins#925) extracts static text from children of touchable components and injects it as a sentry-label prop, improving touch breadcrumb and user interaction span labeling without requiring manual annotation.

Users can opt out:

withSentryConfig(config,{annotateReactComponents: {autoInjectSentryLabel: false,},});

💡 Motivation and Context

Closes#6109. Part of the "Making breadcrumbs data more useful on React Native" project.

Currently, touch breadcrumbs show component names like "TouchableOpacity" unless developers manually add sentry-label, accessibilityLabel, or testID props. With this change, buttons like <Pressable><Text>Save workout</Text></Pressable> automatically get labeled "Save workout" in breadcrumbs and transaction names.

💚 How did you test it?

  • yarn build — compiles without errors
  • npx jest --config jest.config.tools.js test/tools/sentryBabelTransformer.test.ts — 8/8 pass
  • npx jest --config jest.config.tools.js test/tools/metroconfig.test.ts — 142/142 pass
  • yarn lint — no violations
  • yarn api-report — API report up to date
  • Added test for autoInjectSentryLabel: false override
  • Updated existing tests to verify autoInjectSentryLabel: true is passed by default

📝 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

🤖 Generated with Claude Code

Pass `autoInjectSentryLabel: true` to the babel-plugin-component-annotate
plugin by default when `annotateReactComponents` is enabled. This enables
automatic injection of `sentry-label` props from static text content at
build time, improving touch breadcrumb and user interaction span labeling.
Users can opt out by setting `autoInjectSentryLabel: false` in the
`annotateReactComponents` config option.
Closes#6109
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor

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): Enable autoInjectSentryLabel by default in Metro config by antonis in #6141
  • feat(core): Respect Mask boundaries when reading sentry-label by antonis in #6142
  • fix(android): Handle boolean values in JSON options converter by antonis in #6130
  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination; a multi-signal TTID/TTFD system by alwx in #6090
  • chore(deps): update Bundler Plugins to v5.3.0 by github-actions in #6138
  • chore: Merge 8.11.1 back to main by antonis in #6135
  • chore: Update warning regarding iOS crash in sentry-cocoa 9.12.0 by antonis in #6136
  • chore(deps): update CLI to v3.4.2 by github-actions in #6129
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.2 to 2.26.3 by dependabot in #6126
  • chore(deps): bump getsentry/craft from 2.26.2 to 2.26.3 by dependabot in #6127
  • chore(deps): bump github/codeql-action from 4.35.3 to 4.35.4 by dependabot in #6128
  • feat(core): Extract text from children of touched components for breadcrumb labels by antonis in #6106
  • chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.25.0 to 7.29.4 by dependabot in #6124
  • chore(deps): bump fast-uri from 3.0.1 to 3.1.2 by dependabot in #6121
  • chore(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by dependabot in #6120
  • chore(deps): bump socks to ^2.8.8 to fix ip-address vulnerability by antonis in #6117
  • chore(deps): bump uuid to ^13.0.1 to fix buffer bounds check vulnerability by antonis in #6118
  • test(replay): Add passthrough tests for device-state replay breadcrumbs by antonis in #6115
  • chore(deps): update JavaScript SDK to v10.52.0 by github-actions in #6108
  • chore(deps): bump basic-ftp from 5.3.0 to 5.3.1 by dependabot in #6111

🤖 This preview updates automatically when you update the PR.

@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor
Fails
🚫Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 558f563

antonisand others added 2 commits May 12, 2026 15:31
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown

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 c481082. Configure here.

@antonis
antonis marked this pull request as ready for review May 12, 2026 13:44

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGMT!

@antonis
antonis enabled auto-merge (squash) May 13, 2026 08:34
@antonis
antonis merged commit 19250ad into mainMay 13, 2026
51 of 64 checks passed
@antonis
antonis deleted the antonis/issue-6109-auto-inject-sentry-label branch May 13, 2026 08:45
antonis added a commit to getsentry/sentry-docs that referenced this pull request May 21, 2026
)
## DESCRIBE YOUR PR
Documents new touch breadcrumb label features in the React Native SDK
(v8.12.0):
- **Automatic `sentry-label` injection** — build-time label injection
from static text via the Babel plugin, enabled by default with
`annotateReactComponents`
([sentry-react-native#6141](getsentry/sentry-react-native#6141))
- **Runtime text extraction from children** — `extractTextFromChildren`
prop extracts text from child fiber nodes as a label fallback
([sentry-react-native#6106](getsentry/sentry-react-native#6106))
- **Session Replay masking interaction** — `sentry-label` and text
extraction respect `maskAllText` and `Sentry.Mask` boundaries
([sentry-react-native#6142](getsentry/sentry-react-native#6142))
- **Updated label priority chain** — now 6 steps including text
extraction and masking notes
### Files changed
- `docs/platforms/react-native/configuration/touchevents.mdx` — new h2
sections for automatic label injection, text extraction, masking
interaction; updated label priority; added `extractTextFromChildren` to
options
- `docs/platforms/react-native/integrations/component-names.mdx` — new
section for `autoInjectSentryLabel` with disable examples
Closesgetsentry/sentry-react-native#6113
## IS YOUR CHANGE URGENT?
- [ ] Urgent deadline (GA date, etc.)
- [ ] Other deadline
- [x] None: Not urgent, can wait up to 1 week+
⚠️ Should be merged after the above implementation is shipped in 8.12.0
## PRE-MERGE CHECKLIST
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@antonisantonis mentioned this pull request Jun 3, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable autoInjectSentryLabel by default in React Native Metro config

2 participants

@antonis@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(core): Enable autoInjectSentryLabel by default in Metro config - #6141

Merged
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label
May 13, 2026
Merged

feat(core): Enable autoInjectSentryLabel by default in Metro config#6141
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label

Conversation

@antonis

@antonisantonis commented May 12, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Passes autoInjectSentryLabel: true to @sentry/babel-plugin-component-annotate by default when annotateReactComponents is enabled in the Metro config. This enables automatic injection of sentry-label props from static text content at build time.

The Babel plugin (shipped in @sentry/babel-plugin-component-annotate@5.3.0, getsentry/sentry-javascript-bundler-plugins#925) extracts static text from children of touchable components and injects it as a sentry-label prop, improving touch breadcrumb and user interaction span labeling without requiring manual annotation.

Users can opt out:

withSentryConfig(config,{annotateReactComponents: {autoInjectSentryLabel: false,},});

💡 Motivation and Context

Closes#6109. Part of the "Making breadcrumbs data more useful on React Native" project.

Currently, touch breadcrumbs show component names like "TouchableOpacity" unless developers manually add sentry-label, accessibilityLabel, or testID props. With this change, buttons like <Pressable><Text>Save workout</Text></Pressable> automatically get labeled "Save workout" in breadcrumbs and transaction names.

💚 How did you test it?

  • yarn build — compiles without errors
  • npx jest --config jest.config.tools.js test/tools/sentryBabelTransformer.test.ts — 8/8 pass
  • npx jest --config jest.config.tools.js test/tools/metroconfig.test.ts — 142/142 pass
  • yarn lint — no violations
  • yarn api-report — API report up to date
  • Added test for autoInjectSentryLabel: false override
  • Updated existing tests to verify autoInjectSentryLabel: true is passed by default

📝 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

🤖 Generated with Claude Code

Pass `autoInjectSentryLabel: true` to the babel-plugin-component-annotate
plugin by default when `annotateReactComponents` is enabled. This enables
automatic injection of `sentry-label` props from static text content at
build time, improving touch breadcrumb and user interaction span labeling.
Users can opt out by setting `autoInjectSentryLabel: false` in the
`annotateReactComponents` config option.
Closes#6109
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor

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): Enable autoInjectSentryLabel by default in Metro config by antonis in #6141
  • feat(core): Respect Mask boundaries when reading sentry-label by antonis in #6142
  • fix(android): Handle boolean values in JSON options converter by antonis in #6130
  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination; a multi-signal TTID/TTFD system by alwx in #6090
  • chore(deps): update Bundler Plugins to v5.3.0 by github-actions in #6138
  • chore: Merge 8.11.1 back to main by antonis in #6135
  • chore: Update warning regarding iOS crash in sentry-cocoa 9.12.0 by antonis in #6136
  • chore(deps): update CLI to v3.4.2 by github-actions in #6129
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.2 to 2.26.3 by dependabot in #6126
  • chore(deps): bump getsentry/craft from 2.26.2 to 2.26.3 by dependabot in #6127
  • chore(deps): bump github/codeql-action from 4.35.3 to 4.35.4 by dependabot in #6128
  • feat(core): Extract text from children of touched components for breadcrumb labels by antonis in #6106
  • chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.25.0 to 7.29.4 by dependabot in #6124
  • chore(deps): bump fast-uri from 3.0.1 to 3.1.2 by dependabot in #6121
  • chore(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by dependabot in #6120
  • chore(deps): bump socks to ^2.8.8 to fix ip-address vulnerability by antonis in #6117
  • chore(deps): bump uuid to ^13.0.1 to fix buffer bounds check vulnerability by antonis in #6118
  • test(replay): Add passthrough tests for device-state replay breadcrumbs by antonis in #6115
  • chore(deps): update JavaScript SDK to v10.52.0 by github-actions in #6108
  • chore(deps): bump basic-ftp from 5.3.0 to 5.3.1 by dependabot in #6111

🤖 This preview updates automatically when you update the PR.

@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor
Fails
🚫Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 558f563

antonisand others added 2 commits May 12, 2026 15:31
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown

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 c481082. Configure here.

@antonis
antonis marked this pull request as ready for review May 12, 2026 13:44

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGMT!

@antonis
antonis enabled auto-merge (squash) May 13, 2026 08:34
@antonis
antonis merged commit 19250ad into mainMay 13, 2026
51 of 64 checks passed
@antonis
antonis deleted the antonis/issue-6109-auto-inject-sentry-label branch May 13, 2026 08:45
antonis added a commit to getsentry/sentry-docs that referenced this pull request May 21, 2026
)
## DESCRIBE YOUR PR
Documents new touch breadcrumb label features in the React Native SDK
(v8.12.0):
- **Automatic `sentry-label` injection** — build-time label injection
from static text via the Babel plugin, enabled by default with
`annotateReactComponents`
([sentry-react-native#6141](getsentry/sentry-react-native#6141))
- **Runtime text extraction from children** — `extractTextFromChildren`
prop extracts text from child fiber nodes as a label fallback
([sentry-react-native#6106](getsentry/sentry-react-native#6106))
- **Session Replay masking interaction** — `sentry-label` and text
extraction respect `maskAllText` and `Sentry.Mask` boundaries
([sentry-react-native#6142](getsentry/sentry-react-native#6142))
- **Updated label priority chain** — now 6 steps including text
extraction and masking notes
### Files changed
- `docs/platforms/react-native/configuration/touchevents.mdx` — new h2
sections for automatic label injection, text extraction, masking
interaction; updated label priority; added `extractTextFromChildren` to
options
- `docs/platforms/react-native/integrations/component-names.mdx` — new
section for `autoInjectSentryLabel` with disable examples
Closesgetsentry/sentry-react-native#6113
## IS YOUR CHANGE URGENT?
- [ ] Urgent deadline (GA date, etc.)
- [ ] Other deadline
- [x] None: Not urgent, can wait up to 1 week+
⚠️ Should be merged after the above implementation is shipped in 8.12.0
## PRE-MERGE CHECKLIST
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@antonisantonis mentioned this pull request Jun 3, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable autoInjectSentryLabel by default in React Native Metro config

2 participants

@antonis@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(core): Enable autoInjectSentryLabel by default in Metro config - #6141

Merged
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label
May 13, 2026
Merged

feat(core): Enable autoInjectSentryLabel by default in Metro config#6141
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label

Conversation

@antonis

@antonisantonis commented May 12, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Passes autoInjectSentryLabel: true to @sentry/babel-plugin-component-annotate by default when annotateReactComponents is enabled in the Metro config. This enables automatic injection of sentry-label props from static text content at build time.

The Babel plugin (shipped in @sentry/babel-plugin-component-annotate@5.3.0, getsentry/sentry-javascript-bundler-plugins#925) extracts static text from children of touchable components and injects it as a sentry-label prop, improving touch breadcrumb and user interaction span labeling without requiring manual annotation.

Users can opt out:

withSentryConfig(config,{annotateReactComponents: {autoInjectSentryLabel: false,},});

💡 Motivation and Context

Closes#6109. Part of the "Making breadcrumbs data more useful on React Native" project.

Currently, touch breadcrumbs show component names like "TouchableOpacity" unless developers manually add sentry-label, accessibilityLabel, or testID props. With this change, buttons like <Pressable><Text>Save workout</Text></Pressable> automatically get labeled "Save workout" in breadcrumbs and transaction names.

💚 How did you test it?

  • yarn build — compiles without errors
  • npx jest --config jest.config.tools.js test/tools/sentryBabelTransformer.test.ts — 8/8 pass
  • npx jest --config jest.config.tools.js test/tools/metroconfig.test.ts — 142/142 pass
  • yarn lint — no violations
  • yarn api-report — API report up to date
  • Added test for autoInjectSentryLabel: false override
  • Updated existing tests to verify autoInjectSentryLabel: true is passed by default

📝 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

🤖 Generated with Claude Code

Pass `autoInjectSentryLabel: true` to the babel-plugin-component-annotate
plugin by default when `annotateReactComponents` is enabled. This enables
automatic injection of `sentry-label` props from static text content at
build time, improving touch breadcrumb and user interaction span labeling.
Users can opt out by setting `autoInjectSentryLabel: false` in the
`annotateReactComponents` config option.
Closes#6109
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor

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): Enable autoInjectSentryLabel by default in Metro config by antonis in #6141
  • feat(core): Respect Mask boundaries when reading sentry-label by antonis in #6142
  • fix(android): Handle boolean values in JSON options converter by antonis in #6130
  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination; a multi-signal TTID/TTFD system by alwx in #6090
  • chore(deps): update Bundler Plugins to v5.3.0 by github-actions in #6138
  • chore: Merge 8.11.1 back to main by antonis in #6135
  • chore: Update warning regarding iOS crash in sentry-cocoa 9.12.0 by antonis in #6136
  • chore(deps): update CLI to v3.4.2 by github-actions in #6129
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.2 to 2.26.3 by dependabot in #6126
  • chore(deps): bump getsentry/craft from 2.26.2 to 2.26.3 by dependabot in #6127
  • chore(deps): bump github/codeql-action from 4.35.3 to 4.35.4 by dependabot in #6128
  • feat(core): Extract text from children of touched components for breadcrumb labels by antonis in #6106
  • chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.25.0 to 7.29.4 by dependabot in #6124
  • chore(deps): bump fast-uri from 3.0.1 to 3.1.2 by dependabot in #6121
  • chore(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by dependabot in #6120
  • chore(deps): bump socks to ^2.8.8 to fix ip-address vulnerability by antonis in #6117
  • chore(deps): bump uuid to ^13.0.1 to fix buffer bounds check vulnerability by antonis in #6118
  • test(replay): Add passthrough tests for device-state replay breadcrumbs by antonis in #6115
  • chore(deps): update JavaScript SDK to v10.52.0 by github-actions in #6108
  • chore(deps): bump basic-ftp from 5.3.0 to 5.3.1 by dependabot in #6111

🤖 This preview updates automatically when you update the PR.

@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor
Fails
🚫Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 558f563

antonisand others added 2 commits May 12, 2026 15:31
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown

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 c481082. Configure here.

@antonis
antonis marked this pull request as ready for review May 12, 2026 13:44

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGMT!

@antonis
antonis enabled auto-merge (squash) May 13, 2026 08:34
@antonis
antonis merged commit 19250ad into mainMay 13, 2026
51 of 64 checks passed
@antonis
antonis deleted the antonis/issue-6109-auto-inject-sentry-label branch May 13, 2026 08:45
antonis added a commit to getsentry/sentry-docs that referenced this pull request May 21, 2026
)
## DESCRIBE YOUR PR
Documents new touch breadcrumb label features in the React Native SDK
(v8.12.0):
- **Automatic `sentry-label` injection** — build-time label injection
from static text via the Babel plugin, enabled by default with
`annotateReactComponents`
([sentry-react-native#6141](getsentry/sentry-react-native#6141))
- **Runtime text extraction from children** — `extractTextFromChildren`
prop extracts text from child fiber nodes as a label fallback
([sentry-react-native#6106](getsentry/sentry-react-native#6106))
- **Session Replay masking interaction** — `sentry-label` and text
extraction respect `maskAllText` and `Sentry.Mask` boundaries
([sentry-react-native#6142](getsentry/sentry-react-native#6142))
- **Updated label priority chain** — now 6 steps including text
extraction and masking notes
### Files changed
- `docs/platforms/react-native/configuration/touchevents.mdx` — new h2
sections for automatic label injection, text extraction, masking
interaction; updated label priority; added `extractTextFromChildren` to
options
- `docs/platforms/react-native/integrations/component-names.mdx` — new
section for `autoInjectSentryLabel` with disable examples
Closesgetsentry/sentry-react-native#6113
## IS YOUR CHANGE URGENT?
- [ ] Urgent deadline (GA date, etc.)
- [ ] Other deadline
- [x] None: Not urgent, can wait up to 1 week+
⚠️ Should be merged after the above implementation is shipped in 8.12.0
## PRE-MERGE CHECKLIST
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@antonisantonis mentioned this pull request Jun 3, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable autoInjectSentryLabel by default in React Native Metro config

2 participants

@antonis@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(core): Enable autoInjectSentryLabel by default in Metro config - #6141

Merged
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label
May 13, 2026
Merged

feat(core): Enable autoInjectSentryLabel by default in Metro config#6141
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label

Conversation

@antonis

@antonisantonis commented May 12, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Passes autoInjectSentryLabel: true to @sentry/babel-plugin-component-annotate by default when annotateReactComponents is enabled in the Metro config. This enables automatic injection of sentry-label props from static text content at build time.

The Babel plugin (shipped in @sentry/babel-plugin-component-annotate@5.3.0, getsentry/sentry-javascript-bundler-plugins#925) extracts static text from children of touchable components and injects it as a sentry-label prop, improving touch breadcrumb and user interaction span labeling without requiring manual annotation.

Users can opt out:

withSentryConfig(config,{annotateReactComponents: {autoInjectSentryLabel: false,},});

💡 Motivation and Context

Closes#6109. Part of the "Making breadcrumbs data more useful on React Native" project.

Currently, touch breadcrumbs show component names like "TouchableOpacity" unless developers manually add sentry-label, accessibilityLabel, or testID props. With this change, buttons like <Pressable><Text>Save workout</Text></Pressable> automatically get labeled "Save workout" in breadcrumbs and transaction names.

💚 How did you test it?

  • yarn build — compiles without errors
  • npx jest --config jest.config.tools.js test/tools/sentryBabelTransformer.test.ts — 8/8 pass
  • npx jest --config jest.config.tools.js test/tools/metroconfig.test.ts — 142/142 pass
  • yarn lint — no violations
  • yarn api-report — API report up to date
  • Added test for autoInjectSentryLabel: false override
  • Updated existing tests to verify autoInjectSentryLabel: true is passed by default

📝 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

🤖 Generated with Claude Code

Pass `autoInjectSentryLabel: true` to the babel-plugin-component-annotate
plugin by default when `annotateReactComponents` is enabled. This enables
automatic injection of `sentry-label` props from static text content at
build time, improving touch breadcrumb and user interaction span labeling.
Users can opt out by setting `autoInjectSentryLabel: false` in the
`annotateReactComponents` config option.
Closes#6109
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor

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): Enable autoInjectSentryLabel by default in Metro config by antonis in #6141
  • feat(core): Respect Mask boundaries when reading sentry-label by antonis in #6142
  • fix(android): Handle boolean values in JSON options converter by antonis in #6130
  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination; a multi-signal TTID/TTFD system by alwx in #6090
  • chore(deps): update Bundler Plugins to v5.3.0 by github-actions in #6138
  • chore: Merge 8.11.1 back to main by antonis in #6135
  • chore: Update warning regarding iOS crash in sentry-cocoa 9.12.0 by antonis in #6136
  • chore(deps): update CLI to v3.4.2 by github-actions in #6129
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.2 to 2.26.3 by dependabot in #6126
  • chore(deps): bump getsentry/craft from 2.26.2 to 2.26.3 by dependabot in #6127
  • chore(deps): bump github/codeql-action from 4.35.3 to 4.35.4 by dependabot in #6128
  • feat(core): Extract text from children of touched components for breadcrumb labels by antonis in #6106
  • chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.25.0 to 7.29.4 by dependabot in #6124
  • chore(deps): bump fast-uri from 3.0.1 to 3.1.2 by dependabot in #6121
  • chore(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by dependabot in #6120
  • chore(deps): bump socks to ^2.8.8 to fix ip-address vulnerability by antonis in #6117
  • chore(deps): bump uuid to ^13.0.1 to fix buffer bounds check vulnerability by antonis in #6118
  • test(replay): Add passthrough tests for device-state replay breadcrumbs by antonis in #6115
  • chore(deps): update JavaScript SDK to v10.52.0 by github-actions in #6108
  • chore(deps): bump basic-ftp from 5.3.0 to 5.3.1 by dependabot in #6111

🤖 This preview updates automatically when you update the PR.

@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor
Fails
🚫Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 558f563

antonisand others added 2 commits May 12, 2026 15:31
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown

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 c481082. Configure here.

@antonis
antonis marked this pull request as ready for review May 12, 2026 13:44

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGMT!

@antonis
antonis enabled auto-merge (squash) May 13, 2026 08:34
@antonis
antonis merged commit 19250ad into mainMay 13, 2026
51 of 64 checks passed
@antonis
antonis deleted the antonis/issue-6109-auto-inject-sentry-label branch May 13, 2026 08:45
antonis added a commit to getsentry/sentry-docs that referenced this pull request May 21, 2026
)
## DESCRIBE YOUR PR
Documents new touch breadcrumb label features in the React Native SDK
(v8.12.0):
- **Automatic `sentry-label` injection** — build-time label injection
from static text via the Babel plugin, enabled by default with
`annotateReactComponents`
([sentry-react-native#6141](getsentry/sentry-react-native#6141))
- **Runtime text extraction from children** — `extractTextFromChildren`
prop extracts text from child fiber nodes as a label fallback
([sentry-react-native#6106](getsentry/sentry-react-native#6106))
- **Session Replay masking interaction** — `sentry-label` and text
extraction respect `maskAllText` and `Sentry.Mask` boundaries
([sentry-react-native#6142](getsentry/sentry-react-native#6142))
- **Updated label priority chain** — now 6 steps including text
extraction and masking notes
### Files changed
- `docs/platforms/react-native/configuration/touchevents.mdx` — new h2
sections for automatic label injection, text extraction, masking
interaction; updated label priority; added `extractTextFromChildren` to
options
- `docs/platforms/react-native/integrations/component-names.mdx` — new
section for `autoInjectSentryLabel` with disable examples
Closesgetsentry/sentry-react-native#6113
## IS YOUR CHANGE URGENT?
- [ ] Urgent deadline (GA date, etc.)
- [ ] Other deadline
- [x] None: Not urgent, can wait up to 1 week+
⚠️ Should be merged after the above implementation is shipped in 8.12.0
## PRE-MERGE CHECKLIST
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@antonisantonis mentioned this pull request Jun 3, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable autoInjectSentryLabel by default in React Native Metro config

2 participants

@antonis@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(core): Enable autoInjectSentryLabel by default in Metro config - #6141

Merged
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label
May 13, 2026
Merged

feat(core): Enable autoInjectSentryLabel by default in Metro config#6141
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label

Conversation

@antonis

@antonisantonis commented May 12, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Passes autoInjectSentryLabel: true to @sentry/babel-plugin-component-annotate by default when annotateReactComponents is enabled in the Metro config. This enables automatic injection of sentry-label props from static text content at build time.

The Babel plugin (shipped in @sentry/babel-plugin-component-annotate@5.3.0, getsentry/sentry-javascript-bundler-plugins#925) extracts static text from children of touchable components and injects it as a sentry-label prop, improving touch breadcrumb and user interaction span labeling without requiring manual annotation.

Users can opt out:

withSentryConfig(config,{annotateReactComponents: {autoInjectSentryLabel: false,},});

💡 Motivation and Context

Closes#6109. Part of the "Making breadcrumbs data more useful on React Native" project.

Currently, touch breadcrumbs show component names like "TouchableOpacity" unless developers manually add sentry-label, accessibilityLabel, or testID props. With this change, buttons like <Pressable><Text>Save workout</Text></Pressable> automatically get labeled "Save workout" in breadcrumbs and transaction names.

💚 How did you test it?

  • yarn build — compiles without errors
  • npx jest --config jest.config.tools.js test/tools/sentryBabelTransformer.test.ts — 8/8 pass
  • npx jest --config jest.config.tools.js test/tools/metroconfig.test.ts — 142/142 pass
  • yarn lint — no violations
  • yarn api-report — API report up to date
  • Added test for autoInjectSentryLabel: false override
  • Updated existing tests to verify autoInjectSentryLabel: true is passed by default

📝 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

🤖 Generated with Claude Code

Pass `autoInjectSentryLabel: true` to the babel-plugin-component-annotate
plugin by default when `annotateReactComponents` is enabled. This enables
automatic injection of `sentry-label` props from static text content at
build time, improving touch breadcrumb and user interaction span labeling.
Users can opt out by setting `autoInjectSentryLabel: false` in the
`annotateReactComponents` config option.
Closes#6109
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor

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): Enable autoInjectSentryLabel by default in Metro config by antonis in #6141
  • feat(core): Respect Mask boundaries when reading sentry-label by antonis in #6142
  • fix(android): Handle boolean values in JSON options converter by antonis in #6130
  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination; a multi-signal TTID/TTFD system by alwx in #6090
  • chore(deps): update Bundler Plugins to v5.3.0 by github-actions in #6138
  • chore: Merge 8.11.1 back to main by antonis in #6135
  • chore: Update warning regarding iOS crash in sentry-cocoa 9.12.0 by antonis in #6136
  • chore(deps): update CLI to v3.4.2 by github-actions in #6129
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.2 to 2.26.3 by dependabot in #6126
  • chore(deps): bump getsentry/craft from 2.26.2 to 2.26.3 by dependabot in #6127
  • chore(deps): bump github/codeql-action from 4.35.3 to 4.35.4 by dependabot in #6128
  • feat(core): Extract text from children of touched components for breadcrumb labels by antonis in #6106
  • chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.25.0 to 7.29.4 by dependabot in #6124
  • chore(deps): bump fast-uri from 3.0.1 to 3.1.2 by dependabot in #6121
  • chore(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by dependabot in #6120
  • chore(deps): bump socks to ^2.8.8 to fix ip-address vulnerability by antonis in #6117
  • chore(deps): bump uuid to ^13.0.1 to fix buffer bounds check vulnerability by antonis in #6118
  • test(replay): Add passthrough tests for device-state replay breadcrumbs by antonis in #6115
  • chore(deps): update JavaScript SDK to v10.52.0 by github-actions in #6108
  • chore(deps): bump basic-ftp from 5.3.0 to 5.3.1 by dependabot in #6111

🤖 This preview updates automatically when you update the PR.

@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor
Fails
🚫Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 558f563

antonisand others added 2 commits May 12, 2026 15:31
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown

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 c481082. Configure here.

@antonis
antonis marked this pull request as ready for review May 12, 2026 13:44

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGMT!

@antonis
antonis enabled auto-merge (squash) May 13, 2026 08:34
@antonis
antonis merged commit 19250ad into mainMay 13, 2026
51 of 64 checks passed
@antonis
antonis deleted the antonis/issue-6109-auto-inject-sentry-label branch May 13, 2026 08:45
antonis added a commit to getsentry/sentry-docs that referenced this pull request May 21, 2026
)
## DESCRIBE YOUR PR
Documents new touch breadcrumb label features in the React Native SDK
(v8.12.0):
- **Automatic `sentry-label` injection** — build-time label injection
from static text via the Babel plugin, enabled by default with
`annotateReactComponents`
([sentry-react-native#6141](getsentry/sentry-react-native#6141))
- **Runtime text extraction from children** — `extractTextFromChildren`
prop extracts text from child fiber nodes as a label fallback
([sentry-react-native#6106](getsentry/sentry-react-native#6106))
- **Session Replay masking interaction** — `sentry-label` and text
extraction respect `maskAllText` and `Sentry.Mask` boundaries
([sentry-react-native#6142](getsentry/sentry-react-native#6142))
- **Updated label priority chain** — now 6 steps including text
extraction and masking notes
### Files changed
- `docs/platforms/react-native/configuration/touchevents.mdx` — new h2
sections for automatic label injection, text extraction, masking
interaction; updated label priority; added `extractTextFromChildren` to
options
- `docs/platforms/react-native/integrations/component-names.mdx` — new
section for `autoInjectSentryLabel` with disable examples
Closesgetsentry/sentry-react-native#6113
## IS YOUR CHANGE URGENT?
- [ ] Urgent deadline (GA date, etc.)
- [ ] Other deadline
- [x] None: Not urgent, can wait up to 1 week+
⚠️ Should be merged after the above implementation is shipped in 8.12.0
## PRE-MERGE CHECKLIST
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@antonisantonis mentioned this pull request Jun 3, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable autoInjectSentryLabel by default in React Native Metro config

2 participants

@antonis@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(core): Enable autoInjectSentryLabel by default in Metro config - #6141

Merged
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label
May 13, 2026
Merged

feat(core): Enable autoInjectSentryLabel by default in Metro config#6141
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label

Conversation

@antonis

@antonisantonis commented May 12, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Passes autoInjectSentryLabel: true to @sentry/babel-plugin-component-annotate by default when annotateReactComponents is enabled in the Metro config. This enables automatic injection of sentry-label props from static text content at build time.

The Babel plugin (shipped in @sentry/babel-plugin-component-annotate@5.3.0, getsentry/sentry-javascript-bundler-plugins#925) extracts static text from children of touchable components and injects it as a sentry-label prop, improving touch breadcrumb and user interaction span labeling without requiring manual annotation.

Users can opt out:

withSentryConfig(config,{annotateReactComponents: {autoInjectSentryLabel: false,},});

💡 Motivation and Context

Closes#6109. Part of the "Making breadcrumbs data more useful on React Native" project.

Currently, touch breadcrumbs show component names like "TouchableOpacity" unless developers manually add sentry-label, accessibilityLabel, or testID props. With this change, buttons like <Pressable><Text>Save workout</Text></Pressable> automatically get labeled "Save workout" in breadcrumbs and transaction names.

💚 How did you test it?

  • yarn build — compiles without errors
  • npx jest --config jest.config.tools.js test/tools/sentryBabelTransformer.test.ts — 8/8 pass
  • npx jest --config jest.config.tools.js test/tools/metroconfig.test.ts — 142/142 pass
  • yarn lint — no violations
  • yarn api-report — API report up to date
  • Added test for autoInjectSentryLabel: false override
  • Updated existing tests to verify autoInjectSentryLabel: true is passed by default

📝 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

🤖 Generated with Claude Code

Pass `autoInjectSentryLabel: true` to the babel-plugin-component-annotate
plugin by default when `annotateReactComponents` is enabled. This enables
automatic injection of `sentry-label` props from static text content at
build time, improving touch breadcrumb and user interaction span labeling.
Users can opt out by setting `autoInjectSentryLabel: false` in the
`annotateReactComponents` config option.
Closes#6109
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor

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): Enable autoInjectSentryLabel by default in Metro config by antonis in #6141
  • feat(core): Respect Mask boundaries when reading sentry-label by antonis in #6142
  • fix(android): Handle boolean values in JSON options converter by antonis in #6130
  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination; a multi-signal TTID/TTFD system by alwx in #6090
  • chore(deps): update Bundler Plugins to v5.3.0 by github-actions in #6138
  • chore: Merge 8.11.1 back to main by antonis in #6135
  • chore: Update warning regarding iOS crash in sentry-cocoa 9.12.0 by antonis in #6136
  • chore(deps): update CLI to v3.4.2 by github-actions in #6129
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.2 to 2.26.3 by dependabot in #6126
  • chore(deps): bump getsentry/craft from 2.26.2 to 2.26.3 by dependabot in #6127
  • chore(deps): bump github/codeql-action from 4.35.3 to 4.35.4 by dependabot in #6128
  • feat(core): Extract text from children of touched components for breadcrumb labels by antonis in #6106
  • chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.25.0 to 7.29.4 by dependabot in #6124
  • chore(deps): bump fast-uri from 3.0.1 to 3.1.2 by dependabot in #6121
  • chore(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by dependabot in #6120
  • chore(deps): bump socks to ^2.8.8 to fix ip-address vulnerability by antonis in #6117
  • chore(deps): bump uuid to ^13.0.1 to fix buffer bounds check vulnerability by antonis in #6118
  • test(replay): Add passthrough tests for device-state replay breadcrumbs by antonis in #6115
  • chore(deps): update JavaScript SDK to v10.52.0 by github-actions in #6108
  • chore(deps): bump basic-ftp from 5.3.0 to 5.3.1 by dependabot in #6111

🤖 This preview updates automatically when you update the PR.

@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor
Fails
🚫Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 558f563

antonisand others added 2 commits May 12, 2026 15:31
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown

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 c481082. Configure here.

@antonis
antonis marked this pull request as ready for review May 12, 2026 13:44

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGMT!

@antonis
antonis enabled auto-merge (squash) May 13, 2026 08:34
@antonis
antonis merged commit 19250ad into mainMay 13, 2026
51 of 64 checks passed
@antonis
antonis deleted the antonis/issue-6109-auto-inject-sentry-label branch May 13, 2026 08:45
antonis added a commit to getsentry/sentry-docs that referenced this pull request May 21, 2026
)
## DESCRIBE YOUR PR
Documents new touch breadcrumb label features in the React Native SDK
(v8.12.0):
- **Automatic `sentry-label` injection** — build-time label injection
from static text via the Babel plugin, enabled by default with
`annotateReactComponents`
([sentry-react-native#6141](getsentry/sentry-react-native#6141))
- **Runtime text extraction from children** — `extractTextFromChildren`
prop extracts text from child fiber nodes as a label fallback
([sentry-react-native#6106](getsentry/sentry-react-native#6106))
- **Session Replay masking interaction** — `sentry-label` and text
extraction respect `maskAllText` and `Sentry.Mask` boundaries
([sentry-react-native#6142](getsentry/sentry-react-native#6142))
- **Updated label priority chain** — now 6 steps including text
extraction and masking notes
### Files changed
- `docs/platforms/react-native/configuration/touchevents.mdx` — new h2
sections for automatic label injection, text extraction, masking
interaction; updated label priority; added `extractTextFromChildren` to
options
- `docs/platforms/react-native/integrations/component-names.mdx` — new
section for `autoInjectSentryLabel` with disable examples
Closesgetsentry/sentry-react-native#6113
## IS YOUR CHANGE URGENT?
- [ ] Urgent deadline (GA date, etc.)
- [ ] Other deadline
- [x] None: Not urgent, can wait up to 1 week+
⚠️ Should be merged after the above implementation is shipped in 8.12.0
## PRE-MERGE CHECKLIST
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@antonisantonis mentioned this pull request Jun 3, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable autoInjectSentryLabel by default in React Native Metro config

2 participants

@antonis@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(core): Enable autoInjectSentryLabel by default in Metro config - #6141

Merged
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label
May 13, 2026
Merged

feat(core): Enable autoInjectSentryLabel by default in Metro config#6141
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label

Conversation

@antonis

@antonisantonis commented May 12, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Passes autoInjectSentryLabel: true to @sentry/babel-plugin-component-annotate by default when annotateReactComponents is enabled in the Metro config. This enables automatic injection of sentry-label props from static text content at build time.

The Babel plugin (shipped in @sentry/babel-plugin-component-annotate@5.3.0, getsentry/sentry-javascript-bundler-plugins#925) extracts static text from children of touchable components and injects it as a sentry-label prop, improving touch breadcrumb and user interaction span labeling without requiring manual annotation.

Users can opt out:

withSentryConfig(config,{annotateReactComponents: {autoInjectSentryLabel: false,},});

💡 Motivation and Context

Closes#6109. Part of the "Making breadcrumbs data more useful on React Native" project.

Currently, touch breadcrumbs show component names like "TouchableOpacity" unless developers manually add sentry-label, accessibilityLabel, or testID props. With this change, buttons like <Pressable><Text>Save workout</Text></Pressable> automatically get labeled "Save workout" in breadcrumbs and transaction names.

💚 How did you test it?

  • yarn build — compiles without errors
  • npx jest --config jest.config.tools.js test/tools/sentryBabelTransformer.test.ts — 8/8 pass
  • npx jest --config jest.config.tools.js test/tools/metroconfig.test.ts — 142/142 pass
  • yarn lint — no violations
  • yarn api-report — API report up to date
  • Added test for autoInjectSentryLabel: false override
  • Updated existing tests to verify autoInjectSentryLabel: true is passed by default

📝 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

🤖 Generated with Claude Code

Pass `autoInjectSentryLabel: true` to the babel-plugin-component-annotate
plugin by default when `annotateReactComponents` is enabled. This enables
automatic injection of `sentry-label` props from static text content at
build time, improving touch breadcrumb and user interaction span labeling.
Users can opt out by setting `autoInjectSentryLabel: false` in the
`annotateReactComponents` config option.
Closes#6109
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor

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): Enable autoInjectSentryLabel by default in Metro config by antonis in #6141
  • feat(core): Respect Mask boundaries when reading sentry-label by antonis in #6142
  • fix(android): Handle boolean values in JSON options converter by antonis in #6130
  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination; a multi-signal TTID/TTFD system by alwx in #6090
  • chore(deps): update Bundler Plugins to v5.3.0 by github-actions in #6138
  • chore: Merge 8.11.1 back to main by antonis in #6135
  • chore: Update warning regarding iOS crash in sentry-cocoa 9.12.0 by antonis in #6136
  • chore(deps): update CLI to v3.4.2 by github-actions in #6129
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.2 to 2.26.3 by dependabot in #6126
  • chore(deps): bump getsentry/craft from 2.26.2 to 2.26.3 by dependabot in #6127
  • chore(deps): bump github/codeql-action from 4.35.3 to 4.35.4 by dependabot in #6128
  • feat(core): Extract text from children of touched components for breadcrumb labels by antonis in #6106
  • chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.25.0 to 7.29.4 by dependabot in #6124
  • chore(deps): bump fast-uri from 3.0.1 to 3.1.2 by dependabot in #6121
  • chore(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by dependabot in #6120
  • chore(deps): bump socks to ^2.8.8 to fix ip-address vulnerability by antonis in #6117
  • chore(deps): bump uuid to ^13.0.1 to fix buffer bounds check vulnerability by antonis in #6118
  • test(replay): Add passthrough tests for device-state replay breadcrumbs by antonis in #6115
  • chore(deps): update JavaScript SDK to v10.52.0 by github-actions in #6108
  • chore(deps): bump basic-ftp from 5.3.0 to 5.3.1 by dependabot in #6111

🤖 This preview updates automatically when you update the PR.

@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor
Fails
🚫Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 558f563

antonisand others added 2 commits May 12, 2026 15:31
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown

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 c481082. Configure here.

@antonis
antonis marked this pull request as ready for review May 12, 2026 13:44

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGMT!

@antonis
antonis enabled auto-merge (squash) May 13, 2026 08:34
@antonis
antonis merged commit 19250ad into mainMay 13, 2026
51 of 64 checks passed
@antonis
antonis deleted the antonis/issue-6109-auto-inject-sentry-label branch May 13, 2026 08:45
antonis added a commit to getsentry/sentry-docs that referenced this pull request May 21, 2026
)
## DESCRIBE YOUR PR
Documents new touch breadcrumb label features in the React Native SDK
(v8.12.0):
- **Automatic `sentry-label` injection** — build-time label injection
from static text via the Babel plugin, enabled by default with
`annotateReactComponents`
([sentry-react-native#6141](getsentry/sentry-react-native#6141))
- **Runtime text extraction from children** — `extractTextFromChildren`
prop extracts text from child fiber nodes as a label fallback
([sentry-react-native#6106](getsentry/sentry-react-native#6106))
- **Session Replay masking interaction** — `sentry-label` and text
extraction respect `maskAllText` and `Sentry.Mask` boundaries
([sentry-react-native#6142](getsentry/sentry-react-native#6142))
- **Updated label priority chain** — now 6 steps including text
extraction and masking notes
### Files changed
- `docs/platforms/react-native/configuration/touchevents.mdx` — new h2
sections for automatic label injection, text extraction, masking
interaction; updated label priority; added `extractTextFromChildren` to
options
- `docs/platforms/react-native/integrations/component-names.mdx` — new
section for `autoInjectSentryLabel` with disable examples
Closesgetsentry/sentry-react-native#6113
## IS YOUR CHANGE URGENT?
- [ ] Urgent deadline (GA date, etc.)
- [ ] Other deadline
- [x] None: Not urgent, can wait up to 1 week+
⚠️ Should be merged after the above implementation is shipped in 8.12.0
## PRE-MERGE CHECKLIST
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@antonisantonis mentioned this pull request Jun 3, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable autoInjectSentryLabel by default in React Native Metro config

2 participants

@antonis@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(core): Enable autoInjectSentryLabel by default in Metro config - #6141

Merged
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label
May 13, 2026
Merged

feat(core): Enable autoInjectSentryLabel by default in Metro config#6141
antonis merged 4 commits into
mainfrom
antonis/issue-6109-auto-inject-sentry-label

Conversation

@antonis

@antonisantonis commented May 12, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Passes autoInjectSentryLabel: true to @sentry/babel-plugin-component-annotate by default when annotateReactComponents is enabled in the Metro config. This enables automatic injection of sentry-label props from static text content at build time.

The Babel plugin (shipped in @sentry/babel-plugin-component-annotate@5.3.0, getsentry/sentry-javascript-bundler-plugins#925) extracts static text from children of touchable components and injects it as a sentry-label prop, improving touch breadcrumb and user interaction span labeling without requiring manual annotation.

Users can opt out:

withSentryConfig(config,{annotateReactComponents: {autoInjectSentryLabel: false,},});

💡 Motivation and Context

Closes#6109. Part of the "Making breadcrumbs data more useful on React Native" project.

Currently, touch breadcrumbs show component names like "TouchableOpacity" unless developers manually add sentry-label, accessibilityLabel, or testID props. With this change, buttons like <Pressable><Text>Save workout</Text></Pressable> automatically get labeled "Save workout" in breadcrumbs and transaction names.

💚 How did you test it?

  • yarn build — compiles without errors
  • npx jest --config jest.config.tools.js test/tools/sentryBabelTransformer.test.ts — 8/8 pass
  • npx jest --config jest.config.tools.js test/tools/metroconfig.test.ts — 142/142 pass
  • yarn lint — no violations
  • yarn api-report — API report up to date
  • Added test for autoInjectSentryLabel: false override
  • Updated existing tests to verify autoInjectSentryLabel: true is passed by default

📝 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

🤖 Generated with Claude Code

Pass `autoInjectSentryLabel: true` to the babel-plugin-component-annotate
plugin by default when `annotateReactComponents` is enabled. This enables
automatic injection of `sentry-label` props from static text content at
build time, improving touch breadcrumb and user interaction span labeling.
Users can opt out by setting `autoInjectSentryLabel: false` in the
`annotateReactComponents` config option.
Closes#6109
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor

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): Enable autoInjectSentryLabel by default in Metro config by antonis in #6141
  • feat(core): Respect Mask boundaries when reading sentry-label by antonis in #6142
  • fix(android): Handle boolean values in JSON options converter by antonis in #6130
  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination; a multi-signal TTID/TTFD system by alwx in #6090
  • chore(deps): update Bundler Plugins to v5.3.0 by github-actions in #6138
  • chore: Merge 8.11.1 back to main by antonis in #6135
  • chore: Update warning regarding iOS crash in sentry-cocoa 9.12.0 by antonis in #6136
  • chore(deps): update CLI to v3.4.2 by github-actions in #6129
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.2 to 2.26.3 by dependabot in #6126
  • chore(deps): bump getsentry/craft from 2.26.2 to 2.26.3 by dependabot in #6127
  • chore(deps): bump github/codeql-action from 4.35.3 to 4.35.4 by dependabot in #6128
  • feat(core): Extract text from children of touched components for breadcrumb labels by antonis in #6106
  • chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.25.0 to 7.29.4 by dependabot in #6124
  • chore(deps): bump fast-uri from 3.0.1 to 3.1.2 by dependabot in #6121
  • chore(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by dependabot in #6120
  • chore(deps): bump socks to ^2.8.8 to fix ip-address vulnerability by antonis in #6117
  • chore(deps): bump uuid to ^13.0.1 to fix buffer bounds check vulnerability by antonis in #6118
  • test(replay): Add passthrough tests for device-state replay breadcrumbs by antonis in #6115
  • chore(deps): update JavaScript SDK to v10.52.0 by github-actions in #6108
  • chore(deps): bump basic-ftp from 5.3.0 to 5.3.1 by dependabot in #6111

🤖 This preview updates automatically when you update the PR.

@github-actions

github-actionsBot commented May 12, 2026

Copy link
Copy Markdown
Contributor
Fails
🚫Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 558f563

antonisand others added 2 commits May 12, 2026 15:31
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown

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 c481082. Configure here.

@antonis
antonis marked this pull request as ready for review May 12, 2026 13:44

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGMT!

@antonis
antonis enabled auto-merge (squash) May 13, 2026 08:34
@antonis
antonis merged commit 19250ad into mainMay 13, 2026
51 of 64 checks passed
@antonis
antonis deleted the antonis/issue-6109-auto-inject-sentry-label branch May 13, 2026 08:45
antonis added a commit to getsentry/sentry-docs that referenced this pull request May 21, 2026
)
## DESCRIBE YOUR PR
Documents new touch breadcrumb label features in the React Native SDK
(v8.12.0):
- **Automatic `sentry-label` injection** — build-time label injection
from static text via the Babel plugin, enabled by default with
`annotateReactComponents`
([sentry-react-native#6141](getsentry/sentry-react-native#6141))
- **Runtime text extraction from children** — `extractTextFromChildren`
prop extracts text from child fiber nodes as a label fallback
([sentry-react-native#6106](getsentry/sentry-react-native#6106))
- **Session Replay masking interaction** — `sentry-label` and text
extraction respect `maskAllText` and `Sentry.Mask` boundaries
([sentry-react-native#6142](getsentry/sentry-react-native#6142))
- **Updated label priority chain** — now 6 steps including text
extraction and masking notes
### Files changed
- `docs/platforms/react-native/configuration/touchevents.mdx` — new h2
sections for automatic label injection, text extraction, masking
interaction; updated label priority; added `extractTextFromChildren` to
options
- `docs/platforms/react-native/integrations/component-names.mdx` — new
section for `autoInjectSentryLabel` with disable examples
Closesgetsentry/sentry-react-native#6113
## IS YOUR CHANGE URGENT?
- [ ] Urgent deadline (GA date, etc.)
- [ ] Other deadline
- [x] None: Not urgent, can wait up to 1 week+
⚠️ Should be merged after the above implementation is shipped in 8.12.0
## PRE-MERGE CHECKLIST
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@antonisantonis mentioned this pull request Jun 3, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable autoInjectSentryLabel by default in React Native Metro config

2 participants

@antonis@lucas-zimerman