Skip to content

[Bug]: TalkBack reads Send before the message field in the Android composer #26949

Closed

Description

@nibarAhmed

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/mobile

Steps to reproduce

  1. Open the T3 Code app on an Android device and turn on TalkBack.
  2. Open any thread, or start a new task.
  3. Swipe right through the controls in the composer at the bottom of the screen.

Expected behavior

TalkBack reads the controls in the order they appear on screen: attach, message field, then model and Send.

Actual behavior

TalkBack reads attach, model, and Send first, and the message field last. Send comes before the field you type in. This happens both in the one-line composer and in the expanded multi-line composer, where the field sits above the controls.

Cause

Since #23467, apps/mobile/src/features/threads/ThreadComposer.tsx (around lines 885–1000) renders the control row first. That row includes an empty placeholder where the field appears. The real ComposerEditor is rendered after the row as an absolutely positioned view placed over the placeholder. TalkBack follows view-tree order, not screen position. Before #23467, the editor came before the send button in the tree.

Proposed fix

  1. In ThreadComposer.tsx, render the editor's Animated.View before <ComposerDictationDraftContent> (the control row).
  2. Give the empty placeholder Animated.View in the row pointerEvents="none".
  3. In ComposerDictationDraftContent (apps/mobile/src/features/voice-input/ComposerDictationControl.tsx), change pointerEvents from "auto" to "box-none" when it isn't hidden. Once the editor sits underneath the row, a wrapper set to "auto" could take taps meant for the field. ThreadComposer is the only place that uses this component.
  4. Don't use zIndex or elevation to put the editor back on top. On Android those can change the accessibility order again.

experimental_accessibilityOrder isn't an option here. In RN 0.88 it's behind the enableAccessibilityOrder feature flag, which is off outside the Canary release channel, so Android ignores it.

This fix shouldn't change anything visually. Other platforms are untested. To verify:

  • Swipe through with TalkBack in the compact and expanded composer, and with attachments in the row.
  • Check that tapping the field still focuses it and opens the keyboard.

Impact

Minor bug or occasional failure

Version or commit

Latest Android nightly (main @ eb751fa)

Environment

Samsung Galaxy S26 Ultra, Android 17 (One UI 9), TalkBack 17.1, T3 Code Android nightly

Logs or stack traces

Screenshots, recordings, or supporting files

Screen_Recording_20261029_133317_T3.Code.mp4

Workaround

Explore by touch: drag a finger over the composer instead of swiping, so the field can be reached directly.

Activity

  1. added
    bugSomething is broken or behaving incorrectly.
    needs-triageIssue needs maintainer review and initial categorization.
    on Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions