Accessible Statistics Screen with Screen Reader Support
The entire statistics dashboard must be fully accessible to screen readers including VoiceOver on iOS and TalkBack on Android. This includes summary cards, charts, filter controls, and all interactive elements. Chart data must have text alternatives since graphical representations are inherently inaccessible to screen reader users. All interactive controls must have meaningful semantic labels. The implementation must meet WCAG 2.2 AA standards as required by all three organizations. Sensitive statistical fields that could reveal private information should be announced with appropriate warnings.
User Story
Audience Summaries
Full screen reader accessibility for the statistics dashboard is a non-negotiable requirement across all three partner organizations — Blindeforbundet, NHF, and the third partner — and is classified as MUST HAVE in every requirements document. Blindeforbundet's peer mentor network includes visually impaired individuals who rely on VoiceOver daily to do their jobs. An inaccessible statistics screen would functionally exclude the very users this platform is built to empower, creating legal exposure under WCAG 2.2 AA compliance obligations and risking reputational damage with accessibility-focused funders and Bufdir. Delivering this story directly protects contract viability, expands the platform's eligible user base to include visually impaired peer mentors, and demonstrates that the product upholds universal design principles at its core rather than as an afterthought.
This is both a values statement and a market requirement.
This story carries critical priority and broad scope — it touches every interactive element on the statistics dashboard, including summary cards, chart components, time window filters, and all controls. Delivery requires coordination between mobile developers (iOS VoiceOver, Android TalkBack), UX/accessibility designers to specify semantic labels and text alternatives, and QA engineers with assistive technology testing expertise. WCAG 2.2 AA audit must be planned as a formal test phase, not a spot-check. Chart text alternatives represent the highest complexity item: each chart type needs a defined data-to-text pattern agreed upon with stakeholders before implementation begins.
Acceptance criteria include contrast ratio validation and configurable sensitive-field warnings, both requiring design and backend input. Estimate two sprints minimum with assistive technology device access provisioned for QA. Rollout should not gate on other statistics features — this must ship together.
Implementation requires systematic accessibility markup across the entire statistics screen component tree. Each summary card needs accessible labels via `accessibilityLabel` (iOS) and `contentDescription` (Android) with dynamic value interpolation, e.g., 'Total activities: 42, for this month'. Chart components (bar, line, pie) must expose an accessible alternative view — likely a toggled data table or screen-reader-only list rendered off-screen — since React Native chart libraries typically have poor VoiceOver/TalkBack support by default. Time window filter controls need `accessibilityRole` and `accessibilityState` (selected/unselected) attributes.
Sensitive field warnings require a configurable flag per field in the org settings schema, evaluated at render time to inject an audible prefix announcement. WCAG contrast ratios must be validated programmatically via automated tooling (e.g., jest-axe or a custom contrast checker) and wired into CI. Edge cases include dynamic data loading states, empty states, and error states — all must have accessible announcements.
Acceptance Criteria
- Given I am using VoiceOver, When I navigate to the statistics screen, Then all summary card values are announced with descriptive labels (e.g., 'Total activities: 42, for this month')
- Given charts are displayed on screen, When a screen reader user navigates to a chart, Then a text-based alternative is available that communicates the same information as the visual chart
- Given I am using a screen reader, When I interact with the time window filter, Then each option is announced with its label and the currently selected state is communicated
- Given all interactive elements on the statistics screen, When focused by a screen reader, Then they have descriptive accessibility labels that convey their purpose without relying on position or visual cues
- Given the statistics screen is rendered, When audited against WCAG 2.2 AA, Then all text and interactive elements meet minimum contrast ratio requirements of 4.5:1 for normal text and 3:1 for large text
- Given statistics contain sensitive contextual data, When the screen reader announces a value, Then a configurable warning is played before fields that may reveal personal health or contact information per org configuration
Business Value
Universal design is classified as MUST HAVE by all three organizations in the requirements. Blindeforbundet's peer mentors include visually impaired individuals who rely on VoiceOver daily. NHF serves members with stroke-related disabilities and cognitive impairments. An inaccessible statistics screen would exclude the very people who are most likely to be peer mentors in these organizations, directly undermining the app's core purpose.
Components
- Semantics Wrapper Widget ui
- Live Region Announcer ui
- Screen Reader Detection Service service
- Semantics Service Facade infrastructure
- Sensitive Field Warning Dialog ui
- Peer Mentor Stats Screen ui
- Stats Summary Cards ui
- Time Window Selector ui
- fl_chart Adapter infrastructure
- Accessibility Live Region Announcer infrastructure