Skip to content

Conversation

@Nitin-100
Copy link
Contributor

@Nitin-100 Nitin-100 commented Jan 11, 2026

Description

This PR adds arrow key navigation support to VirtualizedList items for keyboard-only users.

Why

In the VirtualizedList component, items could not be navigated using arrow keys. Users were required to press Tab repeatedly to move through all 50 list items before reaching the next section. This creates an excessively long and inefficient navigation path.

Keyboard-only users had to press Tab up to 50 times to get through the list, which is time-consuming, frustrating, and significantly slows task completion. This creates accessibility barriers for users with motor impairments, cognitive challenges, or those who rely heavily on keyboard navigation.

What

  • NewArch/src/examples/VirtualizedListExamplePage.tsx:
    • Added arrow key navigation handler (createKeyDownHandler) that handles ArrowUp/ArrowDown to move focus between list items
    • Added focused index state tracking for each VirtualizedList
    • Changed list items from TouchableHighlight to Pressable for better keyboard event support on Windows
    • Added onKeyDown and keyboardEvents props to list items using React Native Windows pattern
    • Added onFocus handlers to track which item is currently focused

Screenshots

N/A - Keyboard navigation fix, no visual changes

Testing

  1. Open the app
  2. Navigate to All Samples > VirtualizedList
  3. Tab to focus on any list item
  4. Press ArrowDown to move focus to the next item
  5. Press ArrowUp to move focus to the previous item
  6. Verify arrow keys navigate between items efficiently without having to Tab through each one
Microsoft Reviewers: Open in CodeFlow

Enable keyboard users to navigate between list items using ArrowUp/ArrowDown keys instead of having to Tab through all 50 items.
@vineethkuttan
Copy link
Contributor

Before and After Screenshare video would be great.
You can install our store gallery to capture the behaviour before.

@vineethkuttan
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@Nitin-100
Copy link
Contributor Author

Before and After Screenshare video would be great. You can install our store gallery to capture the behaviour before.

I cannot show them that I am pressing arrow.

@Nitin-100 Nitin-100 closed this Jan 13, 2026
@Nitin-100 Nitin-100 reopened this Jan 13, 2026
@vineethkuttan
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants