| name | perf |
| description | Audit et optimisation des performances SaaS. Bottlenecks DB, bundle, Server Components, background jobs. Next.js + Supabase. |
Phase 1 â Identifier les bottlenecks
Lancer d'abord :
python scripts/project_health.py
Web App (Next.js) :
- Server Components vs Client Components inutiles (
"use client" abusif ?)
- Re-renders inutiles (props instables, Context trop large)
- N+1 queries (boucle avec query DB à chaque itération)
- Images non optimisées (pas de
next/image)
- Composants lourds non lazy-loadés (
dynamic(() => import(...)))
- Bundle size : analyser
next build output â alerter si JS client > 500KB
- Pas de
cache() sur les Server Components qui refetch les mĂȘmes donnĂ©es
API + DB :
- Index manquants sur FK et champs de recherche fréquents
- Endpoints sans pagination (retournent tout)
- OpĂ©rations lentes dans le handler (email, PDF, webhook) â doivent ĂȘtre async
- Connection pooling Supabase : utiliser le pooler (port 6543), pas direct
Background jobs :
- Emails, webhooks, exports PDF, traitements IA â ne JAMAIS bloquer le handler
- Solutions recommandées : Trigger.dev v4 ou Inngest (voir
docs/integrations/ai-tools-2026.md)
- Pattern :
POST /api/invoice â crĂ©er job â return 202 â Trigger.dev exĂ©cute en fond
Edge :
- Endpoints lĂ©gers (auth check, redirects) â Edge Runtime (
export const runtime = 'edge')
- DB géo-distribuée pour faible latence globale : Turso (SQLite edge) ou Neon (serverless Postgres)
Phase 2 â Quick wins (par ordre d'impact)
- Index DB manquants â impact immĂ©diat, 0 code Ă changer
CREATE INDEX ON public.invoices (organization_id, created_at DESC);
- Pagination sur tous les endpoints de liste (
limit + cursor)
- Lazy load composants lourds (éditeurs, charts, maps)
- Cache React Query :
staleTime: 5 * 60 * 1000 sur les queries stables
- next/image pour toutes les images + formats WebP/AVIF
- Debounce les inputs de recherche (300ms)
- Passer en async les opĂ©rations lentes (email â Resend en background)
Phase 3 â Optimisations avancĂ©es
- Streaming + Suspense : perceived performance sur les pages lentes
- ISR : contenu semi-statique avec
revalidate
- PgBouncer / Supabase pooler : connection pooling DB (déjà intégré Supabase)
- Trigger.dev : background jobs pour tùches IA longues (génération, analyse)
Output
Rapport avec :
- Bottlenecks identifiés par sévérité (CRITICAL / WARNING / INFO)
- Quick wins appliqués immédiatement
- Recommandations pour les optimisations avancées + estimation d'impact