Say which emoji a custom one stands for - #2038
Open
mehranlatifi83 wants to merge 1 commit into
Open
Conversation
A custom emoji is drawn, never written, so a screen reader has nothing of it to read. The app knows what it stands for: every custom emoji document carries the plain emoji it was made after, which is what is drawn in its place while it loads. That emoji is now said, together with a word that keeps it apart from the plain one of the same face, wherever a custom emoji is put to a screen reader on its own: the reactions panel, which said no more than that a reaction was custom and never which; the sheet that picks an emoji, used for the icon of a topic and for a status as well as for reactions, which said the emoji but never that it was custom, and said nothing at all for one whose document was not fetched yet; and the list of who reacted to a message. The reactions read out on a message were worse off: a custom one was left out of the reading entirely, as an empty string, and a paid one with it. Those are now named as well, the paid one by the name the app already gives it. The document behind a custom emoji is only ever read from the cache here. Filling in a node for a screen reader is no place to wait on the network, and an emoji that is on the screen has been fetched to be drawn; where it is somehow missing, the reading falls back to what was said before.
mehranlatifi83
force-pushed
the
fix/talkback-custom-emoji-name
branch
from
August 30, 2026 09:45
9221fe4 to
41bfc59
Compare
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
A custom emoji is drawn, never written, so a screen reader has nothing of
it to read. The app knows what it stands for: every custom emoji document
carries the plain emoji it was made after, which is what is drawn in its
place while it loads.
That emoji is now said, together with a word that keeps it apart from the
plain one of the same face, wherever a custom emoji is put to a screen
reader on its own: the reactions panel, which said no more than that a
reaction was custom and never which; the sheet that picks an emoji, used
for the icon of a topic and for a status as well as for reactions, which
said the emoji but never that it was custom, and said nothing at all for
one whose document was not fetched yet; and the list of who reacted to a
message.
The reactions read out on a message were worse off: a custom one was left
out of the reading entirely, as an empty string, and a paid one with it.
Those are now named as well, the paid one by the name the app already
gives it.
The document behind a custom emoji is only ever read from the cache here.
Filling in a node for a screen reader is no place to wait on the network,
and an emoji that is on the screen has been fetched to be drawn; where it
is somehow missing, the reading falls back to what was said before.
Checking it
With TalkBack on, long press a message to open the reactions panel, in a chat that offers custom reactions, and swipe through it.
Before, every custom one read as "Custom emoji". Now each reads as the plain emoji it stands for, followed by "custom emoji".
Swiping onto a message that already carries a custom or a paid reaction is the other half of it: before, those were left out of the reading entirely.