Consultant web performance expert Medusa.js
Optimiser la web performance des boutiques Medusa.js
Medusa.js est le headless commerce TypeScript le plus modulaire du marché, mais l'addition catalogue volumineux + workflows synchrones + storefront Next.js mal cadré fait monter le TTFB et casse les Core Web Vitals. J'interviens sur le backend Medusa et le storefront pour livrer une expérience e-commerce rapide et stable.
Ils me font confiance
Les symptômes Medusa.js qui appellent un audit
Les boutiques Medusa.js mal cadrées présentent des goulets caractéristiques sur le pricing engine, les workflows synchrones et le storefront Next.js.
💰 TTFB API qui dérive sur les listings produits
Le pricing engine résout les règles à chaque carte produit sans cache. Cache Redis sur les prix stables (par region/currency) descend le TTFB des endpoints catalogue de 40 à 70%.
🔁 Requêtes Postgres en N+1 sur variants et options
Sans relations ciblées, charger un produit déclenche des requêtes en cascade sur variants, prices, inventory, images. Le profil pg_stat_statements expose les patterns. select ciblé + index manquants posés stabilisent les requêtes catalogue.
📧 Workflows synchrones sur création de commande
Capture paiement + email confirmation + sync ERP + index search en synchrone ajoute 500ms à 2s au temps de réponse. Le découpage Subscribers + Redis events déplace tout ce qui peut l'être hors du flux critique.
🔎 Index Meilisearch ou Algolia rebuild en synchrone
Chaque update produit déclenche un rebuild d'index dans le flux admin. Le passage en queue async (BullMQ ou Redis Streams) libère le backend et évite les pics CPU à chaque catalog import.
📦 Storefront Next.js sans ISR ni RSC discipliné
revalidate: 0 partout, hydration totale, payment SDK chargé sur la home. Pose ISR sur les pages catalogue + produit, RSC + streaming, dynamic import sur les SDK paiement. LCP storefront descend sous 1.5s.
🖼️ Images produits non-optimisées, CDN absent
Images servies en JPEG depuis le bucket sans transformation. Pose Sharp pipeline + AVIF/WebP, CDN frontal (Bunny, Cloudflare, Vercel) avec cache long, sizes responsives strictes. Le LCP catalogue se stabilise.
Méthodologie d'optimisation Medusa.js
4 étapes pour transformer votre performance
1. Profiling Postgres et logger Medusa
Identification des requêtes lentes via pg_stat_statements, des N+1 sur variants/prices/inventory, des workflows trop synchrones. Cartographie des endpoints API les plus appelés et de leur impact LCP storefront.
2. Optimisation pricing et catalogue
Cache Redis sur les calculs de prix stables, select + relations ciblés sur les listings, indexes Postgres manquants (region_id, customer_group_id), pagination cursor sur les très gros catalogues.
3. Découpage workflows et events
Étapes critiques en synchrone (paiement, stock), étapes secondaires en async via Subscribers + Redis events (emails, sync ERP, index search). Rebuild d'index Meilisearch/Algolia en queue dédiée.
4. Storefront Next.js et CDN
Bascule ISR sur catalogue et produit, RSC + streaming sur les pages riches, dynamic import des SDK paiement, pipeline images Sharp + AVIF, CDN frontal avec cache long sur assets et HTML cacheable.
1. Profiling Postgres et logger Medusa
Identification des requêtes lentes via pg_stat_statements, des N+1 sur variants/prices/inventory, des workflows trop synchrones. Cartographie des endpoints API les plus appelés et de leur impact LCP storefront.
2. Optimisation pricing et catalogue
Cache Redis sur les calculs de prix stables, select + relations ciblés sur les listings, indexes Postgres manquants (region_id, customer_group_id), pagination cursor sur les très gros catalogues.
3. Découpage workflows et events
Étapes critiques en synchrone (paiement, stock), étapes secondaires en async via Subscribers + Redis events (emails, sync ERP, index search). Rebuild d'index Meilisearch/Algolia en queue dédiée.
4. Storefront Next.js et CDN
Bascule ISR sur catalogue et produit, RSC + streaming sur les pages riches, dynamic import des SDK paiement, pipeline images Sharp + AVIF, CDN frontal avec cache long sur assets et HTML cacheable.
Engagements de la mission
Questions fréquentes
Medusa.js v2 est-il prêt pour la production ?
Quelle BDD pour Medusa : Postgres seul ou +Redis ?
Faut-il forcément un storefront Next.js ?
Comment se structurent vos accompagnements Medusa.js ?
Faire baisser votre TTFB Medusa.js
Données 2023-2026
Ce qu'en disent mes clients
Excellent travail.
Paul a nettement amélioré la vitesse du site et l’a parfaitement aligné avec les recommandations Google.
Professionnel, rigoureux et efficace, je recommande vivement.
Nicolas - April Moto
Directeur digital & e-commerce
Nous sommes très satisfaits du travail de Paul. Il se montre rapide, disponible et particulièrement efficace. Depuis son arrivée, de très bons résultats ont été constatés, tant en termes de performance que de réactivité. Un vrai atout pour notre équipe.
Léo - Maison de luxe
E-commerce Product Owner
Je sais pas si on l'a assez répété.
Mais si vous voulez améliorer votre vitesse de chargement,
Faire plaisir à Google et mettre vos Signaux Web Essentiels dans le vert,
Contactez Paul Delcloy.
Florian Darroman - Les Makers
Co-fondateur
Medusa.js, headless commerce modulaire et perf à cadrer
Medusa.js s'est imposé comme l'alternative open-source à Shopify pour les équipes qui veulent contrôler leur stack e-commerce de bout en bout. La version 2.0 réécrit le cœur en architecture modulaire (Modules, Workflows, Links), avec une séparation stricte backend / storefront — typiquement un storefront Next.js qui appelle l'API Medusa via le Store API ou les Server Actions.
Cette modularité est une force de design, mais ouvre quelques angles de dette performance qui se cumulent dès que le catalogue dépasse quelques milliers de produits ou que le trafic monte. L'angle d'optimisation web performance sur Medusa est multi-couche : Postgres profilé sur les requêtes catalogue et pricing, Redis configuré pour le cache et les events, workflows découpés entre synchrone et async, storefront Next.js en ISR ou streaming avec un budget JS strict.
Pricing engine et catalogue, premier chantier
Le pricing engine Medusa résout des règles complexes (price lists, currencies, customer groups, region, sales channel) à chaque requête. Sur un listing produits avec 50 cartes affichant les prix, le calcul peut générer des requêtes en cascade si les relations ne sont pas pré-chargées correctement.
Le diagnostic via le logger Medusa et le profiler Postgres (pg_stat_statements, EXPLAIN ANALYZE) expose les requêtes lentes immédiatement. Le passage en select + relations ciblés au lieu d'un fetch complet, plus le cache Redis sur les calculs de prix stables, descend le TTFB API de 40 à 70% sur les endpoints catalogue. Sur les boutiques à fort SKU, c'est souvent le levier qui fait passer le storefront au vert sur LCP.
Workflows et events, async par défaut
Medusa 2.0 introduit le Workflow Engine, qui orchestre les opérations multi-étapes (création de commande, refund, capture paiement) avec idempotence et compensation. C'est puissant, mais un workflow mal découpé exécute en synchrone des étapes qui devraient être async : envoi d'emails de confirmation, sync vers un ERP, mise à jour d'index Meilisearch ou Algolia.
Le refactor — étapes critiques en synchrone (capture paiement, stock), étapes secondaires en async via Subscribers + Redis events — descend la latence ressentie de la création de commande de plusieurs centaines de ms. C'est la même logique que les queues Laravel, mais portée par le workflow primitives de Medusa.
Storefront Next.js, le terrain Core Web Vitals
Le storefront est typiquement séparé du backend (Next.js, Remix, Astro). C'est là que se joue le LCP, le CLS et l'INP que Google mesure. Les pièges classiques : revalidate: 0 partout au lieu d'ISR sur les pages catalogue, hydration totale au lieu de RSC + streaming, payment SDK Stripe ou PayPal chargé sur la home alors qu'il n'est utile qu'au checkout.
L'audit storefront couvre le bundle JS (250 ko gzip cible sur la home), les images produits (format AVIF, sizes corrects, lazy au-dessous du fold), le cache CDN sur les pages produits, et le découpage RSC/Client précis. Sur un Next.js storefront Medusa correctement cadré, on tient un LCP sub-1.5s et un INP sub-200ms même sur 3G mobile.
Autres expertises framework
Angular
Angular optimisé : lazy modules, OnPush change detection, SSR Universal ou Analog, signals, zone.js élimination. Core Web Vitals stables sur SPA enterprise.
DécouvrirAstro
Astro optimisé : islands architecture, image optimization, view transitions, content collections. Sites quasi-statiques avec Core Web Vitals au vert.
DécouvrirDrupal
Drupal optimisé : Render API et cache contexts, Dynamic Page Cache + BigPipe, Views performance, MySQL tuning. Core Web Vitals au vert sur les templates stratégiques.
Découvrir