Skip to content

[Enhancement] Add keyboard navigation support for tablet and web rendering targets #662

Description

@RUKAYAT-CODER

Overview

expo-router supports web rendering and tablet form factors. On iPad with external keyboard or React Native Web, there is no keyboard navigation support: Tab key does not move focus between interactive elements, Enter does not activate buttons, and Escape does not dismiss modals. This violates WCAG 2.1 Level AA keyboard accessibility guidelines and breaks expected UX on iPadOS with Smart Keyboard.

Specifications

Features:

  • All interactive elements reachable via Tab key in logical DOM order
  • Enter/Space activates focused buttons, links, and form controls
  • Escape closes modals, drawers, and dropdowns
  • Visible focus indicator on all focused elements

Tasks:

  • Audit all interactive components for accessible={true} and accessibilityRole
  • Add onKeyPress handlers for Enter/Space on custom interactive components
  • Add global 'keydown' Escape listener for modal and drawer close
  • Implement useFocusTrap hook for modal dialogs
  • Test with iPad + Smart Keyboard and VoiceOver

Impacted Files:

  • src/components/common/Modal.tsx
  • src/components/common/Drawer.tsx
  • All interactive custom components

Acceptance Criteria

  • All interactive elements reachable via Tab without mouse/touch
  • Enter activates focused buttons
  • Escape dismisses focused modal or dropdown
  • Focus indicator visible on all focused elements
  • No WCAG 2.1 AA keyboard accessibility violations

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions