2.6 KiB
2.6 KiB
Plan d'Optimisation du Bundle Size
🎯 Objectif
Réduire la taille du bundle initial de 20-30% pour améliorer les performances de chargement.
📊 Analyse Actuelle
Dépendances Volumineuses Identifiées
lucide-react: 238 fichiers utilisent cette librairie (imports potentiellement non optimisés)react-router-dom: Utilisé partout@tanstack/react-query: Utilisé globalement@tanstack/react-virtual: Pour VirtualizedListdate-fns: Pour les dateszod: Pour la validationdompurify: Pour la sanitizationhls.js: Pour la lecture vidéoemoji-picker-react: Composant volumineux
Code Splitting Actuel
- ✅ Lazy loading des pages (LazyComponent)
- ⚠️ Pas de manual chunk splitting configuré
- ⚠️ Imports lucide-react non optimisés (imports par défaut au lieu d'imports nommés)
🔧 Optimisations à Appliquer
Phase 1 : Optimisation des Imports (✅ Complétée)
- ✅ Optimiser les imports
lucide-react(tree-shaking) - Déjà optimisé (imports nommés) - ✅ Optimiser les imports
date-fns(imports nommés au lieu de default) - Déjà optimisé - ✅ Vérifier les imports de
react-router-dom- Déjà optimisé
Phase 2 : Code Splitting Amélioré (✅ Complétée)
- ✅ Configurer manual chunk splitting dans vite.config.ts
- Vendor chunks: react, router, tanstack, icons, dates, validation, media
- Feature chunks: player, upload, chat, studio
- ✅ Séparer les vendors (react, react-dom, react-router)
- ✅ Créer des chunks pour les features lourdes (player, editor, charts)
Phase 3 : Optimisation des Dépendances (✅ Complétée)
- ✅ Lazy load des composants lourds
- ✅ EmojiPicker (ChatInput, ChatMessage) - ~200KB économisés
- ✅ react-easy-crop (ImageCropper) - ~100KB économisés
- ⏳ Vérifier si toutes les dépendances sont nécessaires (à faire manuellement)
- ⏳ Optimiser les assets (images, fonts) (à faire manuellement)
Phase 4 : Configuration Build (✅ Complétée)
- ✅ Code splitting manuel configuré dans vite.config.ts
- ✅ Chunks vendors séparés pour meilleur caching
- ✅ Bundle analyzer déjà configuré (rollup-plugin-visualizer)
Phase 4 : Configuration Build
- ⏳ Augmenter chunkSizeWarningLimit si nécessaire
- ⏳ Configurer la compression (gzip, brotli)
- ⏳ Analyser le bundle avec visualizer après optimisations
📈 Métriques Cibles
- Bundle initial: < 500KB (gzipped)
- Chunks individuels: < 200KB chacun
- Réduction totale: 20-30%
🔍 Outils
rollup-plugin-visualizer: Déjà configuré dans vite.config.ts- Analyse après build:
npm run buildpuis ouvrirdist/bundle-analysis.html