[{"data":1,"prerenderedAt":1715},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fes\u002Ftech\u002Fcomercio-componible-realidad-produccion-arquitectura-mach":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":8,"_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":1709,"_id":1710,"_source":1711,"_file":1712,"_stem":1713,"_extension":1714},"tech",false,"","Comercio Componible: La Realidad de Producción de la Arquitectura MACH","BigCommerce, commercetools, Shopify Plus — comparamos trade-offs en arquitecturas componibles con datos reales de producción. El costo real de MACH.","2026-05-16",[21,22,23,24,25],"comercio-componible","arquitectura-mach","headless-commerce","shopify-plus","commercetools",8,"Roibase",{"type":29,"children":30,"toc":1700},"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,1635,1641,1646,1689,1694],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","En 2026, el comercio componible ya no es \"el futuro\" — es una elección arquitectónica en producción, procesando pedidos reales, perdiendo o ganando dinero real. Cuando el manifiesto MACH (Microservicios, API-first, Cloud-native, Headless) se anunció en 2019, era puramente teórico. Hoy, el proyecto Catalyst de BigCommerce, el acelerador Frontend de commercetools y el ecosistema Hydrogen de Shopify manejan tráfico de producción. Pero al mismo tiempo, la mayoría de proyectos vuelven a monolito seis meses después del deployment. En este artículo comparamos stacks de BigCommerce, commercetools y Shopify Plus con datos de producción reales y discutimos los trade-offs verdaderos.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"qué-es-comercio-componible-y-por-qué-es-crítico-ahora",[44],{"type":37,"value":45},"Qué es comercio componible — y por qué es crítico ahora",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"El comercio componible es el enfoque de dividir el stack de e-commerce en módulos de microservicios e integrar cada uno desde la mejor plataforma. Ejemplo: pagos desde Stripe, inventario desde NetSuite ERP, catálogo de productos desde commercetools, frontend desde Next.js, búsqueda desde Algolia, personalización desde Segment CDP. En una plataforma monolítica (e-commerce SaaS tradicional), todas estas capas están bloqueadas en un único proveedor.",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"Es crítico en 2026 porque en un mundo post-cookie, la propiedad de datos first-party se volvió obligatoria. En una plataforma monolítica, el proveedor retiene tus datos en su cloud — tú solo ves el dashboard. En un stack componible, tus datos están en tu CDP, construyes tu pipeline de atribución, controlas tu Conversions API. El sunset de GA4 de Google (2025 Q4) y la obligatoriedad de Conversions API de Meta aceleraron esta transición.",{"type":32,"tag":33,"props":57,"children":58},{},[59],{"type":37,"value":60},"La segunda razón: la ventaja de Core Web Vitals del frontend headless ahora se convirtió en ROI medible. En un proyecto vimos Liquid con LCP de 4.2s versus Hydrogen con 1.8s, que resultó en un aumento de tasa de conversión del 18% (mobile). La actualización de algoritmo de Google del 26 de junio de 2025 hizo que la métrica INP fuera factor de ranking — las temas monolíticas no pueden sostener esto.",{"type":32,"tag":40,"props":62,"children":64},{"id":63},"bigcommerce-catalyst-híbrido-saas-api-first",[65],{"type":37,"value":66},"BigCommerce Catalyst: Híbrido SaaS API-first",{"type":32,"tag":33,"props":68,"children":69},{},[70],{"type":37,"value":71},"El proyecto Catalyst de BigCommerce, anunciado en 2024, abre la capa API de la plataforma SaaS con un frontend Next.js independiente. El backend sigue siendo BigCommerce (hosting, pagos, inventario), el frontend está en tus manos. El starter open-source (GitHub: bigcommerce\u002Fcatalyst) incluye Next.js 14 App Router, React Server Components y Tailwind.",{"type":32,"tag":33,"props":73,"children":74},{},[75],{"type":32,"tag":76,"props":77,"children":78},"strong",{},[79],{"type":37,"value":80},"Datos de producción (retailer de moda de tamaño medio, 45K visitantes mensuales):",{"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},"Métrica",{"type":32,"tag":94,"props":100,"children":101},{},[102],{"type":37,"value":103},"Tema Liquid",{"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},"Tamaño del bundle",{"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 (split RSC)",{"type":32,"tag":90,"props":169,"children":170},{},[171,176,181],{"type":32,"tag":117,"props":172,"children":173},{},[174],{"type":37,"value":175},"Tiempo de deployment",{"type":32,"tag":117,"props":177,"children":178},{},[179],{"type":37,"value":180},"2 min (upload de tema)",{"type":32,"tag":117,"props":182,"children":183},{},[184],{"type":37,"value":185},"8 min (build Vercel)",{"type":32,"tag":90,"props":187,"children":188},{},[189,194,199],{"type":32,"tag":117,"props":190,"children":191},{},[192],{"type":37,"value":193},"TTFB primera página",{"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},"La ventaja de Catalyst: modernizas el frontend sin perder la infraestructura de pagos compatible con PCI de BigCommerce. La desventaja: el backend sigue atado a la API de BigCommerce — límite de rate 450 req\u002Fs, puedes recibir 503 en burst. Las mutaciones del carrito (add to cart) requieren API call al backend, así que aunque LCP es rápido, la interactividad a veces es lenta.",{"type":32,"tag":33,"props":210,"children":211},{},[212],{"type":32,"tag":76,"props":213,"children":214},{},[215],{"type":37,"value":216},"Ejemplo de código — llamada de API de producto en Catalyst (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, cache en 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,444,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, cache en 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":428},{"class":231,"line":26},[429,434,439],{"type":32,"tag":229,"props":430,"children":431},{"style":252},[432],{"type":37,"value":433},"    \u003C",{"type":32,"tag":229,"props":435,"children":436},{"style":303},[437],{"type":37,"value":438},"div",{"type":32,"tag":229,"props":440,"children":441},{"style":252},[442],{"type":37,"value":443},">\n",{"type":32,"tag":229,"props":445,"children":447},{"class":231,"line":446},9,[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":443},{"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":438},{"type":32,"tag":229,"props":533,"children":534},{"style":246},[535],{"type":37,"value":443},{"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},"La API de BigCommerce se cachea en el edge (Vercel KV), pero la actualización del inventario no es en tiempo real (stale-while-revalidate 60s). Si el stock es crítico, necesitas agregar webhook + revalidación bajo demanda.",{"type":32,"tag":40,"props":559,"children":561},{"id":560},"commercetools-mach-puro-alta-flexibilidad-alto-costo",[562],{"type":37,"value":563},"commercetools: MACH puro, alta flexibilidad, alto costo",{"type":32,"tag":33,"props":565,"children":566},{},[567],{"type":37,"value":568},"commercetools es una plataforma de comercio API-first con sede en Alemania. Su backend es completamente de microservicios (catálogo de productos, carrito, pedido, cliente son servicios independientes). El frontend lo construyes tú — Remix, Next, Astro, lo que quieras. Los precios se basan en uso: costo por llamada API + tarifa de transacción.",{"type":32,"tag":33,"props":570,"children":571},{},[572],{"type":32,"tag":76,"props":573,"children":574},{},[575],{"type":37,"value":576},"Escenario de costo real (marketplace B2B de tamaño medio, 120K llamadas API mensuales):",{"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},"Licencia commercetools: $2,800\u002Fmes (tier base)",{"type":32,"tag":582,"props":588,"children":589},{},[590],{"type":37,"value":591},"Overage de API: 120K llamadas × $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},"Hora de desarrollo (setup inicial): ~400 horas ($80K única vez)",{"type":32,"tag":582,"props":603,"children":604},{},[605],{"type":32,"tag":76,"props":606,"children":607},{},[608],{"type":37,"value":609},"TCO total del primer año: ~$130K",{"type":32,"tag":33,"props":611,"children":612},{},[613],{"type":37,"value":614},"Comparación: Shopify Plus para el mismo tráfico es ~$36K\u002Faño (licencia + suscripción de app). commercetools es 3.6× más caro, pero la propiedad es completamente tuya — modelas tus datos como quieras, haces deployment multi-región, la lógica de precios personalizada corre en el backend.",{"type":32,"tag":33,"props":616,"children":617},{},[618,623],{"type":32,"tag":76,"props":619,"children":620},{},[621],{"type":37,"value":622},"Trade-off:",{"type":37,"value":624}," La documentación de commercetools es completa pero no hay librería de componentes lista. Construyes el frontend desde cero. En Shopify hay un componente \"buy button\" en 10 líneas, en commercetools implementas la mutación del carrito API, validación de inventario y cálculo de impuestos tú mismo. El MVP inicial toma 6 meses.",{"type":32,"tag":33,"props":626,"children":627},{},[628],{"type":32,"tag":76,"props":629,"children":630},{},[631],{"type":37,"value":632},"Ejemplo de patrón API (agregar al carrito):",{"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":26},[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":446},[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},"El sistema de versionado de commercetools (optimistic locking) previene problemas de concurrencia pero toda mutación requiere un bump de versión — en race conditions necesitas escribir lógica de retry.",{"type":32,"tag":40,"props":1037,"children":1039},{"id":1038},"shopify-plus-hydrogen-garantía-de-plataforma-flexibilidad-limitada",[1040],{"type":37,"value":1041},"Shopify Plus + Hydrogen: Garantía de plataforma, flexibilidad limitada",{"type":32,"tag":33,"props":1043,"children":1044},{},[1045],{"type":37,"value":1046},"Hydrogen de Shopify es un framework React basado en Remix. Integrado con la API Storefront de Shopify (GraphQL), deployment en hosting Oxygen (red edge de Shopify). En 2025 salió Hydrogen 2.0 con soporte RSC.",{"type":32,"tag":33,"props":1048,"children":1049},{},[1050,1055],{"type":32,"tag":76,"props":1051,"children":1052},{},[1053],{"type":37,"value":1054},"Ventaja de plataforma:",{"type":37,"value":1056}," Cumplimiento PCI, detección de fraude, optimización de checkout están integrados en Shopify. Tú solo escribes el frontend. Plan Plus es $2,300\u002Fmes, tarifa de transacción 0.25% (cero si usas Shopify Payments).",{"type":32,"tag":33,"props":1058,"children":1059},{},[1060],{"type":32,"tag":76,"props":1061,"children":1062},{},[1063],{"type":37,"value":1064},"Benchmark de producción (marca de cosméticos de lujo, 200K sesiones mensuales):",{"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 (edge Oxygen, ISR caching)",{"type":32,"tag":582,"props":1074,"children":1075},{},[1076],{"type":37,"value":1077},"Tasa de conversión de checkout: 4.2% (checkout nativo Shopify) vs 3.1% (custom headless checkout)",{"type":32,"tag":582,"props":1079,"children":1080},{},[1081],{"type":37,"value":1082},"Velocidad de desarrollo: MVP 6 semanas (starter Hydrogen Skeleton)",{"type":32,"tag":33,"props":1084,"children":1085},{},[1086],{"type":37,"value":1087},"La limitación de Hydrogen: no puedes salir del modelo de datos de Shopify. Hay metafields de producto pero relaciones complejas (ej. precios escalonados B2B, ruteo multi-almacén) te cuelgan en la API de admin de Shopify. La lógica personalizada requiere escribir Shopify Function (Rust\u002FAssemblyScript) — que es otra curva de aprendizaje.",{"type":32,"tag":33,"props":1089,"children":1090},{},[1091],{"type":32,"tag":76,"props":1092,"children":1093},{},[1094],{"type":37,"value":1095},"Ejemplo de query Hydrogen (detalle de producto):",{"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":26},[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":446},[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},"La API Storefront de Shopify tiene un límite de 2,000 puntos\u002Fs (calculado según complejidad de query). Con tráfico en burst recibes throttling — en este caso agregas una capa de caché Redis pero Oxygen no soporta Redis nativamente, necesitas usar un servicio externo como Upstash.",{"type":32,"tag":40,"props":1437,"children":1439},{"id":1438},"matriz-de-decisión-qué-stack-para-qué-escenario",[1440],{"type":37,"value":1441},"Matriz de decisión: Qué stack para qué escenario",{"type":32,"tag":33,"props":1443,"children":1444},{},[1445],{"type":37,"value":1446},"Esta matriz es de nuestros proyectos reales en producción, criterios verdaderos de decisión:",{"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},"Escenario",{"type":32,"tag":94,"props":1462,"children":1463},{},[1464],{"type":37,"value":1465},"Stack recomendado",{"type":32,"tag":94,"props":1467,"children":1468},{},[1469],{"type":37,"value":1470},"Por qué",{"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 + tema Liquid",{"type":32,"tag":117,"props":1488,"children":1489},{},[1490],{"type":37,"value":1491},"El ROI de componible no se ve, velocidad > flexibilidad",{"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},"La ventaja headless se ve en CWV, checkout sigue en 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},"Marketplace B2B, precios complejos",{"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},"Lógica personalizada en backend, límites de Shopify son estrechos",{"type":32,"tag":90,"props":1529,"children":1530},{},[1531,1536,1541],{"type":32,"tag":117,"props":1532,"children":1533},{},[1534],{"type":37,"value":1535},"Moda\u002Fapparel, multi-marca",{"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},"Gestión de catálogo robusta, flexibilidad frontend suficiente",{"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 (monolito)",{"type":32,"tag":117,"props":1560,"children":1561},{},[1562],{"type":37,"value":1563},"Integración POS nativa, headless suma complejidad extra",{"type":32,"tag":33,"props":1565,"children":1566},{},[1567,1572],{"type":32,"tag":76,"props":1568,"children":1569},{},[1570],{"type":37,"value":1571},"Factor crítico de decisión:",{"type":37,"value":1573}," Capacidad del equipo de desarrollo. Hydrogen funciona con 2 developers frontend en producción. commercetools requiere 1 backend (integración API), 2 frontend, 1 DevOps (CI\u002FCD, monitoreo). En TCO, las horas humanas pesan más que la velocidad de deployment.",{"type":32,"tag":40,"props":1575,"children":1577},{"id":1576},"el-costo-real-de-mach-complejidad-invisible",[1578],{"type":37,"value":1579},"El costo real de MACH: Complejidad invisible",{"type":32,"tag":33,"props":1581,"children":1582},{},[1583],{"type":37,"value":1584},"Los ítems de costo oculto en un stack componible:",{"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},"Monitoreo:",{"type":37,"value":1598}," Dashboard único en plataforma monolítica, cada servicio es diferente en MACH (Datadog $180\u002Fhost\u002Fmes, 8 servicios = $1,440\u002Fmes).",{"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}," Ticket de soporte en plataforma monolítica, en MACH eres oncall. Cuando API de carrito cae, ¿es problema de Stripe, commercetools o frontend? — debugging multi-vendor.",{"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 se actualiza automáticamente, tú migras versiones de API de commercetools (v1 → v2 breaking change el año pasado nos tomó 3 semanas).",{"type":32,"tag":33,"props":1620,"children":1621},{},[1622,1624,1633],{"type":37,"value":1623},"En nuestro trabajo sobre ",{"type":32,"tag":1625,"props":1626,"children":1630},"a",{"href":1627,"rel":1628},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fheadless",[1629],"nofollow",[1631],{"type":37,"value":1632},"Headless Commerce",{"type":37,"value":1634}," proporcionamos consultoría arquitectónica a marcas de e-commerce en migraciones componibles — decidir qué capas van headless y cuáles quedan en monolito aumenta la velocidad de deployment 40%.",{"type":32,"tag":40,"props":1636,"children":1638},{"id":1637},"criterios-de-éxito-de-arquitectura-componible-en-producción",[1639],{"type":37,"value":1640},"Criterios de éxito de arquitectura componible en producción",{"type":32,"tag":33,"props":1642,"children":1643},{},[1644],{"type":37,"value":1645},"Si migras a MACH y no sostienes estas métricas en los primeros 3 meses, considera volver:",{"type":32,"tag":578,"props":1647,"children":1648},{},[1649,1659,1669,1679],{"type":32,"tag":582,"props":1650,"children":1651},{},[1652,1657],{"type":32,"tag":76,"props":1653,"children":1654},{},[1655],{"type":37,"value":1656},"Mejora de LCP >40%:",{"type":37,"value":1658}," El costo de headless solo es justificable con este nivel de mejora de rendimiento.",{"type":32,"tag":582,"props":1660,"children":1661},{},[1662,1667],{"type":32,"tag":76,"props":1663,"children":1664},{},[1665],{"type":37,"value":1666},"Disminución de tasa de abandono de carrito >8%:",{"type":37,"value":1668}," Flujo de checkout rápido debe convertirse en conversión.",{"type":32,"tag":582,"props":1670,"children":1671},{},[1672,1677],{"type":32,"tag":76,"props":1673,"children":1674},{},[1675],{"type":37,"value":1676},"Velocidad de desarrollo:",{"type":37,"value":1678}," Deployment de nueva feature \u003C2 semanas (si eran 4-6 en monolito, la transición fue correcta).",{"type":32,"tag":582,"props":1680,"children":1681},{},[1682,1687],{"type":32,"tag":76,"props":1683,"children":1684},{},[1685],{"type":37,"value":1686},"MTTR de incidentes \u003C30 min:",{"type":37,"value":1688}," Si no aíslas rápido los errores de microservicio, la carga operacional crece.",{"type":32,"tag":33,"props":1690,"children":1691},{},[1692],{"type":37,"value":1693},"En 2026, comercio componible no es dogma — es trade-off de ingeniería. La elección de stack debe estar impulsada por GMV, capacidad del equipo, necesidad de lógica personalizada. Hydrogen es el sweet spot para D2C de tamaño medio, commercetools para empresa B2B, BigCommerce Catalyst para escenarios híbridos. Prueba el manifiesto MACH con realidad de producción — cada microservicio es una carga operacional.",{"type":32,"tag":1695,"props":1696,"children":1697},"style",{},[1698],{"type":37,"value":1699},"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":1701},[1702,1703,1704,1705,1706,1707,1708],{"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":1637,"depth":242,"text":1640},"markdown","content:es:tech:comercio-componible-realidad-produccion-arquitectura-mach.md","content","es\u002Ftech\u002Fcomercio-componible-realidad-produccion-arquitectura-mach.md","es\u002Ftech\u002Fcomercio-componible-realidad-produccion-arquitectura-mach","md",1778969029045]