Overview › Accessibility (a11y)
Accessibility (a11y)
Almost zero contentDescription / semantics usage in Compose layer.
35
SCORE
Summary
Accessibility is the weakest category in this review. A grep for contentDescription and semantics { across Kotlin files returned essentially zero matches. TalkBack support is therefore likely broken across most Compose UI.
Findings
CRITICALNo
No contentDescription / Compose semantics adoption
Search for
contentDescription = and semantics { in .kt files returned 0 matches. Every Image, Icon, IconButton, and clickable Composable should have a description or be marked decorative.Recommendation: Run a one-time codemod adding
contentDescription = stringResource(...) on every Image/Icon; for decorative images use contentDescription = null intentionally; for clickable rows add semantics { contentDescription = ... }.HIGH
Touch target sizes
Without spot-checks, it is unsafe to assume the 48dp x 48dp minimum is met for icon buttons and chips.
Recommendation: Establish a
MinTouchTargetModifier and apply via design-system; verify with Compose UI tests using assertTouchTargetSizeIsAtLeast.HIGH
Color contrast on tokens
Confirm pallet color tokens meet WCAG AA (4.5:1 for body text, 3:1 for large text).
Recommendation: Snapshot-test palette ratios; flag failing combos at design-token build time.
MEDIUM
Dynamic font scaling
Verify text uses
sp not dp and respects fontScale up to 200%.Recommendation: Add a font-scale = 2.0 preview to the design system catalog.
MEDIUM
RTL support
No RTL-locale resources detected (only en, en-rCA, fr, fr-rCA). If future markets include Arabic/Hebrew, RTL layout regressions will surface.
Recommendation: Audit padding/start-end usage; switch all
paddingHorizontal to start/end-aware modifiers.Costco Android · Code Review Report · Generated 2026-05-07 · 626 machine-curated findings