Accessibility/fix: Add accessibilityLabel to currency, flip and locale pickers - #80241
Conversation
|
Hey! I see that you made changes to our Form component. Make sure to update the docs in FORMS.md accordingly. Cheers! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5baab7e291
ℹ️ 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".
| style={styles.minWidth18} | ||
| isContentCentered | ||
| text={currency} | ||
| accessibilityLabel={translate('common.selectCurrency')} |
There was a problem hiding this comment.
Include selected currency in accessibility label
Setting accessibilityLabel on this button overrides the visible text for screen readers (VoiceOver/TalkBack/ARIA), so users will now hear only “Select currency” and lose the currently selected currency (e.g., USD). This is a regression for screen reader users because the control no longer conveys the current value. Consider including the currency in the label (e.g., “Select currency, currently USD”) or omitting the explicit label so the button text remains the accessible name.
Useful? React with 👍 / 👎.
| style={styles.minWidth18} | ||
| isContentCentered | ||
| text={currency} | ||
| accessibilityLabel={translate('common.selectCurrency')} |
There was a problem hiding this comment.
| accessibilityLabel={translate('common.selectCurrency')} | |
| accessibilityLabel={`${translate('common.selectCurrency')}, ${currency}`} |
Agree with the above comment, we need to set text that tells the user also about the selected currency.
| style={styles.minWidth18} | ||
| isContentCentered | ||
| text={currency} | ||
| accessibilityLabel={translate('common.selectCurrency')} |
| return ( | ||
| <Picker | ||
| label={size === 'normal' ? translate('languagePage.language') : null} | ||
| accessibilityLabel={translate('languagePage.language')} |
There was a problem hiding this comment.
| accessibilityLabel={translate('languagePage.language')} | |
| accessibilityLabel={`${translate('common.select')} ${translate('languagePage.language')}`} |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari |
JmillsExpensify
left a comment
There was a problem hiding this comment.
Good accessibility improvements that don't change core product behaviors.
|
🚀 Deployed to staging by https://github.com/Beamanator in version: 9.3.11-42 🚀
|
|
🚀 Deployed to production by https://github.com/Julesssss in version: 9.3.12-1 🚀
|



Explanation of Change
This PR adds accessibilityLabel to the language picker on the sign-in page, as well as to the currency picker and flip amount button.
Specifically:
The language picker now exposes an explicit accessible label for screen readers.
Currency selection and amount flip buttons in NumberWithSymbolForm now include accessible names instead of relying on visual context.
These changes improve screen reader clarity without affecting visual behavior or user interactions.
Fixed Issues
$ #79239
PROPOSAL: #79239 (comment)
Tests
For #77373
Prerequisites:
the user is signed in
For #77248
Prerequisites:
the user is not signed in
Open the Expensify app
Observe language selector is displayed in the footer area.
Verify language selector are announced correctly with screen reader
Verify that no errors appear in the JS console
Offline tests
N/A
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
Note: This is a screen reader accessibility change with no visual differences. Testing requires screen reader software (VoiceOver on iOS/macOS or TalkBack on Android).