| Financial data display (amounts, balances) | Component using Intl.NumberFormat with explicit locale and currency; zero and negative amount handling; unit tests for edge cases (zero, negative, large numbers, multiple locales) |
| Transaction list or history | Paginated table with <th scope="col"> and aria-sort, cursor-based pagination, empty state message, aria-live="polite" for real-time updates, and accessible row focus management |
| Payment form | Multi-step flow with progress indicator, on-blur inline validation, specific error messages, confirmation step before irreversible action, disabled submit during processing |
| Sensitive data display (card numbers, account numbers) | Masked default state per the Sensitive Data Display table; reveal toggle requiring explicit user action; no console.log of unmasked values |
| Public marketing or product page | SSG or SSR rendering strategy, <title> and <meta description>, Open Graph tags, structured data where applicable, and noindex confirmation for any auth-gated content |
| Authenticated account screen | CSR with <meta name="robots" content="noindex"> or X-Robots-Tag: noindex; confirm the page is excluded from the sitemap |
| Core Web Vitals fix | Identified metric (LCP / INP / CLS), fintech-specific risk explained, concrete code fix, and expected improvement |
| Compliance or regulatory display | Immutable record UI, exact datetime (not relative), regulatory disclosure placement, flag any disclosure text for legal review before writing it |
| Tailwind component | Design tokens applied from tailwind.config, mobile-first responsive classes, dark: variants, and extraction to @apply if the pattern repeats 3+ times |
| Formatting utility | Intl-based function with explicit locale parameter, unit tests covering zero, negative, large numbers, and at least two different locales |