> This document is authoritative. If implementation contradicts this guide, update the guide or refactor the code.Location:
src/components/
Naming:
PascalCase.astro
Use Astro components when:
- No client-side state is required
- Rendering static UI
- Wrapping USWDS classes
- Building layout structures
Use React only when:
- State is required
- Effects are required
- Browser APIs are required
- Component must respond to user interaction
Location:
src/components/
Does it require interactivity?
- No → Astro component
- Yes → continue
Does USWDS provide static HTML?
- Yes → Astro component
- No → continue
Does @trussworks/react-uswds provide it?
- Yes → Use it
- No → Build custom React component
Before creating any component:
- Check USWDS documentation
- Use USWDS class utilities
- Wrap in Astro if reused
- Only then consider React
- Prefer USWDS classes
- Avoid global CSS
- Scope custom styles to components
- Do not override USWDS core styles
This becomes your guardrail document for PR reviews.