Add accessibilityLabel to picker dismiss button for VoiceOver#85103
Add accessibilityLabel to picker dismiss button for VoiceOver#85103arosiclair merged 3 commits intomainfrom
Conversation
Pass accessibilityLabel with 'Dismiss' copy via touchableDoneProps in BasePicker so the iOS picker dismiss button is announced by VoiceOver. Co-authored-by: Fitsum Abebe <FitseTLT@users.noreply.github.com>
|
Hey! I see that you made changes to our Form component. Make sure to update the docs in FORMS.md accordingly. Cheers! |
|
I created this PR from an upstream branch since I don't have push access to your fork. To take ownership of this branch and be able to push updates, run: Then you can close this PR and open a new one from your fork. |
Co-authored-by: Fitsum Abebe <FitseTLT@users.noreply.github.com>
|
Fixed the failing Prettier check: the |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridApp2026-03-16.18-42-25.mp4iOS: mWeb SafariMacOS: Chrome / Safari |
|
@MelvinBot merge main |
…ssibilityLabel Co-authored-by: Fitsum Abebe <FitseTLT@users.noreply.github.com>
|
Merged main into this branch. |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
We did not find an internal engineer to review this PR, trying to assign a random engineer to #77534 as well as to this PR... Please reach out for help on Slack if no one gets assigned! |
|
@MelvinBot make it ready for review |
|
PR has been marked as ready for review. |
|
@MelvinBot Change the test steps to Precondition
|
|
Updated the Tests and QA Steps sections with the new test steps. |
|
🚧 @arosiclair has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/arosiclair in version: 9.3.39-0 🚀
|
|
🚀 Deployed to production by https://github.com/cristipaval in version: 9.3.39-3 🚀
|
Explanation of Change
The iOS picker's dismiss/Done button was not being announced by VoiceOver because it lacked an
accessibilityLabel. The library (react-native-picker-select) already exposestouchableDonePropsfor this purpose — we were passingaccessibilityRole: 'button'but not anaccessibilityLabel.This adds
accessibilityLabel: translate('common.dismiss')to thetouchableDonePropsinBasePicker, so VoiceOver now announces the button as "Dismiss" (localized).Fixed Issues
$ #77534
Tests
Precondition
Offline tests
N/A — accessibility label is a static UI attribute unrelated to network state.
QA Steps
Precondition
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand 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
N/A — iOS-only picker behavior
Android: mWeb Chrome
N/A — iOS-only picker behavior
iOS: Native
iOS: mWeb Safari
N/A — native picker only
MacOS: Chrome / Safari
N/A — iOS-only picker behavior