Skip to content

feat(core): Use accessibilityLabel, aria-label, and testID as touch breadcrumb label fallbacks#6103

Merged
antonis merged 2 commits intomainfrom
antonis/issue-6096
May 7, 2026
Merged

feat(core): Use accessibilityLabel, aria-label, and testID as touch breadcrumb label fallbacks#6103
antonis merged 2 commits intomainfrom
antonis/issue-6096

Conversation

@antonis
Copy link
Copy Markdown
Contributor

@antonis antonis commented May 6, 2026

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Extends getLabelValue in touchevents.tsx to read accessibilityLabel, aria-label, and testID from memoizedProps as fallback labels for touch breadcrumbs.

Priority chain: sentry-label > custom labelKey > accessibilityLabel > aria-label > testID

Previously, the only way to get a meaningful label on a touch breadcrumb was to explicitly set sentry-label on the component — which almost nobody does. Now any app that uses accessibility labels or testIDs gets meaningful breadcrumbs out of the box.

Before:

Touch event within element: TouchableOpacity (button.tsx)

After (if accessibilityLabel is set):

Touch event within element: Save workout

This also improves Session Replay AI summaries, which rely on breadcrumb data to describe user actions.

Note on PII: accessibilityLabel and aria-label can carry dynamic content (e.g., accessibilityLabel={`Delete ${item.name}`}), so user data may appear in breadcrumbs via this path. This is consistent with existing behavior for sentry-label, which can also be dynamic.

💡 Motivation and Context

Closes #6096

Customer feedback indicated that Session Replay summaries are not useful because tap breadcrumbs only show generic component hierarchies (TouchableOpacity > Animated(View) > View > ExpoLinearGradient) with no meaningful labels. On web, the SDK captures button text and element attributes; on mobile, we were only reading the four Babel-injected props and explicit sentry-label.

💚 How did you test it?

  • Added 7 unit tests covering:
    • accessibilityLabel used as fallback
    • testID used as fallback
    • aria-label used as fallback
    • sentry-label takes priority over all
    • Custom labelName takes priority over accessibilityLabel
    • accessibilityLabel takes priority over aria-label and testID
    • accessibilityLabel takes priority over testID
  • All existing tests pass unchanged
  • Lint passes

📝 Checklist

🔮 Next steps

…readcrumb label fallbacks

Closes #6096

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

github-actions Bot commented May 6, 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): Use accessibilityLabel, aria-label, and testID as touch breadcrumb label fallbacks by antonis in #6103
  • build(core): Add public API surface tracking with api-extractor by antonis in #6093
  • chore(deps): bump axios from 1.15.0 to 1.16.0 by dependabot in #6091
  • ci: Add workflow to notify issues when fix is released by antonis in #6089
  • ci: Add Danger check to warn about auth token handling changes by antonis in #6087
  • Fix PNPM iOS Upload Debug Symbol fail in EAS Build by alwx in #6086
  • chore(deps): update Sentry Android Gradle Plugin to v6.6.0 by github-actions in #6085
  • fix(e2e): Remove flaky iOS replay assertion from captureReplay test by antonis in #6072
  • chore(deps): bump github/codeql-action from 4.35.2 to 4.35.3 by dependabot in #6078
  • fix: Prevent shell injection vulnerability in GitHub Actions workflow by fix-it-felix-sentry in #6077
  • chore(deps): update Maestro to v2.5.1 by github-actions in #6075

🤖 This preview updates automatically when you update the PR.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 6, 2026

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 95575f3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@antonis antonis merged commit a736b76 into main May 7, 2026
61 of 67 checks passed
@antonis antonis deleted the antonis/issue-6096 branch May 7, 2026 11:02
antonis added a commit to getsentry/sentry-docs that referenced this pull request May 7, 2026
## DESCRIBE YOUR PR

Updates React Native touch event docs to reflect that
`accessibilityLabel`, `aria-label`, and `testID` are now automatically
used as label fallbacks for touch breadcrumbs (added in
[getsentry/sentry-react-native#6103](getsentry/sentry-react-native#6103)).

**Changes:**

- **`touchevents.mdx`**: Rewrote the "Tracking Specific Components"
section to correctly distinguish between the **label** fallback chain
(`sentry-label` > `labelName` > `accessibilityLabel` > `aria-label` >
`testID`) and the **name** field (Babel annotation / `displayName`).
Updated `labelName` option description.
- **`user-interaction-instrumentation.mdx`**: Updated the label
identification description to mention the full fallback chain.

## 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
getsentry/sentry-react-native#6103 is released

## 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>
Sign up for free to 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.

Read accessibilityLabel and testID from touch event props

2 participants