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.
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.tsxrendersLoading…then silently replaces it with a<ul>, andsrc/app/events/page.tsxdoes the same. Error nodes userole="alert", but success transitions are silent. This issue adds consistent live-region feedback.Requirements and context
aria-live="polite"region (or use the accessiblesrc/components/Spinner.tsxrole="status") so the transition from loading to "N items loaded" / "no items" is announced once.role="alert"regions remain the assertive channel.Suggested execution
git checkout -b a11y/live-regions-27-announce-updatessrc/app/pairs/page.tsx,src/app/events/page.tsx,src/app/api-keys/page.tsx,src/app/webhooks/page.tsx.README.md.Test and commit
npm run lint,npm test, andnpm run build.npm testoutput and a11y notes in the PR description.Example commit message
a11y: announce list load and empty transitions via live regionsGuidelines
Community & contribution rewards