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.

100% de clients satisfaits Données 2023-2026 8+ ans XP 35+ clients accompagnés
Voir mes cas clients

Ils me font confiance

CHANEL
DIOR
Decathlon
April Moto
SiriusXM
Make Up Forever
Camif
RIMOWA
Jimmy Fairly
Wecasa
Chronovet
CHANEL
DIOR
Decathlon
April Moto
SiriusXM
Make Up Forever
Camif
RIMOWA
Jimmy Fairly
Wecasa
Chronovet

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
Étape 1

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
Étape 2

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
Étape 3

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
Étape 4

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

-50% TTFB API Medusa typique
Pricing cache Redis posé
Async workflows découpés
Continu stack profilée sur chaque release
FAQ

Questions fréquentes

Medusa.js v2 est-il prêt pour la production ?
Oui, sur des stacks correctement cadrées. La v2 est en production sur plusieurs boutiques significatives depuis fin 2024. Les chantiers perf sont stabilisés (Module Architecture, Workflow Engine, Links). Sur un projet neuf, c'est la base par défaut — sur une migration v1 vers v2, l'audit identifie les modules custom qui demandent un refactor.
Quelle BDD pour Medusa : Postgres seul ou +Redis ?
Postgres est obligatoire (le data store principal). Redis est techniquement optionnel mais en pratique indispensable dès qu'on dépasse quelques centaines de commandes par jour : cache prix, sessions, event bus, queues workflows. Sans Redis, le pricing engine et l'event bus tapent Postgres directement et le TTFB dérive rapidement.
Faut-il forcément un storefront Next.js ?
Non. Medusa expose un Store API REST consommable depuis n'importe quel front (Next.js, Remix, Astro, Nuxt, mobile natif). Le starter officiel est Next.js, et c'est ce que je recommande sur la majorité des projets pour la maturité de l'écosystème React e-commerce. Sur un projet majoritairement contenu + commerce, un storefront Astro reste pertinent.
Comment se structurent vos accompagnements Medusa.js ?
Mes accompagnements Medusa s'inscrivent en sprints continus. Le sprint initial cadre l'architecture (modules, workflows, cache Redis, storefront) et la roadmap. Les sprints suivants déroulent les optimisations backend + storefront avec mesure avant/après. Une boutique Medusa active évolue à chaque release — la dette catalogue et la dette JS storefront se reconstituent si personne ne les surveille.

Faire baisser votre TTFB Medusa.js

Pricing engine cache
Workflows async
Storefront Next.js optimisé
100% de clients satisfaits
Données 2023-2026
Témoignages

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.