Repository navigation
[Due for payment 2026-06-29] [$250] Screen Reader: New Chat: Checkbox announced as variable, without role or state #77574
Description
Action Performed:
Prerequisites:
- the user is signed in
- Using iOS VoiceOver or Android TalkBack, open the app
- Navigate to the New Chat screen
- Swipe to focus the “Take a test drive” title with the checkbox.
- Note how the checkbox is announced.
Expected Result:
The screen reader should announce:
- The role (e.g., “checkbox”),
- The label (“Take a test drive”),
- The state (“checked” or “not checked”).
Actual Result:
- The screen reader announces the element as a variable instead of a checkbox.
- No clear role or state information is provided.
- Users cannot understand that this is a checkbox or whether it is selected, which makes the form inaccessible for non-visual users.
Area issue was found in:
New Chat
Failed WCAG checkpoints
EN 9.4.1.2 Name, Role, Value https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.02.01_60/en_301549v030201p.pdf#nameddest=9.4.1.2+Name,+Role,+Value
User impact:
Providing role, state, and value information on all user interface components enables compatibility with assistive technology, such as screen readers, screen magnifiers, and speech recognition software, used by people with disabilities.
Suggested resolution:
Use the accessibilityLabel to announce the name, e.g.:
- 'title take a test drive'
https://reactnative.dev/docs/accessibility#accessibilitylabel
Add a checkbox role.
https://reactnative.dev/docs/accessibility#accessibilityrole
Use the checked state.
https://reactnative.dev/docs/accessibility#accessibilitystate
Environment:
Apple iPhone 12 - iOS 18.2.1, Wi-Fi - Native (No mobile browser)
Xiaomi Redmi note 14 - Android 14, Vodafone (D2) - Native (No mobile browser)
Screenshots/Videos
Bug7006341_1763383037347.checkbox-take-a-test-drive-no-role-state.mp4
Version Number: Production
Reproducible in staging?: NA
Reproducible in production?: Yes
Email or phone of affected tester (no customers): No
Logs: https://stackoverflow.com/c/expensify/questions/4856 NA
Notes/Photos/Videos: Any additional supporting documentation Yes
Expensify/Expensify Issue URL: https://platform.applause.com/company/12102/products/36628/community-issues/7006341
Issue reported by: NA
Slack conversation: NA
Issue Owner
Current Issue Owner: @mallenexpensifyUpwork Automation - Do Not Edit
- Upwork Job URL: https://www.upwork.com/jobs/~022056342700430204896
- Upwork Job ID: 2056342700430204896
- Last Price Increase: 2026-05-18

Activity
melvin-bot commentedon Dec 12, 2025
📣 @olenamihno! 📣
Please report bugs or suggest features in the #expensify-open-source Slack channel, don't directly open issues in this repo!
Instructions here to join the channel 📖
Fix Expensify#77574: Add checkbox role and checked state to group cha…
rushatgabhane commentedon May 5, 2026
This issue was retested in BFV cycle 544085 (Native Apps) on 2026-04-28 and is Not Fixed.
Screenshots / Videos
Retest notes
The issue is not fixed
Description: When the focus is on the 'Take a test drive' checkbox, the screen reader incorrectly announces it as a variable instead of a checkbox. Additionally, no clear role or state information is provided, leaving users unable to determine whether the element is a checkbox or if it is selected. This lack of clarity makes the form inaccessible for non-visual users.
Issue verified on Apple iPhone 16 - iOS 26.2.1, Wi-Fi - Native
App Version: Version 9.3.63 and App Name: Expensify
Screen Reader: VoiceOver
Please see the attached video
rushatgabhane commentedon May 6, 2026
@MelvinBot suggest a fix
57 remaining items
Krishna2323 commentedon Jun 25, 2026
Hey @cristipaval @rushatgabhane,
Requesting a compensation increase for the implementation on this issue.
Proposed amount: $625
Additional fixes: Beyond the original label fix — iOS VoiceOver grouping break, stale/cut-off toggle announcements, web Enter navigating to task instead of toggling checkbox, task-title link parity with production, shared-component updates (
SelectionButton,BaseAnchorForCommentsOnly)Scope expansion: Started as a simple
accessibilityLabelchange; grew into a multi-week a11y refactor (48 commits, critical priority, multiple review rounds)Core flow changes: Task checkbox toggle and navigation in chat + task details; changes touch shared checkbox/link components used app-wide
Open to whatever the team thinks is fair. Thanks!
cristipaval commentedon Jun 26, 2026
Hey @Krishna2323, thanks for the detailed breakdown.
I agree the scope grew a lot here. It started as a small label fix and turned into a real accessibility change that touches shared components, so some increase is fair.
One thing — I wouldn't weight the commit count or number of review rounds much, since some of that was iteration. The complexity and the shared-component risk are the better reasons.
Based on that, I'd suggest $500. @mallenexpensify what do you think?
melvin-bot commentedon Jun 28, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)melvin-bot commentedon Jun 28, 2026
Payment Summary
Upwork Job
BugZero Checklist (@mallenexpensify)
Krishna2323 commentedon Jun 30, 2026
@mallenexpensify, friendly bump on this. Could you please take a look at the comments above when you get a chance? 🙇🏻
#77574 (comment)
mallenexpensify commentedon Jul 2, 2026
Payment Summary
Contributor: @Krishna2323 due $500 via NewDot
Contributor+: @mkhutornyi due $500 via NewDot
@mkhutornyi plz complete the BZ checklist and tag me in a post once you have. Thx. (I know this is Accessibility, we need to start creating test cases for all issues soon so the BZ checklist will be helpful).
mkhutornyi commentedon Jul 2, 2026
BugZero Checklist:
[Contributor] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to comment:
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion:
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
[BugZero Assignee] Create a GH issue for creating/updating the regression test once above steps have been agreed upon.
Link to issue: https://github.com/Expensify/Expensify/issues/655431
Regression Test Proposal
Prerequisites:
Test:
iOS:
Android:
Web:
Do we agree 👍 or 👎
Zapier Logs
Run ID: 00040eee-0bb8-aa16-ca10-7e89567f13b4laurenreidexpensify commentedon Jul 6, 2026
$500 approved for @Krishna2323
trjExpensify commentedon Jul 9, 2026
approved $500 for @mkhutornyi