Skip to content

Name mobile tap spans only after labels from CONST.SENTRY_LABEL - #104054

Merged
rlinoz merged 6 commits into
Expensify:mainfrom
arekm213:arekm213/redact-touch-labels
Nov 2, 2026
Merged

rlinoz merged 6 commits into
Expensify:mainfrom
arekm213:arekm213/redact-touch-labels

Conversation

@arekm213

@arekm213 arekm213 commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Explanation of Change

On iOS and Android, Sentry names every tap span <route>.<label> (op ui.action.touch) and adds the same label to touch and rage tap breadcrumbs. The SDK takes the label from the sentry-label prop, and when that is missing it falls back to accessibilityLabel, aria-label, testID and finally the text inside the tapped element. Our components set a sentryLabel prop instead, which the SDK never reads on native, so tap spans end up named after whatever the user tapped: email addresses, full names, home addresses from the bank account form, report titles and amounts.

This PR passes touchEventBoundaryProps to Sentry.wrap:

  • labelName: 'sentryLabel', so the SDK reads our existing labels (the same values web already sends as data-sentry-label);
  • extractTextFromChildren: false, so the text inside the tapped element is never read;
  • ignoreNames with a pattern that matches everything except known labels: the values in CONST.SENTRY_LABEL, and labels we build at runtime that start or end with a known prefix or suffix (Search-Filter-, Search-Advanced-Filter-, Search-FilterPopupApply-, Socials-, -ClearButton, -SkippedEmployees). The SDK skips every element whose component name or label matches it and keeps walking up the tree, so the accessibility label and test ID fallbacks can no longer name a tap.

As a result, a tap is named after the nearest known label above the tapped element, for example Report.LHN-OptionRow, or a label like Search-Filter-merchant for a filter in the Spend filter bar. A tap with no such label creates no span and no breadcrumb. Because the label is chosen before the span starts, user data also stays out of everything built from the span name, such as the transaction name in trace headers and profiles.

Trade-offs:

  • For labels built at runtime, only the prefix or suffix is checked, not the rest. Today the rest is always a value from the code (filter keys, icon names, test IDs, other labels), except search filters on report fields, where it is the field name set in the workspace (e.g. Search-Filter-reportField-project-code). An accessibility label or test ID that happens to have one of these formats would also get through.
  • About 30 string literal labels outside CONST.SENTRY_LABEL are dropped. They can be moved into CONST.SENTRY_LABEL in a follow-up, which will also type sentryLabel so TypeScript checks these labels.
  • Data already stored in Sentry is not changed by this PR.
  • Because almost every element is skipped, the label lookup usually walks all the way to the root (300-550 components). On a release build in the iOS simulator it takes about 1.2 ms per tap (0.3 ms on main), and up to about 5 ms on slower CPU cores. That is well under one frame (16 ms), so it isn't noticeable.

Fixed Issues

$ #104022
PROPOSAL: N/A

Tests

  1. Run the unit test: npx jest tests/unit/touchEventBoundaryPropsTest.ts, and verify it passes.
  2. Run the iOS or Android app and log in.
  3. Tap a chat row in Inbox, the tab bar, the floating action button, a row in Spend and the back button in a header.
  4. Verify the app behaves as before and no errors appear.
  5. With a breakpoint or log in beforeBreadcrumb, verify every touch breadcrumb is labelled with a value from CONST.SENTRY_LABEL (for example LHN-OptionRow, NavigationTabBar-Account, Search-TransactionListItem, Header-BackButton) or a label with a known prefix or suffix (for example Search-Filter-merchant after tapping a filter in the Spend filter bar), and that tapping an element without a label, such as "Schedule call" in a chat, logs no breadcrumb.
  • Verify that no errors appear in the JS console

Offline tests

Same as tests.

QA Steps

  1. On iOS and Android, tap through Inbox, Spend, Account and a chat.
  2. In Sentry, filter transactions by span.op:ui.action.touch and the build's release, and verify every name looks like <screen>.<label>, where the label is from CONST.SENTRY_LABEL or has a known prefix or suffix, with no names, emails, addresses or amounts.
  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Note: this only changes how Sentry names taps, with no UI, data or network changes. Tested on iOS: Native; the other platforms run the same JS config.
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I verified any copy / text that was added to the app is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • If new assets were added or existing ones were modified, I verified that:
    • The assets are optimized and compressed (for SVG files, run npm run compress-svg)
    • The assets load correctly across all supported platforms.
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • If the PR adds or modifies the UI:
    • I asked an AI agent to review the changes for accessibility issues and addressed its findings.
    • I tested with a screen reader (VoiceOver on macOS) and verified all new/changed elements are reachable with a logical focus order.
    • I verified all new/changed elements have meaningful accessible names and roles.
    • I verified state changes are announced (e.g. checked/unchecked, expanded/collapsed, selected).
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

