This document replaces the old checklist/changelog with a living reference for how we monitor and improve ignitionstack.pro performance. It covers the observability pipeline (Lighthouse, Chrome DevTools, MCP automations), the tech-specific guardrails woven into ../src, and how to react when metrics regress.
| Metric | Target | Tools |
|---|---|---|
| Largest Contentful Paint (LCP) | < 2.5s on 4G/CPU Slowdown 4x | Lighthouse CI, PageSpeed Insights |
| First Input Delay / Interaction to Next Paint | < 100ms | Chrome DevTools Performance panel, Web Vitals logger |
| Time to Interactive | < 3.5s | Lighthouse, DevTools trace flamegraph |
| Cumulative Layout Shift | < 0.1 | Chrome Layout Shift overlay, Next Image layout hints |
| Bundle Size (main/app) | < 350 KB gz | npm run build:analyze (Webpack analyzer) |
| Server Response | < 200 ms p95 | Supabase logs, Next.js telemetry |
We enforce these through automated runs (Lighthouse CLI, Playwright/perf in CI) and manual spot-checks every release.
npx lighthouse http://localhost:3000 --view --preset=desktop for local scoring./, /blog, /store, /chat with budgets../performance-reports/ if they trigger action items.next/image placeholders handle LCP elements.supabase db logs --since 1h and Investigate EXPLAIN ANALYZE in the Dashboard SQL editor./content/guides/projects-setup.mdx exist; if not, add migrations.npm run build:test + npm run e2e and capture performance telemetry before merging heavy features.AI/) provide summary comments of lighthouse regressions on pull requests.src/app/server/** wraps Supabase calls in React cache() + tag-based unstable_cache. Mutations must call revalidateTag or revalidatePath so ISR caches stay fresh.src/app/[locale]/(pages) use Server Components by default. Client islands ("use client") exist only for interactive surfaces (chat, analytics, forms).next/image everywhere, with sizes tuned per layout and priority on hero banners. Asset pipeline uses npm run optimize:images before release.globals.css reduce layout shift by ensuring height/spacing tokens align across breakpoints.next.config.ts sets stale-while-revalidate headers, caches fonts/images aggressively, and strips unused locales.next/script loads GA and Mixpanel only when NEXT_PUBLIC_APP_ENV !== 'development'; window.gtag lazily loads after painting.npm run dev + npm run build:test (if regression shows only in prod) and open Chrome DevTools..json trace to /performance-traces/issue-[id].json.pnpm supabase db show to profile slow endpoints.npm run build:analyze and compare stats.html with previous release; ensure dynamic imports isolate heavy feature code.React.cache + unstable_cache wrappers; keep TTL conservative (30–3600s) and tag names documented.Promise.all for independent fetches; never await sequentially unless results depend on each other.IntersectionObserver from src/app/components/motion/scroll-reveal.tsx.React.memo and useMemo; lazily import large libraries.useFormField, useAsyncAction) to minimize re-render chains.placeholder="blur" and correct sizes attributes; store optimized assets under public/assets/....WebVitals component to GA4 + internal API; check /analytics/events for instrumentation specs.src/app/test/e2e/tests/accessibility.spec.ts, navigation.spec.ts, etc.) ensure UI interactions stay within <100ms response budget.npm run e2e:debug with CPU throttling to reproduce field conditions.Keep this page up to date whenever new diagnostic scripts, MCP tools, or architectural guardrails land so all contributors share the same performance toolbox.