Accessibility: Announce empty results state to screen readers#83801
Accessibility: Announce empty results state to screen readers#83801yuwenmemon merged 9 commits intoExpensify:mainfrom
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
src/components/utils/useStatusMessageAccessibilityAnnouncement.ios.ts
Outdated
Show resolved
Hide resolved
src/components/SelectionListWithSections/BaseSelectionListWithSections.tsx
Outdated
Show resolved
Hide resolved
|
@marufsharifi We need to resolve this issue first before move forward with this PR since we can reuse existing functionality |
|
@suneox, I've addressed all your comments. Please take another look. thanks. |
|
@suneox, kindly bump. thanks. |
Sure I'll take another look at this one soon |
|
@marufsharifi The functionality doesn't work on mWeb/IOS and android native, and don't forget reverify other place Wallet: Add Bank Account android nativeaz_recorder_20260309_202715.2.mp4mWeb/IOSScreenRecording_03-09-2026.20-20-34_1.3.mp4 |
|
I re-tested this after the latest update. Current scope of this PR:
This PR is no longer intended to cover mWeb / Mac web. The web-side fix will be handled in #83126: Attached:
Screen.Recording.2026-03-10.at.2.55.24.PM.mov
Screen.Recording.2026-03-10.at.2.49.31.PM.mov |
|
@suneox, lint failure is not related to our changes, btw. |
I'm agree as suggested resolution in the OP include No mobile browser cc: @rushatgabhane |
|
@marufsharifi Issue fixed on Android, but still not announced on iOS. CleanShot.2026-03-11.at.22.11.51.2.mp4AndroidCleanShot.2026-03-11.at.22.09.44.1.mp4 |
Yeah that sounds good to me |
|
@marufsharifi @suneox to fix the iOS issue maybe we can try https://reactnative.dev/docs/accessibilityinfo#announceforaccessibilitywithoptions |
|
@suneox thanks for the review, I re-tested this based on the expected behavior described in the issue, using VoiceOver for screen reader validation, and it appears to be working as expected on iOS native. I enabled Mac's VoiceOver and verified that when Since this issue is specifically about screen reader announcement behavior, I think VoiceOver may be the more relevant validation signal here than Accessibility Inspector alone. Video demo of the fix on IOS native: no-result-announced-ios-native.mov |
|
@muttmuure I'd like to confirm it work on real device, and simulator with voice over ScreenRecording_03-12-2026.21-51-39_1.1.mp4Simulator Voice OverCleanShot.2026-03-12.at.21.47.34.1.mp4 |
Reviewer Checklist
Screenshots/VideosAndroid: HybridApp561682985-1e3ef379-1a5d-445a-9e4f-48ba8c45b152.mp4CleanShot.2026-03-12.at.21.47.34.1.mp4Android: mWeb ChromeNot available iOS: HybridAppScreenRecording_03-12-2026.21-51-39_1.1.mp4iOS: mWeb SafariNot available MacOS: Chrome / SafariNot available |
|
@marufsharifi As confirmed, this PR only handles the native platform. Could you please update the PR description accordingly? |
|
@MelvinBot update the PR desc - #83801 (comment) |
|
@yuwenmemon all yours 🙇 |
|
Hey! I see that you made changes to our Form component. Make sure to update the docs in FORMS.md accordingly. Cheers! |
|
Updated the PR description to reflect that this PR only covers native platforms (iOS native and Android native). Changes made:
|
|
🚧 @yuwenmemon has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/yuwenmemon in version: 9.3.37-0 🚀
|
|
🚀 Deployed to production by https://github.com/cristipaval in version: 9.3.37-10 🚀
|
Explanation of Change
When a user searches and there are no matches, the "No results found" message is now reliably announced to screen reader users, but only when that message is actually visible.
Note: This PR only covers native platforms (iOS native and Android native). The web platform fix (mWeb, desktop web) will be handled separately in #83126.
Fixed Issues
$ #77422
PROPOSAL: #77422 (comment)
Tests
Offline tests
Same as Tests.
QA Steps
Same as Tests (native platforms only — iOS native and Android native).
// TODO: These must be filled out, or the issue title must include "[No QA]."
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
Screen.Recording.2026-03-02.at.12.58.31.PM.mov
Android: mWeb Chrome
Screen.Recording.2026-03-01.at.11.27.19.AM.mov
iOS: Native
Screen.Recording.2026-03-01.at.11.17.06.AM.mov
iOS: mWeb Safari
Screen.Recording.2026-03-04.at.3.39.39.PM.mov
MacOS: Chrome / Safari
Screen.Recording.2026-03-04.at.3.34.41.PM.mov