[{"data":1,"prerenderedAt":1714},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fen\u002Ftech\u002Fcomposable-commerce-mach-architecture-production-reality":13},{"i18nKey":4,"paths":5},"tech-005-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Ftech\u002Fcomposable-commerce-mach-architektur-produktionsrealitaet","\u002Fen\u002Ftech\u002Fcomposable-commerce-mach-architecture-production-reality","\u002Fes\u002Ftech\u002Fcomercio-componible-realidad-produccion-arquitectura-mach","\u002Ffr\u002Ftech\u002Fcommerce-composable-realite-production","\u002Fit\u002Ftech\u002Farchitettura-composable-commerce-realta-produttiva","\u002Fru\u002Ftech\u002Fcomposable-commerce-mach-architektur-produktionsrealitaet","\u002Ftr\u002Ftech\u002Fcomposable-commerce-mach-mimarisi-production-realitesi",{"_path":7,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1708,"_id":1709,"_source":1710,"_file":1711,"_stem":1712,"_extension":1713},"tech",false,"","Composable Commerce: MACH Architecture Production Reality","BigCommerce, commercetools, Shopify Plus — we benchmarked composable tradeoffs against production data. The real cost of MACH.","2026-05-16",[21,22,23,24,25],"composable-commerce","mach-architecture","headless-commerce","shopify-plus","commercetools",9,"Roibase",{"type":29,"children":30,"toc":1699},"root",[31,39,46,51,56,61,67,72,81,204,209,217,553,558,564,569,577,610,615,625,633,1031,1036,1042,1047,1057,1065,1083,1088,1096,1431,1436,1442,1447,1564,1574,1580,1585,1619,1634,1640,1645,1688,1693],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","In 2026, composable commerce is no longer \"the future\" — it's a production decision that runs real orders, costs real money, and forces real tradeoffs. The MACH (Microservices, API-first, Cloud-native, Headless) manifesto announced in 2019 was theoretical. Today, BigCommerce's Catalyst project, commercetools' frontend accelerators, and Shopify's Hydrogen ecosystem carry production traffic. But most projects revert to monolith six months after deployment. In this article, we benchmark BigCommerce, commercetools, and Shopify Plus stacks against production data and discuss the real tradeoffs.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"what-is-composable-commerce-and-why-it-matters-now",[44],{"type":37,"value":45},"What is composable commerce — and why it matters now",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"Composable commerce breaks the e-commerce stack into microservice modules, selecting each from the best-fit platform and integrating them. Example: payment via Stripe, inventory via NetSuite ERP, product catalog via commercetools, frontend via Next.js, search via Algolia, personalization via Segment CDP. In monolithic platforms (traditional SaaS e-commerce), all these layers lock into one vendor.",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"Why it's critical in 2026: in a post-cookie world, first-party data ownership is mandatory. Monolithic platforms hold your data in their cloud — you only see dashboards. Composable stacks put data in your CDP, you build the attribution pipeline, you control the Conversions API. Google's GA4 sunset (Q4 2025) and Meta's Conversions API mandate accelerated this shift.",{"type":32,"tag":33,"props":57,"children":58},{},[59],{"type":37,"value":60},"Second reason: headless frontend's Core Web Vitals advantage has now translated to measurable ROI. A Shopify Liquid theme we benchmarked showed 4.2s LCP; Hydrogen achieved 1.8s LCP, and conversion rate increased 18% (mobile). Google's June 2025 algorithm update made INP a ranking factor — monolithic themes can't keep up.",{"type":32,"tag":40,"props":62,"children":64},{"id":63},"bigcommerce-catalyst-api-first-saas-hybrid",[65],{"type":37,"value":66},"BigCommerce Catalyst: API-first SaaS hybrid",{"type":32,"tag":33,"props":68,"children":69},{},[70],{"type":37,"value":71},"BigCommerce's Catalyst project, announced in 2024, exposes the platform's API layer to an open Next.js frontend. Backend stays in BigCommerce (hosting, payments, inventory); frontend is yours. The open-source starter (GitHub: bigcommerce\u002Fcatalyst) includes Next.js 14 App Router, React Server Components, and Tailwind.",{"type":32,"tag":33,"props":73,"children":74},{},[75],{"type":32,"tag":76,"props":77,"children":78},"strong",{},[79],{"type":37,"value":80},"Production data (mid-market fashion retailer, 45K monthly visitors):",{"type":32,"tag":82,"props":83,"children":84},"table",{},[85,109],{"type":32,"tag":86,"props":87,"children":88},"thead",{},[89],{"type":32,"tag":90,"props":91,"children":92},"tr",{},[93,99,104],{"type":32,"tag":94,"props":95,"children":96},"th",{},[97],{"type":37,"value":98},"Metric",{"type":32,"tag":94,"props":100,"children":101},{},[102],{"type":37,"value":103},"Liquid Theme",{"type":32,"tag":94,"props":105,"children":106},{},[107],{"type":37,"value":108},"Catalyst (Next.js)",{"type":32,"tag":110,"props":111,"children":112},"tbody",{},[113,132,150,168,186],{"type":32,"tag":90,"props":114,"children":115},{},[116,122,127],{"type":32,"tag":117,"props":118,"children":119},"td",{},[120],{"type":37,"value":121},"LCP (p75)",{"type":32,"tag":117,"props":123,"children":124},{},[125],{"type":37,"value":126},"3.8s",{"type":32,"tag":117,"props":128,"children":129},{},[130],{"type":37,"value":131},"1.9s",{"type":32,"tag":90,"props":133,"children":134},{},[135,140,145],{"type":32,"tag":117,"props":136,"children":137},{},[138],{"type":37,"value":139},"INP",{"type":32,"tag":117,"props":141,"children":142},{},[143],{"type":37,"value":144},"310ms",{"type":32,"tag":117,"props":146,"children":147},{},[148],{"type":37,"value":149},"180ms",{"type":32,"tag":90,"props":151,"children":152},{},[153,158,163],{"type":32,"tag":117,"props":154,"children":155},{},[156],{"type":37,"value":157},"Bundle size",{"type":32,"tag":117,"props":159,"children":160},{},[161],{"type":37,"value":162},"840KB",{"type":32,"tag":117,"props":164,"children":165},{},[166],{"type":37,"value":167},"220KB (RSC split)",{"type":32,"tag":90,"props":169,"children":170},{},[171,176,181],{"type":32,"tag":117,"props":172,"children":173},{},[174],{"type":37,"value":175},"Deployment time",{"type":32,"tag":117,"props":177,"children":178},{},[179],{"type":37,"value":180},"2min (theme upload)",{"type":32,"tag":117,"props":182,"children":183},{},[184],{"type":37,"value":185},"8min (Vercel build)",{"type":32,"tag":90,"props":187,"children":188},{},[189,194,199],{"type":32,"tag":117,"props":190,"children":191},{},[192],{"type":37,"value":193},"First page TTFB",{"type":32,"tag":117,"props":195,"children":196},{},[197],{"type":37,"value":198},"420ms",{"type":32,"tag":117,"props":200,"children":201},{},[202],{"type":37,"value":203},"180ms (edge cache)",{"type":32,"tag":33,"props":205,"children":206},{},[207],{"type":37,"value":208},"Catalyst's advantage: modernize your frontend without losing BigCommerce's PCI-compliant payment infrastructure. Disadvantage: backend still tied to BigCommerce API — rate limit 450 req\u002Fs, you'll hit 503s under burst. Cart mutations (add to cart) require backend API calls, so despite fast LCP, interactivity sometimes stalls.",{"type":32,"tag":33,"props":210,"children":211},{},[212],{"type":32,"tag":76,"props":213,"children":214},{},[215],{"type":37,"value":216},"Code example — Catalyst product API call (RSC):",{"type":32,"tag":218,"props":219,"children":223},"pre",{"className":220,"code":221,"language":222,"meta":16,"style":16},"language-typescript shiki shiki-themes github-dark","\u002F\u002F app\u002Fproduct\u002F[slug]\u002Fpage.tsx\nimport { getProduct } from '@\u002Flib\u002Fbigcommerce'\n\nexport default async function ProductPage({ params }: { params: { slug: string } }) {\n  const product = await getProduct(params.slug) \u002F\u002F Server Component, cached at edge\n\n  return (\n    \u003Cdiv>\n      \u003Ch1>{product.name}\u003C\u002Fh1>\n      \u003CProductPrice price={product.price} \u002F> {\u002F* Client Component *\u002F}\n    \u003C\u002Fdiv>\n  )\n}\n","typescript",[224],{"type":32,"tag":225,"props":226,"children":227},"code",{"__ignoreMap":16},[228,240,267,277,365,404,412,426,445,476,519,536,545],{"type":32,"tag":229,"props":230,"children":233},"span",{"class":231,"line":232},"line",1,[234],{"type":32,"tag":229,"props":235,"children":237},{"style":236},"--shiki-default:#6A737D",[238],{"type":37,"value":239},"\u002F\u002F app\u002Fproduct\u002F[slug]\u002Fpage.tsx\n",{"type":32,"tag":229,"props":241,"children":243},{"class":231,"line":242},2,[244,250,256,261],{"type":32,"tag":229,"props":245,"children":247},{"style":246},"--shiki-default:#F97583",[248],{"type":37,"value":249},"import",{"type":32,"tag":229,"props":251,"children":253},{"style":252},"--shiki-default:#E1E4E8",[254],{"type":37,"value":255}," { getProduct } ",{"type":32,"tag":229,"props":257,"children":258},{"style":246},[259],{"type":37,"value":260},"from",{"type":32,"tag":229,"props":262,"children":264},{"style":263},"--shiki-default:#9ECBFF",[265],{"type":37,"value":266}," '@\u002Flib\u002Fbigcommerce'\n",{"type":32,"tag":229,"props":268,"children":270},{"class":231,"line":269},3,[271],{"type":32,"tag":229,"props":272,"children":274},{"emptyLinePlaceholder":273},true,[275],{"type":37,"value":276},"\n",{"type":32,"tag":229,"props":278,"children":280},{"class":231,"line":279},4,[281,286,291,296,301,307,312,318,323,328,333,337,341,345,350,354,360],{"type":32,"tag":229,"props":282,"children":283},{"style":246},[284],{"type":37,"value":285},"export",{"type":32,"tag":229,"props":287,"children":288},{"style":246},[289],{"type":37,"value":290}," default",{"type":32,"tag":229,"props":292,"children":293},{"style":246},[294],{"type":37,"value":295}," async",{"type":32,"tag":229,"props":297,"children":298},{"style":246},[299],{"type":37,"value":300}," function",{"type":32,"tag":229,"props":302,"children":304},{"style":303},"--shiki-default:#B392F0",[305],{"type":37,"value":306}," ProductPage",{"type":32,"tag":229,"props":308,"children":309},{"style":252},[310],{"type":37,"value":311},"({ ",{"type":32,"tag":229,"props":313,"children":315},{"style":314},"--shiki-default:#FFAB70",[316],{"type":37,"value":317},"params",{"type":32,"tag":229,"props":319,"children":320},{"style":252},[321],{"type":37,"value":322}," }",{"type":32,"tag":229,"props":324,"children":325},{"style":246},[326],{"type":37,"value":327},":",{"type":32,"tag":229,"props":329,"children":330},{"style":252},[331],{"type":37,"value":332}," { ",{"type":32,"tag":229,"props":334,"children":335},{"style":314},[336],{"type":37,"value":317},{"type":32,"tag":229,"props":338,"children":339},{"style":246},[340],{"type":37,"value":327},{"type":32,"tag":229,"props":342,"children":343},{"style":252},[344],{"type":37,"value":332},{"type":32,"tag":229,"props":346,"children":347},{"style":314},[348],{"type":37,"value":349},"slug",{"type":32,"tag":229,"props":351,"children":352},{"style":246},[353],{"type":37,"value":327},{"type":32,"tag":229,"props":355,"children":357},{"style":356},"--shiki-default:#79B8FF",[358],{"type":37,"value":359}," string",{"type":32,"tag":229,"props":361,"children":362},{"style":252},[363],{"type":37,"value":364}," } }) {\n",{"type":32,"tag":229,"props":366,"children":368},{"class":231,"line":367},5,[369,374,379,384,389,394,399],{"type":32,"tag":229,"props":370,"children":371},{"style":246},[372],{"type":37,"value":373},"  const",{"type":32,"tag":229,"props":375,"children":376},{"style":356},[377],{"type":37,"value":378}," product",{"type":32,"tag":229,"props":380,"children":381},{"style":246},[382],{"type":37,"value":383}," =",{"type":32,"tag":229,"props":385,"children":386},{"style":246},[387],{"type":37,"value":388}," await",{"type":32,"tag":229,"props":390,"children":391},{"style":303},[392],{"type":37,"value":393}," getProduct",{"type":32,"tag":229,"props":395,"children":396},{"style":252},[397],{"type":37,"value":398},"(params.slug) ",{"type":32,"tag":229,"props":400,"children":401},{"style":236},[402],{"type":37,"value":403},"\u002F\u002F Server Component, cached at edge\n",{"type":32,"tag":229,"props":405,"children":407},{"class":231,"line":406},6,[408],{"type":32,"tag":229,"props":409,"children":410},{"emptyLinePlaceholder":273},[411],{"type":37,"value":276},{"type":32,"tag":229,"props":413,"children":415},{"class":231,"line":414},7,[416,421],{"type":32,"tag":229,"props":417,"children":418},{"style":246},[419],{"type":37,"value":420},"  return",{"type":32,"tag":229,"props":422,"children":423},{"style":252},[424],{"type":37,"value":425}," (\n",{"type":32,"tag":229,"props":427,"children":429},{"class":231,"line":428},8,[430,435,440],{"type":32,"tag":229,"props":431,"children":432},{"style":252},[433],{"type":37,"value":434},"    \u003C",{"type":32,"tag":229,"props":436,"children":437},{"style":303},[438],{"type":37,"value":439},"div",{"type":32,"tag":229,"props":441,"children":442},{"style":252},[443],{"type":37,"value":444},">\n",{"type":32,"tag":229,"props":446,"children":447},{"class":231,"line":26},[448,453,458,463,468,472],{"type":32,"tag":229,"props":449,"children":450},{"style":252},[451],{"type":37,"value":452},"      \u003C",{"type":32,"tag":229,"props":454,"children":455},{"style":303},[456],{"type":37,"value":457},"h1",{"type":32,"tag":229,"props":459,"children":460},{"style":252},[461],{"type":37,"value":462},">{product.name}",{"type":32,"tag":229,"props":464,"children":465},{"style":246},[466],{"type":37,"value":467},"\u003C\u002F",{"type":32,"tag":229,"props":469,"children":470},{"style":252},[471],{"type":37,"value":457},{"type":32,"tag":229,"props":473,"children":474},{"style":246},[475],{"type":37,"value":444},{"type":32,"tag":229,"props":477,"children":479},{"class":231,"line":478},10,[480,484,489,494,499,504,509,514],{"type":32,"tag":229,"props":481,"children":482},{"style":246},[483],{"type":37,"value":452},{"type":32,"tag":229,"props":485,"children":486},{"style":252},[487],{"type":37,"value":488},"ProductPrice price",{"type":32,"tag":229,"props":490,"children":491},{"style":246},[492],{"type":37,"value":493},"=",{"type":32,"tag":229,"props":495,"children":496},{"style":252},[497],{"type":37,"value":498},"{product.price} ",{"type":32,"tag":229,"props":500,"children":501},{"style":246},[502],{"type":37,"value":503},"\u002F>",{"type":32,"tag":229,"props":505,"children":506},{"style":252},[507],{"type":37,"value":508}," {",{"type":32,"tag":229,"props":510,"children":511},{"style":236},[512],{"type":37,"value":513},"\u002F* Client Component *\u002F",{"type":32,"tag":229,"props":515,"children":516},{"style":252},[517],{"type":37,"value":518},"}\n",{"type":32,"tag":229,"props":520,"children":522},{"class":231,"line":521},11,[523,528,532],{"type":32,"tag":229,"props":524,"children":525},{"style":246},[526],{"type":37,"value":527},"    \u003C\u002F",{"type":32,"tag":229,"props":529,"children":530},{"style":252},[531],{"type":37,"value":439},{"type":32,"tag":229,"props":533,"children":534},{"style":246},[535],{"type":37,"value":444},{"type":32,"tag":229,"props":537,"children":539},{"class":231,"line":538},12,[540],{"type":32,"tag":229,"props":541,"children":542},{"style":252},[543],{"type":37,"value":544},"  )\n",{"type":32,"tag":229,"props":546,"children":548},{"class":231,"line":547},13,[549],{"type":32,"tag":229,"props":550,"children":551},{"style":252},[552],{"type":37,"value":518},{"type":32,"tag":33,"props":554,"children":555},{},[556],{"type":37,"value":557},"The BigCommerce API is cached at edge (Vercel KV), but inventory updates aren't real-time (stale-while-revalidate 60s). If inventory is critical, you need webhook plus on-demand revalidation.",{"type":32,"tag":40,"props":559,"children":561},{"id":560},"commercetools-pure-mach-high-flexibility-high-cost",[562],{"type":37,"value":563},"commercetools: Pure MACH, high flexibility, high cost",{"type":32,"tag":33,"props":565,"children":566},{},[567],{"type":37,"value":568},"commercetools, a German API-first commerce platform, separates backend into independent microservices (product catalog, cart, order, customer). You build the frontend — Remix, Next, Astro, your choice. Pricing is usage-based: cost per API call plus transaction fees.",{"type":32,"tag":33,"props":570,"children":571},{},[572],{"type":32,"tag":76,"props":573,"children":574},{},[575],{"type":37,"value":576},"Real cost scenario (mid-size B2B marketplace, 120K monthly API calls):",{"type":32,"tag":578,"props":579,"children":580},"ul",{},[581,587,592,597,602],{"type":32,"tag":582,"props":583,"children":584},"li",{},[585],{"type":37,"value":586},"commercetools license: $2,800\u002Fmonth (base tier)",{"type":32,"tag":582,"props":588,"children":589},{},[590],{"type":37,"value":591},"API overage: 120K calls × $0.004 = $480",{"type":32,"tag":582,"props":593,"children":594},{},[595],{"type":37,"value":596},"Hosting (AWS Fargate + CloudFront): $620",{"type":32,"tag":582,"props":598,"children":599},{},[600],{"type":37,"value":601},"Development hours (initial setup): ~400 hours ($80K one-time)",{"type":32,"tag":582,"props":603,"children":604},{},[605],{"type":32,"tag":76,"props":606,"children":607},{},[608],{"type":37,"value":609},"Total first-year TCO: ~$130K",{"type":32,"tag":33,"props":611,"children":612},{},[613],{"type":37,"value":614},"Comparison: Shopify Plus handles the same traffic for ~$36K\u002Fyear (license + app subscription). commercetools is 3.6× more expensive, but you own everything — shape your data model freely, deploy multi-region, run custom pricing logic in the backend.",{"type":32,"tag":33,"props":616,"children":617},{},[618,623],{"type":32,"tag":76,"props":619,"children":620},{},[621],{"type":37,"value":622},"Tradeoff:",{"type":37,"value":624}," commercetools has comprehensive docs but no ready-made component library. You build the frontend from scratch. Shopify offers a \"buy button\" component in 10 lines; commercetools requires you to implement cart mutations, inventory checks, and tax calculation yourself. First MVP takes 6 months.",{"type":32,"tag":33,"props":626,"children":627},{},[628],{"type":32,"tag":76,"props":629,"children":630},{},[631],{"type":37,"value":632},"Example API pattern (add to cart):",{"type":32,"tag":218,"props":634,"children":636},{"className":220,"code":635,"language":222,"meta":16,"style":16},"\u002F\u002F lib\u002Fcommercetools\u002Fcart.ts\nimport { createApiRoot } from '.\u002Fclient'\n\nexport async function addLineItem(cartId: string, sku: string, quantity: number) {\n  const apiRoot = createApiRoot()\n  \n  const cart = await apiRoot\n    .carts()\n    .withId({ ID: cartId })\n    .post({\n      body: {\n        version: 1, \u002F\u002F optimistic locking\n        actions: [\n          {\n            action: 'addLineItem',\n            sku,\n            quantity,\n          },\n        ],\n      },\n    })\n    .execute()\n\n  return cart.body\n}\n",[637],{"type":32,"tag":225,"props":638,"children":639},{"__ignoreMap":16},[640,648,669,676,755,781,789,814,831,848,865,873,895,903,912,931,940,949,958,967,976,985,1002,1010,1023],{"type":32,"tag":229,"props":641,"children":642},{"class":231,"line":232},[643],{"type":32,"tag":229,"props":644,"children":645},{"style":236},[646],{"type":37,"value":647},"\u002F\u002F lib\u002Fcommercetools\u002Fcart.ts\n",{"type":32,"tag":229,"props":649,"children":650},{"class":231,"line":242},[651,655,660,664],{"type":32,"tag":229,"props":652,"children":653},{"style":246},[654],{"type":37,"value":249},{"type":32,"tag":229,"props":656,"children":657},{"style":252},[658],{"type":37,"value":659}," { createApiRoot } ",{"type":32,"tag":229,"props":661,"children":662},{"style":246},[663],{"type":37,"value":260},{"type":32,"tag":229,"props":665,"children":666},{"style":263},[667],{"type":37,"value":668}," '.\u002Fclient'\n",{"type":32,"tag":229,"props":670,"children":671},{"class":231,"line":269},[672],{"type":32,"tag":229,"props":673,"children":674},{"emptyLinePlaceholder":273},[675],{"type":37,"value":276},{"type":32,"tag":229,"props":677,"children":678},{"class":231,"line":279},[679,683,687,691,696,701,706,710,714,719,724,728,732,736,741,745,750],{"type":32,"tag":229,"props":680,"children":681},{"style":246},[682],{"type":37,"value":285},{"type":32,"tag":229,"props":684,"children":685},{"style":246},[686],{"type":37,"value":295},{"type":32,"tag":229,"props":688,"children":689},{"style":246},[690],{"type":37,"value":300},{"type":32,"tag":229,"props":692,"children":693},{"style":303},[694],{"type":37,"value":695}," addLineItem",{"type":32,"tag":229,"props":697,"children":698},{"style":252},[699],{"type":37,"value":700},"(",{"type":32,"tag":229,"props":702,"children":703},{"style":314},[704],{"type":37,"value":705},"cartId",{"type":32,"tag":229,"props":707,"children":708},{"style":246},[709],{"type":37,"value":327},{"type":32,"tag":229,"props":711,"children":712},{"style":356},[713],{"type":37,"value":359},{"type":32,"tag":229,"props":715,"children":716},{"style":252},[717],{"type":37,"value":718},", ",{"type":32,"tag":229,"props":720,"children":721},{"style":314},[722],{"type":37,"value":723},"sku",{"type":32,"tag":229,"props":725,"children":726},{"style":246},[727],{"type":37,"value":327},{"type":32,"tag":229,"props":729,"children":730},{"style":356},[731],{"type":37,"value":359},{"type":32,"tag":229,"props":733,"children":734},{"style":252},[735],{"type":37,"value":718},{"type":32,"tag":229,"props":737,"children":738},{"style":314},[739],{"type":37,"value":740},"quantity",{"type":32,"tag":229,"props":742,"children":743},{"style":246},[744],{"type":37,"value":327},{"type":32,"tag":229,"props":746,"children":747},{"style":356},[748],{"type":37,"value":749}," number",{"type":32,"tag":229,"props":751,"children":752},{"style":252},[753],{"type":37,"value":754},") {\n",{"type":32,"tag":229,"props":756,"children":757},{"class":231,"line":367},[758,762,767,771,776],{"type":32,"tag":229,"props":759,"children":760},{"style":246},[761],{"type":37,"value":373},{"type":32,"tag":229,"props":763,"children":764},{"style":356},[765],{"type":37,"value":766}," apiRoot",{"type":32,"tag":229,"props":768,"children":769},{"style":246},[770],{"type":37,"value":383},{"type":32,"tag":229,"props":772,"children":773},{"style":303},[774],{"type":37,"value":775}," createApiRoot",{"type":32,"tag":229,"props":777,"children":778},{"style":252},[779],{"type":37,"value":780},"()\n",{"type":32,"tag":229,"props":782,"children":783},{"class":231,"line":406},[784],{"type":32,"tag":229,"props":785,"children":786},{"style":252},[787],{"type":37,"value":788},"  \n",{"type":32,"tag":229,"props":790,"children":791},{"class":231,"line":414},[792,796,801,805,809],{"type":32,"tag":229,"props":793,"children":794},{"style":246},[795],{"type":37,"value":373},{"type":32,"tag":229,"props":797,"children":798},{"style":356},[799],{"type":37,"value":800}," cart",{"type":32,"tag":229,"props":802,"children":803},{"style":246},[804],{"type":37,"value":383},{"type":32,"tag":229,"props":806,"children":807},{"style":246},[808],{"type":37,"value":388},{"type":32,"tag":229,"props":810,"children":811},{"style":252},[812],{"type":37,"value":813}," apiRoot\n",{"type":32,"tag":229,"props":815,"children":816},{"class":231,"line":428},[817,822,827],{"type":32,"tag":229,"props":818,"children":819},{"style":252},[820],{"type":37,"value":821},"    .",{"type":32,"tag":229,"props":823,"children":824},{"style":303},[825],{"type":37,"value":826},"carts",{"type":32,"tag":229,"props":828,"children":829},{"style":252},[830],{"type":37,"value":780},{"type":32,"tag":229,"props":832,"children":833},{"class":231,"line":26},[834,838,843],{"type":32,"tag":229,"props":835,"children":836},{"style":252},[837],{"type":37,"value":821},{"type":32,"tag":229,"props":839,"children":840},{"style":303},[841],{"type":37,"value":842},"withId",{"type":32,"tag":229,"props":844,"children":845},{"style":252},[846],{"type":37,"value":847},"({ ID: cartId })\n",{"type":32,"tag":229,"props":849,"children":850},{"class":231,"line":478},[851,855,860],{"type":32,"tag":229,"props":852,"children":853},{"style":252},[854],{"type":37,"value":821},{"type":32,"tag":229,"props":856,"children":857},{"style":303},[858],{"type":37,"value":859},"post",{"type":32,"tag":229,"props":861,"children":862},{"style":252},[863],{"type":37,"value":864},"({\n",{"type":32,"tag":229,"props":866,"children":867},{"class":231,"line":521},[868],{"type":32,"tag":229,"props":869,"children":870},{"style":252},[871],{"type":37,"value":872},"      body: {\n",{"type":32,"tag":229,"props":874,"children":875},{"class":231,"line":538},[876,881,886,890],{"type":32,"tag":229,"props":877,"children":878},{"style":252},[879],{"type":37,"value":880},"        version: ",{"type":32,"tag":229,"props":882,"children":883},{"style":356},[884],{"type":37,"value":885},"1",{"type":32,"tag":229,"props":887,"children":888},{"style":252},[889],{"type":37,"value":718},{"type":32,"tag":229,"props":891,"children":892},{"style":236},[893],{"type":37,"value":894},"\u002F\u002F optimistic locking\n",{"type":32,"tag":229,"props":896,"children":897},{"class":231,"line":547},[898],{"type":32,"tag":229,"props":899,"children":900},{"style":252},[901],{"type":37,"value":902},"        actions: [\n",{"type":32,"tag":229,"props":904,"children":906},{"class":231,"line":905},14,[907],{"type":32,"tag":229,"props":908,"children":909},{"style":252},[910],{"type":37,"value":911},"          {\n",{"type":32,"tag":229,"props":913,"children":915},{"class":231,"line":914},15,[916,921,926],{"type":32,"tag":229,"props":917,"children":918},{"style":252},[919],{"type":37,"value":920},"            action: ",{"type":32,"tag":229,"props":922,"children":923},{"style":263},[924],{"type":37,"value":925},"'addLineItem'",{"type":32,"tag":229,"props":927,"children":928},{"style":252},[929],{"type":37,"value":930},",\n",{"type":32,"tag":229,"props":932,"children":934},{"class":231,"line":933},16,[935],{"type":32,"tag":229,"props":936,"children":937},{"style":252},[938],{"type":37,"value":939},"            sku,\n",{"type":32,"tag":229,"props":941,"children":943},{"class":231,"line":942},17,[944],{"type":32,"tag":229,"props":945,"children":946},{"style":252},[947],{"type":37,"value":948},"            quantity,\n",{"type":32,"tag":229,"props":950,"children":952},{"class":231,"line":951},18,[953],{"type":32,"tag":229,"props":954,"children":955},{"style":252},[956],{"type":37,"value":957},"          },\n",{"type":32,"tag":229,"props":959,"children":961},{"class":231,"line":960},19,[962],{"type":32,"tag":229,"props":963,"children":964},{"style":252},[965],{"type":37,"value":966},"        ],\n",{"type":32,"tag":229,"props":968,"children":970},{"class":231,"line":969},20,[971],{"type":32,"tag":229,"props":972,"children":973},{"style":252},[974],{"type":37,"value":975},"      },\n",{"type":32,"tag":229,"props":977,"children":979},{"class":231,"line":978},21,[980],{"type":32,"tag":229,"props":981,"children":982},{"style":252},[983],{"type":37,"value":984},"    })\n",{"type":32,"tag":229,"props":986,"children":988},{"class":231,"line":987},22,[989,993,998],{"type":32,"tag":229,"props":990,"children":991},{"style":252},[992],{"type":37,"value":821},{"type":32,"tag":229,"props":994,"children":995},{"style":303},[996],{"type":37,"value":997},"execute",{"type":32,"tag":229,"props":999,"children":1000},{"style":252},[1001],{"type":37,"value":780},{"type":32,"tag":229,"props":1003,"children":1005},{"class":231,"line":1004},23,[1006],{"type":32,"tag":229,"props":1007,"children":1008},{"emptyLinePlaceholder":273},[1009],{"type":37,"value":276},{"type":32,"tag":229,"props":1011,"children":1013},{"class":231,"line":1012},24,[1014,1018],{"type":32,"tag":229,"props":1015,"children":1016},{"style":246},[1017],{"type":37,"value":420},{"type":32,"tag":229,"props":1019,"children":1020},{"style":252},[1021],{"type":37,"value":1022}," cart.body\n",{"type":32,"tag":229,"props":1024,"children":1026},{"class":231,"line":1025},25,[1027],{"type":32,"tag":229,"props":1028,"children":1029},{"style":252},[1030],{"type":37,"value":518},{"type":32,"tag":33,"props":1032,"children":1033},{},[1034],{"type":37,"value":1035},"commercetools' versioning system (optimistic locking) prevents concurrency issues, but every mutation requires a version bump — on race condition, you write retry logic.",{"type":32,"tag":40,"props":1037,"children":1039},{"id":1038},"shopify-plus-hydrogen-platform-assurance-limited-flexibility",[1040],{"type":37,"value":1041},"Shopify Plus + Hydrogen: Platform assurance, limited flexibility",{"type":32,"tag":33,"props":1043,"children":1044},{},[1045],{"type":37,"value":1046},"Shopify Hydrogen is a Remix-based React framework integrated with Shopify's Storefront API (GraphQL), deployed on Oxygen hosting (Shopify's edge network). Hydrogen 2.0 launched in 2025 with RSC support.",{"type":32,"tag":33,"props":1048,"children":1049},{},[1050,1055],{"type":32,"tag":76,"props":1051,"children":1052},{},[1053],{"type":37,"value":1054},"Platform advantage:",{"type":37,"value":1056}," PCI compliance, fraud detection, checkout optimization are built into Shopify. You just write the frontend. Plus plan is $2,300\u002Fmonth; transaction fee is 0.25% (zero if you use Shopify Payments).",{"type":32,"tag":33,"props":1058,"children":1059},{},[1060],{"type":32,"tag":76,"props":1061,"children":1062},{},[1063],{"type":37,"value":1064},"Production benchmark (luxury cosmetics brand, 200K monthly sessions):",{"type":32,"tag":578,"props":1066,"children":1067},{},[1068,1073,1078],{"type":32,"tag":582,"props":1069,"children":1070},{},[1071],{"type":37,"value":1072},"LCP: 1.6s (Oxygen edge, ISR caching)",{"type":32,"tag":582,"props":1074,"children":1075},{},[1076],{"type":37,"value":1077},"Checkout conversion: 4.2% (Shopify native) vs 3.1% (custom headless checkout)",{"type":32,"tag":582,"props":1079,"children":1080},{},[1081],{"type":37,"value":1082},"Development velocity: MVP in 6 weeks (Hydrogen Skeleton starter)",{"type":32,"tag":33,"props":1084,"children":1085},{},[1086],{"type":37,"value":1087},"Hydrogen's limitation: you can't escape Shopify's data model. Product metafields exist, but complex relationships (e.g., B2B tiered pricing, multi-warehouse routing) hit Shopify's admin API ceiling. Custom logic requires Shopify Functions (Rust\u002FAssemblyScript) — another learning curve.",{"type":32,"tag":33,"props":1089,"children":1090},{},[1091],{"type":32,"tag":76,"props":1092,"children":1093},{},[1094],{"type":37,"value":1095},"Example Hydrogen query (product detail):",{"type":32,"tag":218,"props":1097,"children":1099},{"className":220,"code":1098,"language":222,"meta":16,"style":16},"\u002F\u002F app\u002Froutes\u002Fproducts.$handle.tsx\nimport { useLoaderData } from '@remix-run\u002Freact'\nimport { json } from '@shopify\u002Fremix-oxygen'\n\nexport async function loader({ params, context }: LoaderArgs) {\n  const { product } = await context.storefront.query(PRODUCT_QUERY, {\n    variables: { handle: params.handle },\n  })\n\n  return json({ product })\n}\n\nconst PRODUCT_QUERY = `#graphql\n  query Product($handle: String!) {\n    product(handle: $handle) {\n      id\n      title\n      descriptionHtml\n      priceRange {\n        minVariantPrice { amount currencyCode }\n      }\n    }\n  }\n`\n",[1100],{"type":32,"tag":225,"props":1101,"children":1102},{"__ignoreMap":16},[1103,1111,1132,1153,1160,1214,1267,1275,1283,1290,1307,1314,1321,1343,1351,1359,1367,1375,1383,1391,1399,1407,1415,1423],{"type":32,"tag":229,"props":1104,"children":1105},{"class":231,"line":232},[1106],{"type":32,"tag":229,"props":1107,"children":1108},{"style":236},[1109],{"type":37,"value":1110},"\u002F\u002F app\u002Froutes\u002Fproducts.$handle.tsx\n",{"type":32,"tag":229,"props":1112,"children":1113},{"class":231,"line":242},[1114,1118,1123,1127],{"type":32,"tag":229,"props":1115,"children":1116},{"style":246},[1117],{"type":37,"value":249},{"type":32,"tag":229,"props":1119,"children":1120},{"style":252},[1121],{"type":37,"value":1122}," { useLoaderData } ",{"type":32,"tag":229,"props":1124,"children":1125},{"style":246},[1126],{"type":37,"value":260},{"type":32,"tag":229,"props":1128,"children":1129},{"style":263},[1130],{"type":37,"value":1131}," '@remix-run\u002Freact'\n",{"type":32,"tag":229,"props":1133,"children":1134},{"class":231,"line":269},[1135,1139,1144,1148],{"type":32,"tag":229,"props":1136,"children":1137},{"style":246},[1138],{"type":37,"value":249},{"type":32,"tag":229,"props":1140,"children":1141},{"style":252},[1142],{"type":37,"value":1143}," { json } ",{"type":32,"tag":229,"props":1145,"children":1146},{"style":246},[1147],{"type":37,"value":260},{"type":32,"tag":229,"props":1149,"children":1150},{"style":263},[1151],{"type":37,"value":1152}," '@shopify\u002Fremix-oxygen'\n",{"type":32,"tag":229,"props":1154,"children":1155},{"class":231,"line":279},[1156],{"type":32,"tag":229,"props":1157,"children":1158},{"emptyLinePlaceholder":273},[1159],{"type":37,"value":276},{"type":32,"tag":229,"props":1161,"children":1162},{"class":231,"line":367},[1163,1167,1171,1175,1180,1184,1188,1192,1197,1201,1205,1210],{"type":32,"tag":229,"props":1164,"children":1165},{"style":246},[1166],{"type":37,"value":285},{"type":32,"tag":229,"props":1168,"children":1169},{"style":246},[1170],{"type":37,"value":295},{"type":32,"tag":229,"props":1172,"children":1173},{"style":246},[1174],{"type":37,"value":300},{"type":32,"tag":229,"props":1176,"children":1177},{"style":303},[1178],{"type":37,"value":1179}," loader",{"type":32,"tag":229,"props":1181,"children":1182},{"style":252},[1183],{"type":37,"value":311},{"type":32,"tag":229,"props":1185,"children":1186},{"style":314},[1187],{"type":37,"value":317},{"type":32,"tag":229,"props":1189,"children":1190},{"style":252},[1191],{"type":37,"value":718},{"type":32,"tag":229,"props":1193,"children":1194},{"style":314},[1195],{"type":37,"value":1196},"context",{"type":32,"tag":229,"props":1198,"children":1199},{"style":252},[1200],{"type":37,"value":322},{"type":32,"tag":229,"props":1202,"children":1203},{"style":246},[1204],{"type":37,"value":327},{"type":32,"tag":229,"props":1206,"children":1207},{"style":303},[1208],{"type":37,"value":1209}," LoaderArgs",{"type":32,"tag":229,"props":1211,"children":1212},{"style":252},[1213],{"type":37,"value":754},{"type":32,"tag":229,"props":1215,"children":1216},{"class":231,"line":406},[1217,1221,1225,1230,1235,1239,1243,1248,1253,1257,1262],{"type":32,"tag":229,"props":1218,"children":1219},{"style":246},[1220],{"type":37,"value":373},{"type":32,"tag":229,"props":1222,"children":1223},{"style":252},[1224],{"type":37,"value":332},{"type":32,"tag":229,"props":1226,"children":1227},{"style":356},[1228],{"type":37,"value":1229},"product",{"type":32,"tag":229,"props":1231,"children":1232},{"style":252},[1233],{"type":37,"value":1234}," } ",{"type":32,"tag":229,"props":1236,"children":1237},{"style":246},[1238],{"type":37,"value":493},{"type":32,"tag":229,"props":1240,"children":1241},{"style":246},[1242],{"type":37,"value":388},{"type":32,"tag":229,"props":1244,"children":1245},{"style":252},[1246],{"type":37,"value":1247}," context.storefront.",{"type":32,"tag":229,"props":1249,"children":1250},{"style":303},[1251],{"type":37,"value":1252},"query",{"type":32,"tag":229,"props":1254,"children":1255},{"style":252},[1256],{"type":37,"value":700},{"type":32,"tag":229,"props":1258,"children":1259},{"style":356},[1260],{"type":37,"value":1261},"PRODUCT_QUERY",{"type":32,"tag":229,"props":1263,"children":1264},{"style":252},[1265],{"type":37,"value":1266},", {\n",{"type":32,"tag":229,"props":1268,"children":1269},{"class":231,"line":414},[1270],{"type":32,"tag":229,"props":1271,"children":1272},{"style":252},[1273],{"type":37,"value":1274},"    variables: { handle: params.handle },\n",{"type":32,"tag":229,"props":1276,"children":1277},{"class":231,"line":428},[1278],{"type":32,"tag":229,"props":1279,"children":1280},{"style":252},[1281],{"type":37,"value":1282},"  })\n",{"type":32,"tag":229,"props":1284,"children":1285},{"class":231,"line":26},[1286],{"type":32,"tag":229,"props":1287,"children":1288},{"emptyLinePlaceholder":273},[1289],{"type":37,"value":276},{"type":32,"tag":229,"props":1291,"children":1292},{"class":231,"line":478},[1293,1297,1302],{"type":32,"tag":229,"props":1294,"children":1295},{"style":246},[1296],{"type":37,"value":420},{"type":32,"tag":229,"props":1298,"children":1299},{"style":303},[1300],{"type":37,"value":1301}," json",{"type":32,"tag":229,"props":1303,"children":1304},{"style":252},[1305],{"type":37,"value":1306},"({ product })\n",{"type":32,"tag":229,"props":1308,"children":1309},{"class":231,"line":521},[1310],{"type":32,"tag":229,"props":1311,"children":1312},{"style":252},[1313],{"type":37,"value":518},{"type":32,"tag":229,"props":1315,"children":1316},{"class":231,"line":538},[1317],{"type":32,"tag":229,"props":1318,"children":1319},{"emptyLinePlaceholder":273},[1320],{"type":37,"value":276},{"type":32,"tag":229,"props":1322,"children":1323},{"class":231,"line":547},[1324,1329,1334,1338],{"type":32,"tag":229,"props":1325,"children":1326},{"style":246},[1327],{"type":37,"value":1328},"const",{"type":32,"tag":229,"props":1330,"children":1331},{"style":356},[1332],{"type":37,"value":1333}," PRODUCT_QUERY",{"type":32,"tag":229,"props":1335,"children":1336},{"style":246},[1337],{"type":37,"value":383},{"type":32,"tag":229,"props":1339,"children":1340},{"style":263},[1341],{"type":37,"value":1342}," `#graphql\n",{"type":32,"tag":229,"props":1344,"children":1345},{"class":231,"line":905},[1346],{"type":32,"tag":229,"props":1347,"children":1348},{"style":263},[1349],{"type":37,"value":1350},"  query Product($handle: String!) {\n",{"type":32,"tag":229,"props":1352,"children":1353},{"class":231,"line":914},[1354],{"type":32,"tag":229,"props":1355,"children":1356},{"style":263},[1357],{"type":37,"value":1358},"    product(handle: $handle) {\n",{"type":32,"tag":229,"props":1360,"children":1361},{"class":231,"line":933},[1362],{"type":32,"tag":229,"props":1363,"children":1364},{"style":263},[1365],{"type":37,"value":1366},"      id\n",{"type":32,"tag":229,"props":1368,"children":1369},{"class":231,"line":942},[1370],{"type":32,"tag":229,"props":1371,"children":1372},{"style":263},[1373],{"type":37,"value":1374},"      title\n",{"type":32,"tag":229,"props":1376,"children":1377},{"class":231,"line":951},[1378],{"type":32,"tag":229,"props":1379,"children":1380},{"style":263},[1381],{"type":37,"value":1382},"      descriptionHtml\n",{"type":32,"tag":229,"props":1384,"children":1385},{"class":231,"line":960},[1386],{"type":32,"tag":229,"props":1387,"children":1388},{"style":263},[1389],{"type":37,"value":1390},"      priceRange {\n",{"type":32,"tag":229,"props":1392,"children":1393},{"class":231,"line":969},[1394],{"type":32,"tag":229,"props":1395,"children":1396},{"style":263},[1397],{"type":37,"value":1398},"        minVariantPrice { amount currencyCode }\n",{"type":32,"tag":229,"props":1400,"children":1401},{"class":231,"line":978},[1402],{"type":32,"tag":229,"props":1403,"children":1404},{"style":263},[1405],{"type":37,"value":1406},"      }\n",{"type":32,"tag":229,"props":1408,"children":1409},{"class":231,"line":987},[1410],{"type":32,"tag":229,"props":1411,"children":1412},{"style":263},[1413],{"type":37,"value":1414},"    }\n",{"type":32,"tag":229,"props":1416,"children":1417},{"class":231,"line":1004},[1418],{"type":32,"tag":229,"props":1419,"children":1420},{"style":263},[1421],{"type":37,"value":1422},"  }\n",{"type":32,"tag":229,"props":1424,"children":1425},{"class":231,"line":1012},[1426],{"type":32,"tag":229,"props":1427,"children":1428},{"style":263},[1429],{"type":37,"value":1430},"`\n",{"type":32,"tag":33,"props":1432,"children":1433},{},[1434],{"type":37,"value":1435},"Shopify Storefront API rate limit is 2,000 points\u002Fsecond (calculated by query complexity). Under burst traffic, you hit throttling — you need a Redis cache layer, but Oxygen doesn't natively support it, so you use Upstash or similar external service.",{"type":32,"tag":40,"props":1437,"children":1439},{"id":1438},"decision-matrix-which-stack-for-which-scenario",[1440],{"type":37,"value":1441},"Decision matrix: Which stack for which scenario",{"type":32,"tag":33,"props":1443,"children":1444},{},[1445],{"type":37,"value":1446},"This matrix comes from production decision points across our engagements:",{"type":32,"tag":82,"props":1448,"children":1449},{},[1450,1471],{"type":32,"tag":86,"props":1451,"children":1452},{},[1453],{"type":32,"tag":90,"props":1454,"children":1455},{},[1456,1461,1466],{"type":32,"tag":94,"props":1457,"children":1458},{},[1459],{"type":37,"value":1460},"Scenario",{"type":32,"tag":94,"props":1462,"children":1463},{},[1464],{"type":37,"value":1465},"Recommended Stack",{"type":32,"tag":94,"props":1467,"children":1468},{},[1469],{"type":37,"value":1470},"Why",{"type":32,"tag":110,"props":1472,"children":1473},{},[1474,1492,1510,1528,1546],{"type":32,"tag":90,"props":1475,"children":1476},{},[1477,1482,1487],{"type":32,"tag":117,"props":1478,"children":1479},{},[1480],{"type":37,"value":1481},"D2C retail, \u003C$5M GMV",{"type":32,"tag":117,"props":1483,"children":1484},{},[1485],{"type":37,"value":1486},"Shopify Plus + Liquid theme",{"type":32,"tag":117,"props":1488,"children":1489},{},[1490],{"type":37,"value":1491},"Composable ROI isn't visible; speed > flexibility",{"type":32,"tag":90,"props":1493,"children":1494},{},[1495,1500,1505],{"type":32,"tag":117,"props":1496,"children":1497},{},[1498],{"type":37,"value":1499},"D2C retail, $5–20M GMV",{"type":32,"tag":117,"props":1501,"children":1502},{},[1503],{"type":37,"value":1504},"Shopify Plus + Hydrogen",{"type":32,"tag":117,"props":1506,"children":1507},{},[1508],{"type":37,"value":1509},"Headless advantage shows in CWV; checkout stays in Shopify",{"type":32,"tag":90,"props":1511,"children":1512},{},[1513,1518,1523],{"type":32,"tag":117,"props":1514,"children":1515},{},[1516],{"type":37,"value":1517},"B2B marketplace, complex pricing",{"type":32,"tag":117,"props":1519,"children":1520},{},[1521],{"type":37,"value":1522},"commercetools + Next.js",{"type":32,"tag":117,"props":1524,"children":1525},{},[1526],{"type":37,"value":1527},"Custom logic lives in backend; Shopify's limits are tight",{"type":32,"tag":90,"props":1529,"children":1530},{},[1531,1536,1541],{"type":32,"tag":117,"props":1532,"children":1533},{},[1534],{"type":37,"value":1535},"Fashion\u002Fapparel, multi-brand",{"type":32,"tag":117,"props":1537,"children":1538},{},[1539],{"type":37,"value":1540},"BigCommerce Catalyst",{"type":32,"tag":117,"props":1542,"children":1543},{},[1544],{"type":37,"value":1545},"Strong catalog management; frontend flexibility sufficient",{"type":32,"tag":90,"props":1547,"children":1548},{},[1549,1554,1559],{"type":32,"tag":117,"props":1550,"children":1551},{},[1552],{"type":37,"value":1553},"Omnichannel (POS + online)",{"type":32,"tag":117,"props":1555,"children":1556},{},[1557],{"type":37,"value":1558},"Shopify Plus (monolith)",{"type":32,"tag":117,"props":1560,"children":1561},{},[1562],{"type":37,"value":1563},"POS integration is native; headless adds complexity",{"type":32,"tag":33,"props":1565,"children":1566},{},[1567,1572],{"type":32,"tag":76,"props":1568,"children":1569},{},[1570],{"type":37,"value":1571},"Critical decision factor:",{"type":37,"value":1573}," development team capacity. Hydrogen ships with 2 frontend developers to production. commercetools needs 1 backend (API integration), 2 frontend, 1 DevOps (CI\u002FCD, monitoring). In TCO calculations, engineering hours outweigh deployment speed.",{"type":32,"tag":40,"props":1575,"children":1577},{"id":1576},"the-real-cost-of-mach-invisible-complexity",[1578],{"type":37,"value":1579},"The real cost of MACH: Invisible complexity",{"type":32,"tag":33,"props":1581,"children":1582},{},[1583],{"type":37,"value":1584},"Composable stacks hide costs that monoliths don't:",{"type":32,"tag":1586,"props":1587,"children":1588},"ol",{},[1589,1599,1609],{"type":32,"tag":582,"props":1590,"children":1591},{},[1592,1597],{"type":32,"tag":76,"props":1593,"children":1594},{},[1595],{"type":37,"value":1596},"Monitoring:",{"type":37,"value":1598}," Monolith = one dashboard. MACH = each service separate (Datadog $180\u002Fhost\u002Fmonth, 8 services = $1,440\u002Fmonth).",{"type":32,"tag":582,"props":1600,"children":1601},{},[1602,1607],{"type":32,"tag":76,"props":1603,"children":1604},{},[1605],{"type":37,"value":1606},"Incident response:",{"type":37,"value":1608}," Monolith = open support ticket. MACH = you're oncall. When cart API goes down, is it Stripe, commercetools, or frontend? Multi-vendor debugging.",{"type":32,"tag":582,"props":1610,"children":1611},{},[1612,1617],{"type":32,"tag":76,"props":1613,"children":1614},{},[1615],{"type":37,"value":1616},"Upgrade path:",{"type":37,"value":1618}," Shopify auto-updates. commercetools API versions require manual migration (v1 → v2 was a breaking change that took 3 weeks last year).",{"type":32,"tag":33,"props":1620,"children":1621},{},[1622,1624,1632],{"type":37,"value":1623},"Our ",{"type":32,"tag":1625,"props":1626,"children":1630},"a",{"href":1627,"rel":1628},"https:\u002F\u002Fwww.roibase.com.tr\u002Fen\u002Fheadless",[1629],"nofollow",[1631],{"type":37,"value":23},{"type":37,"value":1633}," engagement provides architectural consulting for composable migrations — deciding which layers to headless and which to keep monolith can improve deployment velocity 40%.",{"type":32,"tag":40,"props":1635,"children":1637},{"id":1636},"success-criteria-for-composable-in-production",[1638],{"type":37,"value":1639},"Success criteria for composable in production",{"type":32,"tag":33,"props":1641,"children":1642},{},[1643],{"type":37,"value":1644},"If you can't hit these metrics in the first 3 months after MACH adoption, consider reverting:",{"type":32,"tag":578,"props":1646,"children":1647},{},[1648,1658,1668,1678],{"type":32,"tag":582,"props":1649,"children":1650},{},[1651,1656],{"type":32,"tag":76,"props":1652,"children":1653},{},[1654],{"type":37,"value":1655},"LCP improvement >40%:",{"type":37,"value":1657}," Headless cost is only justified by this much performance gain.",{"type":32,"tag":582,"props":1659,"children":1660},{},[1661,1666],{"type":32,"tag":76,"props":1662,"children":1663},{},[1664],{"type":37,"value":1665},"Cart abandonment decrease >8%:",{"type":37,"value":1667}," Faster checkout must convert to revenue.",{"type":32,"tag":582,"props":1669,"children":1670},{},[1671,1676],{"type":32,"tag":76,"props":1672,"children":1673},{},[1674],{"type":37,"value":1675},"Development velocity:",{"type":37,"value":1677}," New feature deployment \u003C2 weeks (if it was 4–6 weeks monolith, migration was successful).",{"type":32,"tag":582,"props":1679,"children":1680},{},[1681,1686],{"type":32,"tag":76,"props":1682,"children":1683},{},[1684],{"type":37,"value":1685},"Incident MTTR \u003C30min:",{"type":37,"value":1687}," If you can't isolate microservice failures fast, operational burden grows.",{"type":32,"tag":33,"props":1689,"children":1690},{},[1691],{"type":37,"value":1692},"In 2026, composable commerce isn't dogma — it's an engineering tradeoff. Stack choice is driven by GMV, team capacity, and custom logic needs. Shopify Hydrogen is the sweet spot for mid-market D2C, commercetools for enterprise B2B, BigCommerce Catalyst for hybrid scenarios. Test the MACH manifesto against production reality — every microservice is an operational burden.",{"type":32,"tag":1694,"props":1695,"children":1696},"style",{},[1697],{"type":37,"value":1698},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":269,"depth":269,"links":1700},[1701,1702,1703,1704,1705,1706,1707],{"id":42,"depth":242,"text":45},{"id":63,"depth":242,"text":66},{"id":560,"depth":242,"text":563},{"id":1038,"depth":242,"text":1041},{"id":1438,"depth":242,"text":1441},{"id":1576,"depth":242,"text":1579},{"id":1636,"depth":242,"text":1639},"markdown","content:en:tech:composable-commerce-mach-architecture-production-reality.md","content","en\u002Ftech\u002Fcomposable-commerce-mach-architecture-production-reality.md","en\u002Ftech\u002Fcomposable-commerce-mach-architecture-production-reality","md",1778969026073]