inclusion-numerique / mon-suivi-social

GNU Affero General Public License v3.0
5 stars 0 forks source link

Development experience is very slow #50

Open hugues-m opened 1 year ago

hugues-m commented 1 year ago
hugues-m commented 1 year ago

Server compilation using external packages : (externalServerPackagesForFasterDevUx in next.config.js) / beneficiaires : 2600 modules => 2100 modules

hugues-m commented 1 year ago

No prefetch: ok

hugues-m commented 1 year ago

modularized import of date-fns
/beneficiaries: 2200 modules => 1653 modules (!)

hugues-m commented 1 year ago

Hello,

J'ai mergé sur dev des améliorations de perf, vous devriez voir une différence significative mais ca ne résoud pas tout. J'ai des pistes pour améliorer cela encore.

Les lenteurs sont liées au nombre de modules compilés pour chaque page. La logique étant la meme que ce soit le dossier "pages" ou le dossier "app" qui soit utilisé pour le routing, je pense que le switch vers "pages" ne pourrait pas changer grandement le temps de compilation.

Pour éviter de compiler trop de module, j'ai désactivé la compilation des modules serveur en développement pour utiliser directement les fichiers node_modules au maximum

Pour les modules frontend, j'ai utilisé le principe de l'import modularization pour éviter de compiler toute une librairie externe lorsqu'on utilise juste une partie (le tree shaking ne se fait pas en env de développement)

Pour éviter les renders à répétition, maintenant les composants Link doivent etre importés depuis import { Link } from '@mss/web/components/Generic/Link' et non next/link pour pouvoir changer le comportement de prefetch. Pour le desactiver, ajoutez la variable NEXT_PUBLIC_DEVELOPMENT_DISABLE_LINK_PREFETCH=true dans votre .env (cela n'affecte pas le build de prod)

Je vois une grosse différence sur mon poste, j'espère que pour vous aussi, tenez moi au courant !