Context
Without a number, “fast” and “accessible” are opinions and regress silently. Web surfaces target evergreen browsers (Safari 17+), mobile is one Expo app, and both change with every dependency bump. The owner wants budgets agreed now and enforced as each surface appears.Decision
- Accessibility: WCAG 2.2 AA on every web and mobile surface; axe runs in the E2E suite (0069).
- Web Vitals targets for LCP, INP and CLS: the “good” thresholds Google publishes, at the 75th percentile (numbers pinned in
/standards,TODO). - Bundle budget: each web app has a maximum entry JavaScript size per route, set when its first route ships (
TODOnumber). - Mobile startup budget: cold start to interactive on a reference device; number and device
TODO. - A budget is a failing check, not a report. Raising one needs a line in the pull request saying why.
Consequences
- Several numbers are
TODO; a budget with no number checks nothing, so setting them is part of each app’s first release. - Accessibility is paid for in the first component, not retrofitted.