SPArtacUX, le projet qui a ramené la performance web au coeur de l’UX ManoMano
Présentation
Qui suis-je ?
Dévelopeur JavaScript (TypeScript) full-stack
6 ans d’expérience (professionelle)
Membre de l’équipe Platform-Engineering chez
josselinbuils
josselinbuils
josselinbuils.me
Contexte
L’épopée React chez ManoMano
On a besoin d’une stack front plus évolutive et qui permet de recruter plus facilement.
On a besoin de compatibilité SEO
et de plus d’autonomie pour les équipes.
+ Monolithe React
Monolithe
PHP/JS
+ Micro front-ends
Contexte
Impact sur la performance
Performance
Moyenne
Très moyenne
Un “détail” que nous avons quelque peu sous-estimé:
🐌
🐢
Product Page
Pourquoi ?
Contexte
C’est si important que ça la performance ?
Oui !
Une bonne performance signifie:
Contexte
SPArtacUX
Pour tacler ces problèmes de performance, on a décidé de repartir d’une base saine, et ainsi naquit:
Single Page Application
User eXperience
SPArtacUX
Objectifs:
Contexte
Stack front
Pour avoir un socle fiable et performant ➜ Next.js, un framework React fournissant de nombreuses fonctionnalités comme le Server Side Rendering.
Pour rendre notre code plus robuste ➜ TypeScript, le langage de programmation typé transpilé en JavaScript.
Pour améliorer la gestion des styles ➜ Sass, le langage de script transpilé en CSS.
Performance
Par où commencer ? Par la mesure !
On mesure les Web Vitals, et plus particulièrement les Core Web Vitals.
Mais pas que ! Par exemple, on mesure aussi la taille des bundles JavaScript.
Performance
Comment on mesure ?
Beaucoup de choix mais pas forcément toujours pertinent.
Mesures ponctuelles
Lighthouse
WebPageTest
Real User Monitoring (RUM)
Chrome UX Report
Webpack Bundle Analyzer
Chrome
DevTools
Performance
Visualisation des mesures
DASHBOARDS
On utilise principalement des dashboards Datadog pour visualiser nos mesures de performance.
RAPPORTS
On génère aussi quelques rapports statiques.
Performance
Optimisation
TRACKING ALLÉGÉ
UTILISATION MASSIVE DU CACHE CDN
INTERFACE SIMPLIFIÉE ET RESPONSIVE
CDN
backend
❌
CHARGEMENT OPTIMISÉ DES ASSETS
Performance
Optimisation
LAZY LOADING
RÉDUCTION DE LA TAILLE DU DOM
OPTIMISATION DU CODE SPLITTING
LAZY HYDRATION
index.ts
index.ts
index.ts
❌
Pré-rendu côté serveur mais chunks JavaScript chargés au scroll côté client.
Réduction de la quantité de JavaScript inutilisée.
div
div
div
❌
Résultat
Comparons un parcour utilisateur
Résultat
Comparons un parcour utilisateur
Résultat
Quelques chiffres
CUSTOMER EFFORT SCORE
PAGES PERFORMANTES (Google)
TAUX DE CONVERSION
CLASSEMENT JDN E-COMMERCE
67,5
+8,5%
99,8%
+5,6 points
page d’accueil
0% avant
3ème
18ème en janvier
Résultat
Prochaine étape
Micro front-ends
Merci de votre attention 😁
Merci à Alexandre Sutra, Benjamin Aubertel et Lionnel Dupouy pour leur aide ❤️