Skip to content

Announce dynamic list updates and errors with consistent ARIA live regions #308

Description

@mikewheeleer

Improve screen-reader feedback for list loads and result updates

Description

The pairs, events, api-keys, and webhooks pages swap from a loading state to a populated list with no programmatic announcement, so screen-reader users get no feedback that content arrived. For example src/app/pairs/page.tsx renders Loading… then silently replaces it with a <ul>, and src/app/events/page.tsx does the same. Error nodes use role="alert", but success transitions are silent. This issue adds consistent live-region feedback.

Requirements and context

  • Repository scope: StableRoute-Org/Stableroute-frontend only.
  • Wrap each list's loaded/empty/loading swap in an aria-live="polite" region (or use the accessible src/components/Spinner.tsx role="status") so the transition from loading to "N items loaded" / "no items" is announced once.
  • Avoid double announcements: do not nest multiple live regions, and ensure the error role="alert" regions remain the assertive channel.
  • Apply consistently across pairs, events, api-keys, and webhooks pages without changing data fetching.
  • Keep visual output unchanged; this is semantics-only.

Suggested execution

  • Fork the repo and create a branch
  • git checkout -b a11y/live-regions-27-announce-updates
  • Implement changes
  • Test and commit

Test and commit

  • Run npm run lint, npm test, and npm run build.
  • Cover edge cases: loading→loaded, loading→empty, error (assertive), and no duplicate regions.
  • Include the full npm test output and a11y notes in the PR description.

Example commit message

a11y: announce list load and empty transitions via live regions

Guidelines

  • Minimum 95 percent test coverage for impacted modules.
  • Clear, reviewer-focused documentation.
  • Timeframe: 96 hours.

Community & contribution rewards

  • 💬 Join the StableRoute community on Discord for questions, reviews, and faster merges: https://discord.gg/37aCpusvx
  • ⭐ This is a GrantFox OSS / Official Campaign task and may be rewarded. When your PR is merged you'll be prompted to rate the project — if this issue and the maintainers helped you ship, we'd be grateful for a 5-star rating. Clear questions in Discord and tidy, well-tested PRs are the fastest path to a merge and a reward.

Metadata

Metadata

Assignees

Fields

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions