Deux vues du dashboard React (Projets et Résultats), refaites en Angular sur la même API JSON statique. Les types, les calculs, les échelles des graphiques, les textes et les styles sont partagés : seul le framework change, et la comparaison porte sur lui.
Vue Projets, thème sombre : les filtres sont des signaux, la liste un computed.Vue Résultats, thème clair : mêmes données, mêmes échelles que le dashboard React, rendues par des composants Angular.
Mesure
React
Angular
Version
React 19.3.0
Angular 22.2.1
Chargé à l'ouverture, compressé
79,7 ko
90,6 ko
Build de production (médiane de 3)
1,4 s
5,2 s
Lignes propres au framework (les deux vues et leur cadre)
499
546
Tests unitaires et d'intégration
40
11
Paquets npm installés, outillage compris
157
936
Mesuré par projects/angular/scripts/compare.mjs le 2026-10-07 sur Intel(R) Core(TM) i5-10400F CPU @ 2.90GHz. Code partagé, compté à part : 582 lignes. Le chargement React couvre aussi la vue Sprints, sans la visionneuse 3D (chargée à la demande) ; ses tests couvrent ses quatre vues ; les paquets Angular comprennent Jest et Cypress. Les builds vérifient les types dans les deux cas.
Ce qui change vraiment
État : hooks (useState, useMemo) côté React ; signaux (signal, computed, linkedSignal) côté Angular, qui ne recalculent que ce qui dépend d'eux, sans zone.js.
Données : un hook maison charge l'API d'un bloc côté React ; un httpResource par fichier côté Angular, avec chargement, erreur et rechargement fournis.
Navigation : le fragment d'URL lu à la main côté React ; le routeur d'Angular, avec pages chargées à la demande et lien actif marqué tout seul.
Tests : Vitest et Testing Library côté React ; Jest, TestBed et le contrôleur HTTP de test d'Angular, plus Cypress de bout en bout. Un piège propre à Angular, un menu lié avant ses options, a été trouvé et fixé par un test.
Technologies
Angular
TypeScript
Jest
Cypress
Qui fait quoi
Angular
Deux vues du dashboard en composants autonomes à signaux, sans zone.js, avec httpResource et le routeur.
TypeScript
Les types, les calculs et les textes partagés avec le dashboard React.
Jest
Les tests unitaires, et d'intégration sur la vraie API du site.
Cypress
Les tests de bout en bout : langues, thèmes, accessibilité, 375 px de large.