# Frontend — Risques & vigilance : Performance > Extrait de la base de connaissance Lead_tech. Voir `knowledge/frontend/risques/README.md` pour l'index complet. --- ## Performances : sur-renders + bundle non maîtrisé ### Risques - App lente sur mobile - Bundle qui grossit sans contrôle - Chargements inutiles (images, libs) ### Symptômes - Input lag - Temps de chargement qui dérive à chaque feature - Requêtes réseaux inutiles ### Bonnes pratiques / mitigations - Lazy loading routes/features - Mesurer (au minimum) : temps de chargement + re-renders critiques - Politique images (formats, tailles, lazy) - Audit régulier des dépendances --- ## `useCallback` inutile quand le callback est wrappé en inline au render ### Risques - Le handler stable est re-wrappé dans une arrow inline lors du passage en prop → nouvelle référence à chaque render → `React.memo` ne peut pas éviter le re-render ### Symptômes ```tsx const handleToggle = useCallback((id: string) => { ... }, []); // stable ✓ // Mais au render : handleToggle(item.id)} /> // ↑ nouvelle closure à chaque render → memo inutile ``` ### Bonnes pratiques / mitigations - `useCallback` n'a de valeur que si le callback est passé **directement** en prop, sans re-wrapping - Si la signature doit capturer des variables de boucle, deux options : 1. Passer les données en props et laisser l'enfant appeler le handler avec ses propres props 2. Accepter que `memo` ne soit pas protégé et supprimer le `useCallback` inutile - Ne pas laisser un `useCallback` "pour faire bien" si son effet réel est nul - Contexte technique : React — app-template-resto 22-03-2026