Problem
When the DevTrack dashboard loads data, skeleton loader components are displayed as placeholders. These skeletons have no ARIA attributes, so assistive technology users (screen reader users) receive zero feedback that the page is loading. When data populates and the skeletons are replaced, there is also no announcement to indicate the content is ready.
This is a standard accessibility gap that affects any user relying on VoiceOver, NVDA, TalkBack, or similar tools.
Steps to Reproduce
- Open DevTrack with a screen reader enabled (VoiceOver on macOS or NVDA on Windows)
- Navigate to the dashboard while data is loading
- The skeleton placeholders render but nothing is announced
- When data loads and components replace skeletons, there is no announcement
Expected Behaviour
- While loading: screen reader announces something like "Loading dashboard data" or similar
- After load: screen reader announces that content is available
Proposed Fix
- Add
role="status" and aria-label="Loading" to skeleton wrapper components so assistive technology announces the loading state
- Add
aria-live="polite" to the main content container so when widgets load in, the change is announced without being disruptive
- Ensure skeletons have
aria-hidden="true" so the animated placeholder divs themselves are not read out, only the status message is
Scope
This is a purely additive change -- no existing functionality is touched. It only adds ARIA attributes to existing components. No visual changes required.
Testing
Verify with VoiceOver (macOS): open dashboard, hear "Loading" announced on load, hear content announced when data populates.
I am happy to implement this fix.
Problem
When the DevTrack dashboard loads data, skeleton loader components are displayed as placeholders. These skeletons have no ARIA attributes, so assistive technology users (screen reader users) receive zero feedback that the page is loading. When data populates and the skeletons are replaced, there is also no announcement to indicate the content is ready.
This is a standard accessibility gap that affects any user relying on VoiceOver, NVDA, TalkBack, or similar tools.
Steps to Reproduce
Expected Behaviour
Proposed Fix
role="status"andaria-label="Loading"to skeleton wrapper components so assistive technology announces the loading statearia-live="polite"to the main content container so when widgets load in, the change is announced without being disruptivearia-hidden="true"so the animated placeholder divs themselves are not read out, only the status message isScope
This is a purely additive change -- no existing functionality is touched. It only adds ARIA attributes to existing components. No visual changes required.
Testing
Verify with VoiceOver (macOS): open dashboard, hear "Loading" announced on load, hear content announced when data populates.
I am happy to implement this fix.