fix: stale VoiceOver value from async UI updates to Text - #58169
Closed
coolsoftwaretyler wants to merge 1 commit into
Closed
coolsoftwaretyler wants to merge 1 commit into
coolsoftwaretyler wants to merge 1 commit into
Conversation
|
@christophpurrer has imported this pull request. If you are a Meta employee, you can view this in D117875865. |
cortinico
approved these changes
Sep 1, 2026
cortinico
left a comment
Contributor
There was a problem hiding this comment.
Review automatically exported from Phabricator review in Meta.
|
@christophpurrer merged this pull request in 082d787. |
shashikant-panchal
pushed a commit
to shashikant-panchal/react-native
that referenced
this pull request
Sep 10, 2026
Summary: This is a targeted fix for react#58145, where I observed iOS VoiceOver reading stale values over `Text` elements that were updated asynchronously (from a `setTimeout` call). This patch definitely fixes the issue, but I'm happy to iterate on the design if there are any considerations I haven't taken into account: coolsoftwaretyler/focusissues#1 Maybe related to react#49462? Although what I found is that when VoiceOver encountered a failure, it bounced back to the status bar, so it's possible 49462 is some *other* issue with modals that presents the same failure mode. ## Changelog: Pick one each for the category and type tags: [IOS] [FIXED] -VoiceOver text readout when changing elements asynchronously Pull Request resolved: react#58169 Test Plan: I built a reproducer and tested this patch with it. To test: 1. Build reproducer (or any app that changes text asynchronously) 2. Install app to physical device (I found the accessibility inspector tool with simulators would paper over the issue, so you need to actually use VoiceOver on a device) 3. Turn on voiceover 4. Navigate through the interface, moving focus through your elements to ensure they work as expected 5. Then use VoiceOver to trigger an async update to some text 6. Move on to any value that was changed by the async update 7. Text will probably be stale, and moving focus no longer works ### Before https://github.com/user-attachments/assets/05b8d308-e743-4cff-917c-c5410307937d ### After https://github.com/user-attachments/assets/d7d8d3fc-5bd8-45b9-bab0-de9bbc9cbcda Reviewed By: cortinico Differential Revision: D117875865 Pulled By: christophpurrer fbshipit-source-id: 218ca244ea99e460d687ec527d6fbcaa9e499943
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
This is a targeted fix for #58145, where I observed iOS VoiceOver reading stale values over
Textelements that were updated asynchronously (from asetTimeoutcall).This patch definitely fixes the issue, but I'm happy to iterate on the design if there are any considerations I haven't taken into account: coolsoftwaretyler/focusissues#1
Maybe related to #49462? Although what I found is that when VoiceOver encountered a failure, it bounced back to the status bar, so it's possible 49462 is some other issue with modals that presents the same failure mode.
Changelog:
Pick one each for the category and type tags:
[IOS] [FIXED] -VoiceOver text readout when changing elements asynchronously
Test Plan:
I built a reproducer and tested this patch with it. To test:
Before
641000653-9506a48b-7ac4-4728-8908-1148aeb7ad07.mp4
After
ScreenRecording_08-27-2026.10-36-35_1.MP4