No visual changes.

Android: mWeb Chrome

No visual changes.

iOS: Native

No visual changes.

iOS: mWeb Safari

No visual changes.

MacOS: Chrome / Safari

No visual changes.

Sentry on iOS and Android named tap spans and breadcrumbs after accessibility labels, test IDs or the tapped text, which can contain user data. Read our sentryLabel prop instead and drop every label that is not in CONST.SENTRY_LABEL.
@codecov

codecov Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ Changes either increased or maintained existing code coverage, great job!

Files with missing lines Coverage Δ
src/App.tsx 100.00% <100.00%> (ø)
src/libs/telemetry/touchEventBoundaryProps.ts 91.66% <91.66%> (ø)
... and 254 files with indirect coverage changes

@arekm213
arekm213 marked this pull request as ready for review October 14, 2026 23:58
@arekm213
arekm213 requested review from a team as code owners October 14, 2026 23:58
@melvin-bot
melvin-bot Bot requested review from abdulrahuman5196 and garrettmknight and removed request for a team October 14, 2026 23:58
@melvin-bot

melvin-bot Bot commented Oct 14, 2026

Copy link
Copy Markdown

@abdulrahuman5196 Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

@melvin-bot
melvin-bot Bot removed the request for review from a team October 14, 2026 23:58
@arekm213

Copy link
Copy Markdown
Contributor Author

@MelvinBot review

@MelvinBot

Copy link
Copy Markdown
Contributor

Review

The approach works, and I found no blocking issues. I traced it against the installed @sentry/react-native 8.27.0 TouchEventBoundary, and every claim in the description holds:

  • labelName: 'sentryLabel' is read from the host RCTView. RN Pressable and View forward unknown props, so sentryLabel from BaseGenericPressable's ...rest reaches that view. A host view has no displayName, so the name check never drops its label.
  • With extractTextFromChildren: false, the SDK never reads child text.
  • ignoreNames is checked against both name and label. Any element whose accessibility label, test ID, or component name is not a CONST.SENTRY_LABEL value is skipped.
  • With no label, startUserInteractionSpan returns early and _logTouchEvent is never called. No span or breadcrumb is created.

All CI checks pass except the approval check.

Non-blocking notes:

  1. Per-tap cost scales with tree depth. maxComponentTreeSize (20) counts only items that get pushed. Almost nothing is pushed now, so a tap without a label walks every fiber up to the boundary, and every named fiber runs the regex. The 3 µs figure is per element. Please confirm the total _onTouchStart time for a tap deep inside a screen, not just one element.
  2. This relies on the labelled fiber having no name. If someone later adds Sentry's component-annotate Babel plugin, host views will carry data-sentry-component. The name check would then drop every label. A short comment in touchEventBoundaryProps.ts:33-36 would help the next person.
  3. Attribution can jump far. An unlabelled button inside a labelled ancestor is now named after that ancestor, however far up it is. Before, the nearest label of any kind won. This is fine as a trade-off, but expect some spans to name a container rather than the control that was tapped.
  4. The test spies on the private _onTouchStart and _logTouchEvent methods. That's good: an SDK upgrade that changes them will fail the test loudly instead of quietly leaking labels again.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b5dd07cc5a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

}

