Repository navigation
Agentic Button: expose visible labels and toggle state - #4403
Merged
Jason Morse (JasonVMo) merged 6 commits intoOct 29, 2026
Merged
Conversation
Declare resolved Toggle actions for caller-owned selection, retain native action forwarding, and add checked-state ownership and stable-layout regressions without physical input. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
…rship Preserve explicit naming and label references. Add runtime and native naming regressions, and allow the caller-owned selection example to use real native action transport without physical input. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
Keep native accessibility actions distinct from onPress while qualifying caller-owned reset without physical input. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
Keep ordinary accessibility taps and declared Toggle actions distinct from pointer/keyboard onPress; exercise each real transport through its caller. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
Contributor
Bundle size reportTree-shaken, minified production esbuild bundles with React and React Native runtimes externalized.
The job is advisory: size changes are reported but do not fail the pull request. Bundle or analysis errors still fail. |
srividyaramas
marked this pull request as ready for review
October 28, 2026 18:32
Keep portable button role and enabled-state assertions shared, isolate Windows checked projection, and require physical macOS caller activation without changing product behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
Keep the validated source unchanged and preserve append-only history. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
srividyaramas
requested review from
Jason Morse (JasonVMo),
Khalef Hosany (Khalef1) and
Anandraj (mganandraj)
October 28, 2026 22:06
Jason Morse (JasonVMo)
approved these changes
Oct 29, 2026
Jason Morse (JasonVMo)
deleted the
user/sriramas/button-accessibility-fix
branch
October 29, 2026 19:29
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.
Why
People using assistive technology should get the same button label and selection state that are shown on screen. Agentic Button was not consistently exposing its visible text as a native accessible name, and controlled toggle buttons were missing their native toggle action.
What changed
Button now uses plain text content as its accessible name when the app has not supplied one. App-provided names and label references still take precedence, including deliberately empty labels.
When the app supplies a selected state, the button declares the corresponding checked state and custom toggle action. Windows exposes the native checked projection. On macOS, a custom Toggle action is not a default AXPress action, and the desktop driver does not expose checked queries for a button role. The app still owns selection; forwarding an accessibility action does not change selection or generate an extra press.
This change includes focused regression tests, updated component documentation, and a patch changeset. Broader component coverage will come separately.
Testing
The macOS follow-up changes only Storybook tests and related contract documentation. Shared role and enabled-state assertions still run across desktop hosts. Native checked projection is a separate Windows test, explicitly reported as unsupported on macOS. The caller-owned selection/reset interaction uses physical activation on macOS and is explicitly skipped when that input capability is unavailable; Windows/Win32 accessibility activation is retained.
Keyboard and pointer coverage is not complete: input was disabled in the local native run. Native macOS, including its physical-input interaction, and Windows Fabric have not been qualified locally. Unsupported or skipped cases are not passes.
Paper's first CI attempt hit the existing Avatar activity-ring worker deadline before any authored Button callback ran. One Paper-job retry on the unchanged commit passed. No runtime code or timeouts changed in this follow-up.
All PR checks on this head completed without failures as of October 28. The root aggregate cited above ran on the separate combined validation branch, not on this isolated product head. The Windows tooling repair landed upstream in #4400 and is not part of this PR. Green CI does not qualify the explicitly skipped macOS checked projection or physical-input interaction.