Saleor vs Medusa

Architecture decision record. Full analysis in platform-eval-comparison.

Decision

Medusa v2 with Solace starter + Fashion’s MeiliSearch module.

Initially chose Saleor for Paper (storefront), but reversed after detailed starter audits. See platform-eval-comparison for the full evaluation of 6 starters across both platforms.

Context

The webshop was a custom Next.js storefront using Square as commerce backend. It worked but had scaling issues: no customer accounts, no CMS, manual inventory, and heavy frontend lift for every feature. Two commerce platforms were evaluated to replace the custom approach.

Why Medusa Won

  1. 2 fewer services to deploy — integrations (Square sync, Ingram enrichment, payments) run in-process as modules/subscribers, not standalone apps. 4 Railway services vs 6+.
  2. Stripe + PayPal already working in Solace starter (Saleor Paper ships with dummy payment)
  3. Node.js backend — same language as storefront, team is JS-oriented
  4. ~600 fewer LOC for custom integrations (~1,000 vs ~1,600)
  5. Solace starter provides CMS pages (Strapi, swapping to Payload), blog, dark mode, lightbox gallery; Fashion’s MeiliSearch module adds autocomplete search

What Saleor Did Better

  • JSON-LD structured data (needs ~100 LOC to add to Solace)
  • Attribute-based faceted filtering (Medusa needs custom module work)
  • Dynamic OG images (nice-to-have)

Trade-offs Accepted

  • MeiliSearch adds a service (vs Saleor’s built-in search)
  • Solace SEO is thinner than Paper’s (JSON-LD, OG gaps — budgeted half-day fix)
  • Medusa v2 is newer, less battle-tested than Saleor