describe('touchEventBoundaryProps', () => {
it('names a tap after the nearest sentryLabel, skipping the user data in the views inside it', () => {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Add the required When section to each test

Each of the four new cases has a // Given and // Then but no literal // When, even though the testing rule incorporated by AGENTS.md (CLAUDE.md, Testing) requires all three sections for every test. Add a When comment at the actual touch(...) action in each case so future changes retain the scenario/action distinction.

AGENTS.md reference: AGENTS.md:L3-L3

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done

extractTextFromChildren: false,
// Skip elements whose label is not in `CONST.SENTRY_LABEL` and keep looking at their parents.
// If no parent has a valid label, the tap is not reported.
ignoreNames: [UNKNOWN_LABEL],

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep component names out of the label allowlist

On taps inside a component whose display name happens to equal a CONST.SENTRY_LABEL value, Sentry applies this same ignoreNames regex to the component name, so it retains the component even when no accepted sentryLabel was found. This already occurs for Socials (src/pages/signin/Socials.tsx:54): its actual prop at line 75 is dynamically suffixed and is rejected by UNKNOWN_LABEL, but the ancestor component name equals SENTRY_LABEL.SOCIALS.LINK ("Socials"), causing those taps to be logged under a misleading generic label instead of being dropped. Use a filter that cannot admit component names (or explicitly ignore these collisions) to preserve the promised no-label/no-event behavior.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Socials doesn't set a displayName, and Sentry only reads displayName (not the function name), so it never shows up as a name here. I also checked every displayName in src against CONST.SENTRY_LABEL and none of them match. Even if one did, it would only add a breadcrumb with that component name, with no span and no user data.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-15T00:12:52.663196Z b5dd07c Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@garrettmknight
garrettmknight removed their request for review October 16, 2026 17:47
@arekm213

Copy link
Copy Markdown
Contributor Author

Answering to this

  1. I measured the whole _onTouchStart on a release build: about 1.2 ms per tap (0.3 ms on main), up to ~5 ms on slower cores. Well under one frame, so I'd keep it
  2. Added that comment next to ignoreNames
  3. Yes, that's expected. Some taps will be named after a container for now, and adding sentryLabel to the controls that miss it is the follow-up

@arekm213

Copy link
Copy Markdown
Contributor Author

@abdulrahuman5196 this is ready for review, could you take a look please?

@arekm213

Copy link
Copy Markdown
Contributor Author

@rlinoz could we please change reviewer? i would love to get that merged and be able to work on follow up PR already, and @abdulrahuman5196 doesn't seem to be active

@abdulrahuman5196

Copy link
Copy Markdown
Contributor

@arekm213 sorry for the delay. I was unavailable for last couple of days. But i will get it checked today.

@abdulrahuman5196

Copy link
Copy Markdown
Contributor

@arekm213 The approach looks good IMO,

My only concern was the allowlist part, since it we have sentry data which is not present Const, then it would get dropped. But I saw your message in the issue here - #104022 (comment),

I went with an allowlist because just turning off the text isn't enough. Accessibility labels and testIDs carry the same kind of data, and there's no reliable way to tell a button name from someone's name at runtime. Doing it at the source also keeps the data out of trace headers and profiles, which a beforeSend rename wouldn't. Follow-ups I'd suggest:

If we are aligned on this @rlinoz, I think we should be good.

@abdulrahuman5196

Copy link
Copy Markdown
Contributor

@arekm213 Kindly fix the merge conflicts. I could then check on platforms as well.

@arekm213

Copy link
Copy Markdown
Contributor Author

@abdulrahuman5196 done! its ready for review again

@rlinoz

rlinoz commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

I think it is fine to drop the labels that are not in const, but I am worried about the ones we dynamically generate like Search-Advanced-Filter-${filterKey}, ideally we don't drop those.

@arekm213

@arekm213

arekm213 commented Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

@rlinoz Good call i added those, now label we build in code with a known prefix or suffix (search filters, the clear button on text inputs, social links, etc.) go through
In the follow-up im planning to move the ~30 labels that are hardcoded outside CONST into it, and type sentryLabel so new ones can't skip it

@arekm213

arekm213 commented Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

@MelvinBot review

@MelvinBot

Copy link
Copy Markdown
Contributor

Review of the prefix/suffix change

The new allowlist looks correct, and I found no blocking issues. All 3 prefixes and the -SkippedEmployees suffix match how those labels are built today. The regex accepts only labels that start with a prefix or end with a suffix, and it rejects partial matches, as your tests show.

Non-blocking notes:

  1. -ClearButton does nothing on native yet. Only the web BaseTextInput gives the clear button a label (index.tsx:571). The native version renders TextInputClearButton without sentryLabel (index.native.tsx:468-475). This config only runs on native, so a tap on the clear button takes the label of the nearest labelled parent instead. You could add the same sentryLabel line in the native file, here or in your follow-up.
  2. Report field names are typed in by workspace admins. Search-Filter-reportField-<name> can contain any text an admin enters. You already list this trade-off, and it is admin config, not personal data, so it seems acceptable. If you want to close the gap, the follow-up could send one fixed label, such as Search-Filter-reportField, for every report field.
What I checked
  • Runtime-built labels in src:
  • The Search-FilterPopupApply- prefix does not clash with the Search-FilterPopupApplySingleSelect-style labels in CONST. Those labels have no hyphen after Apply, and they pass anyway as exact matches.
  • CI: validate-perf-tests fails on a ReportActionsList render count. That is unrelated, because this PR changes only Sentry.wrap options, which component perf tests don't load. The only other failure is the approval check. Unit tests pass.

view run

@arekm213

arekm213 commented Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

its ready for review, i would skip both non blocking notes from Melvin

@rlinoz

rlinoz commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

@abdulrahuman5196 can you please complete the checklist?

@abdulrahuman5196

Copy link
Copy Markdown
Contributor

checking now again

@abdulrahuman5196

Copy link
Copy Markdown
Contributor

Reviewer Checklist

  • I have verified the author checklist is complete (all boxes are checked off).
  • I verified the correct issue is linked in the ### Fixed Issues section above
  • I verified testing steps are clear and they cover the changes made in this PR
    • I verified the steps for local testing are in the Tests section
    • I verified the steps for Staging and/or Production testing are in the QA steps section
    • I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • I checked that screenshots or videos are included for tests on all platforms
  • I included screenshots or videos for tests on all platforms
  • I verified that the composer does not automatically focus or open the keyboard on mobile unless explicitly intended. This includes checking that returning the app from the background does not unexpectedly open the keyboard.
  • I verified tests pass on all platforms & I tested again on:
    • Android: HybridApp
    • Android: mWeb Chrome
    • iOS: HybridApp
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
  • I verified proper code patterns were followed (see Reviewing the code)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I verified that this PR follows the guidelines as stated in the Review Guidelines
  • I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • If the PR adds or modifies the UI:
    • I asked an AI agent to review the changes for accessibility issues and addressed its findings.
    • I tested with a screen reader (VoiceOver on macOS) and verified all new/changed elements are reachable with a logical focus order.
    • I verified all new/changed elements have meaningful accessible names and roles.
    • I verified state changes are announced (e.g. checked/unchecked, expanded/collapsed, selected).
  • For any bug fix or new feature in this PR, I verified that sufficient unit tests are included to prevent regressions in this flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: HybridApp
Android: mWeb Chrome
iOS: HybridApp
iosHybrid-0-Screen_Recording_2026-11-02_at_8.31.18.PM.mov
iOS: mWeb Safari
MacOS: Chrome / Safari

@abdulrahuman5196 abdulrahuman5196 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Changes looks good and works well. Reviewers checklist is also complete.

All yours. @rlinoz

🎀 👀 🎀
C+ Reviewed

@melvin-bot
melvin-bot Bot requested a review from rlinoz November 2, 2026 15:02
@abdulrahuman5196

abdulrahuman5196 commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Kindly re-run and watch out if the Reassure tests are passing, not sure why it is failing due to particular which could be unrelated. @rlinoz . I am unable to restart that test.

@rlinoz rlinoz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks everyone!

@rlinoz
rlinoz merged commit 4006589 into Expensify:main Nov 2, 2026
41 of 44 checks passed
@OSBotify

OSBotify commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

🚧 rlinoz has triggered a test Expensify/App build. You can view the workflow run here.

@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

@OSBotify OSBotify mentioned this pull request Nov 2, 2026
75 tasks done
@OSBotify

OSBotify commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/rlinoz in version: 9.5.28-4 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

@MelvinBot

Copy link
Copy Markdown
Contributor

No help site update needed. This PR only changes how Sentry names tap events on iOS and Android, with no change to the UI or user-facing behavior.


view run

@IuliiaHerets

Copy link
Copy Markdown

Hi @arekm213. Step 2 can't be executed by QA team.
Is completing Step 1 sufficient, or will you verify Step 2 internally?

image

@rlinoz

rlinoz commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

I can do it internally

@OSBotify

OSBotify commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/rlinoz in version: 9.5.30-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

@OSBotify

OSBotify commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

🚀 Deployed to production by https://github.com/blimpich in version: 9.5.30-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

Bundle Size Analysis (Sentry):

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.

6 participants