Skip to content

Improve TalkBack support in the story viewer - #1986

Open
mehranlatifi83 wants to merge 1 commit into
DrKLO:masterfrom
mehranlatifi83:feature/story-accessibility
Open

mehranlatifi83 wants to merge 1 commit into
DrKLO:masterfrom
mehranlatifi83:feature/story-accessibility

Conversation

@mehranlatifi83

@mehranlatifi83 mehranlatifi83 commented Jul 18, 2026 •

Copy link
Copy Markdown

Summary

This makes the existing story viewer controls and interactive story content usable with TalkBack.

Accessible story controls

  • The story surface announces the current position, for example Story, 2 of 5.
  • Previous and Next are exposed as TalkBack actions on the story surface. Each action is only present when a story exists in that direction.
  • Video stories expose Play and Pause as TalkBack actions. The action pauses or resumes both the video player and story progress. It is not exposed for photo stories.
  • Video stories expose an adjustable timeline. It announces elapsed and total time using the same accessibility format as PhotoViewer, and TalkBack adjustment actions seek through the video.
  • The Like control announces whether the story is liked and includes the reaction count when available.
  • The Like control also exposes a Reactions action that opens the reaction picker.
  • Repost controls include their share count when available.
  • Story view counts are announced on the views control.
  • In the story viewers list, likes now announce the viewer's name, and reactions with custom emoji announce the emoji itself instead of unreadable internal data.
  • Privacy, comments, paid star reactions, and live microphone mute or unmute controls have readable labels. The microphone label updates after its state changes.

Accessible story content

  • Story headers announce the story owner. Repost and member attribution shown in the header is also exposed to TalkBack.
  • Captions are read as text and expose Expand or Collapse through the existing click action.
  • Links, hashtags, and mentions in captions are available through the TalkBack links menu. Activating a link goes through the same handling as a visual tap, so hashtags open story search, mentions open the profile, and web links open with the usual confirmation.
  • Reposted stories always announce their source, and the original story's caption when it is available, in addition to the local caption. When there is no local caption, the caption area's click action is labeled View Story (or Open Message for channel post reposts) and opens the source directly, matching what a tap does visually.
  • Stories with music announce the track and artist, and expose a TalkBack action that opens the same music menu shown on tap (save to Saved Messages, add to profile).
  • Text placed on a story in the editor is announced where the text is still available on the device, that is the user's own uploading stories and edit drafts. For received stories the text is rendered into the media itself and is not available to any client as data.
  • Channel post, link, venue, location, and gift media areas have readable descriptions. Activating them with TalkBack opens their existing destination directly instead of showing the visual confirmation hint first.
  • Suggested reaction widgets announce the reaction emoji and can be activated normally.
  • Weather widgets announce their emoji and temperature.

All of these additions use the existing story UI and existing Telegram strings.

Checking it

With TalkBack on, open a story and swipe through what it holds, then open the actions on the story itself.

Before, the controls and the content of a story were largely silent: the position in the set, the caption and its links, the music, the media areas and the suggested reactions. Now each of them is read where it is, and what a tap does is offered as an action.

A video story is the other half of it: play and pause, and a timeline that says the elapsed and the total time and can be seeked with the adjust gestures.

@mehranlatifi83
mehranlatifi83 force-pushed the feature/story-accessibility branch 2 times, most recently from be57708 to fd88438 Compare July 25, 2026 14:59
@mehranlatifi83
mehranlatifi83 force-pushed the feature/story-accessibility branch from 6749722 to 9834922 Compare August 3, 2026 03:09
@mehranlatifi83
mehranlatifi83 force-pushed the feature/story-accessibility branch 2 times, most recently from 2277bb0 to d00dc3a Compare August 29, 2026 19:07
@mehranlatifi83
mehranlatifi83 force-pushed the feature/story-accessibility branch from d00dc3a to c212064 Compare September 18, 2026 09:50
@mehranlatifi83
mehranlatifi83 force-pushed the feature/story-accessibility branch from c212064 to bebdcfd Compare September 27, 2026 10:45
@mehranlatifi83
mehranlatifi83 force-pushed the feature/story-accessibility branch from bebdcfd to 2a9b18d Compare October 1, 2026 23:01
@mehranlatifi83
mehranlatifi83 force-pushed the feature/story-accessibility branch from 2a9b18d to 429c531 Compare October 13, 2026 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant