veza/apps/web/OPTIMISATIONS_BUNDLE_APPLIQUEES.md

2.4 KiB

Optimisations du Bundle Size - Résumé

Optimisations Appliquées

1. Code Splitting Manuel (vite.config.ts)

  • Configuration de manualChunks pour séparer les vendors :

    • vendor-react: React et React DOM
    • vendor-router: React Router
    • vendor-tanstack: TanStack Query et Virtual
    • vendor-icons: Lucide React (238 fichiers utilisent cette librairie)
    • vendor-dates: date-fns
    • vendor-validation: zod
    • vendor-media: hls.js
    • vendor: Autres dépendances node_modules
  • Chunks pour les features lourdes :

    • feature-player: Composants de lecteur audio
    • feature-upload: Composants d'upload
    • feature-chat: Composants de chat
    • feature-studio: Composants de studio

2. Lazy Loading des Composants Lourds

  • EmojiPicker (~200KB) : Lazy load dans ChatInput et ChatMessage

    • Économie : ~200KB sur le bundle initial
    • Chargé uniquement quand l'utilisateur ouvre le picker d'emoji
  • react-easy-crop (~100KB) : Lazy load dans ImageCropper

    • Économie : ~100KB sur le bundle initial
    • Chargé uniquement quand l'utilisateur ouvre le recadreur d'image

3. Optimisations des Imports

  • Imports lucide-react déjà optimisés (imports nommés pour tree-shaking)
  • Imports date-fns déjà optimisés (imports nommés)
  • Code splitting des pages déjà en place (LazyComponent)

📊 Résultats Attendus

Avant Optimisations

  • Bundle initial : ~800-1000KB (estimé)
  • Composants lourds inclus dans le bundle initial

Après Optimisations

  • Bundle initial : Réduit de ~300KB (EmojiPicker + react-easy-crop)
  • Chunks vendors séparés pour meilleur caching
  • Chunks features pour chargement à la demande

🔍 Analyse du Bundle

Pour analyser le bundle après build :

npm run build
# Ouvrir dist/bundle-analysis.html dans le navigateur

Le fichier bundle-analysis.html est généré automatiquement en production grâce à rollup-plugin-visualizer.

📈 Prochaines Optimisations Possibles

  1. Lazy load VirtualizedList : Si utilisé rarement
  2. Optimiser les assets : Compresser les images et fonts
  3. Vérifier les dépendances : S'assurer que toutes sont nécessaires
  4. Preload stratégique : Preload des chunks critiques

🎯 Objectif Atteint

  • Code splitting amélioré
  • Lazy loading des composants lourds
  • Séparation des vendors pour meilleur caching
  • Configuration prête pour analyse avec visualizer