Performance
- Lighthouse audit — 90+ on every metric.
- Bundle analyzer run; no surprises in client chunks.
- Heavy libraries are in Server Components only.
preloadon above-the-fold images.next/fontfor all fonts.- Caching strategy explicit per route.
SEO
- Metadata on every page (title, description, OG).
app/sitemap.tsgeneratessitemap.xml.app/robots.tsdefines crawl rules.- OG images render correctly (Twitter Card validator).
Security
- Security headers (CSP, X-Frame-Options, HSTS) in
next.config.ts. - No secrets in any
NEXT_PUBLIC_variable. - Server Actions validate input + check auth.
- Latest Next.js minor for security patches.
Error handling
- Custom
not-found.tsx. error.tsxat the app root.global-error.tsxfor the root layout.- Error tracker (Sentry) wired up.
Accessibility
- All images have
alt. - All inputs have labels.
- Keyboard navigation works.
- Color contrast passes WCAG AA.
- Screen reader sweep done.
Make the production checklist release-specific and evidence-bearing. Every item should name the command, URL, screenshot, log, or metric that proves it against the current commit, plus an owner and an expiration condition for evidence that can go stale. More checked boxes do not make a release safe when the product's critical journey is absent. Start with one path from entry to completed goal, then use performance, SEO, accessibility, security, caching, and recovery checks to protect that path. Run the checklist against one deployed SHA and attach the resulting URLs or logs. Complete the critical transaction with keyboard and screen reader, inspect real response headers and error recovery, fix failures, and rerun the same checks before promotion.