[{"data":1,"prerenderedAt":2677},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fes\u002Ftech\u002Fmigracion-a-comercio-headless-hoja-de-ruta-gestion-riesgos":11},{"i18nKey":4,"paths":5},"tech-006-2026-07",{"de":6,"es":7,"fr":8,"it":9,"ru":10},"\u002Fde\u002Ftech\u002Fheadless-e-commerce-migration-roadmap-risk-management","\u002Fes\u002Ftech\u002Fmigracion-a-comercio-headless-hoja-de-ruta-gestion-riesgos","\u002Ffr\u002Ftech\u002Froadmap-migration-headless-gestion-risques","\u002Fit\u002Ftech\u002Fheadless-e-commerce-migration-roadmap-e-risk-management","\u002Fru\u002Ftech\u002Fheadless-migracion-hoja-ruta-y-gestion-riesgos",{"_path":7,"_dir":12,"_draft":13,"_partial":13,"_locale":14,"title":15,"description":16,"publishedAt":17,"modifiedAt":17,"category":18,"i18nKey":4,"tags":19,"readingTime":25,"author":26,"body":27,"_type":2671,"_id":2672,"_source":2673,"_file":2674,"_stem":2675,"_extension":2676},"tech",false,"","E-Commerce Headless: Hoja de Ruta de Migración y Gestión de Riesgos","Estrategia de migración a headless preservando SEO mediante rollout progresivo. Análisis de abandono de carrito, testing de rendimiento y métodos de mitigación de riesgos.","2026-07-16","headless",[20,21,22,23,24],"comercio-headless","estrategia-migracion","preservacion-seo","testing-rendimiento","gestion-riesgos",9,"Roibase",{"type":28,"children":29,"toc":2664},"root",[30,38,45,58,80,361,374,399,409,419,425,438,446,482,1431,1436,1485,1491,1496,1504,1964,1982,2016,2021,2027,2032,2327,2337,2564,2569,2575,2580,2588,2601,2609,2630,2646,2658],{"type":31,"tag":32,"props":33,"children":34},"element","p",{},[35],{"type":36,"value":37},"text","La migración a e-commerce headless en 2026 ya no es \"¿debería hacerlo?\". La pregunta es \"¿cómo lo hago sin quebrar el sitio, perder 40% del SEO, o disparar el abandono de carrito de 18% a 32%?\". Frameworks como Shopify Hydrogen, Remix y Next.js Commerce han madurado lo suficiente para reducir el riesgo técnico, pero el riesgo operacional sigue siendo alto. Migrar un sitio de e-commerce de arquitectura monolítica a headless no es un migration de base de datos: es una cirugía a corazón abierto. Este artículo cubre estrategia de rollout progresivo, testing de preservación SEO y métodos para prevenir picos de abandono de carrito.",{"type":31,"tag":39,"props":40,"children":42},"h2",{"id":41},"estrategia-de-rollout-progresivo-canary-deployment-entre-dominios",[43],{"type":36,"value":44},"Estrategia de Rollout Progresivo: Canary Deployment Entre Dominios",{"type":31,"tag":32,"props":46,"children":47},{},[48,50,56],{"type":36,"value":49},"Sin big-bang migration. No pasas todo el sitio a frontend headless simultáneamente porque si algo falla, el costo de rollback es prohibitivo. Nuestra arquitectura preferida: ",{"type":31,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":36,"value":55},"path-based routing progresivo",{"type":36,"value":57},".",{"type":31,"tag":32,"props":59,"children":60},{},[61,63,70,72,78],{"type":36,"value":62},"Selecciona un path con tráfico bajo y SKU limitados—como ",{"type":31,"tag":64,"props":65,"children":67},"code",{"className":66},[],[68],{"type":36,"value":69},"\u002Fcategoria\u002Fnuevos-articulos",{"type":36,"value":71}," (50-100 productos). En el CDN (Cloudflare, Fastly), configura una regla: ",{"type":31,"tag":64,"props":73,"children":75},{"className":74},[],[76],{"type":36,"value":77},"\u002Fcategoria\u002Fnuevos-articulos\u002F*",{"type":36,"value":79}," se enruta al origin headless, el resto mantiene Shopify Liquid legacy.",{"type":31,"tag":81,"props":82,"children":86},"pre",{"className":83,"code":84,"language":85,"meta":14,"style":14},"language-javascript shiki shiki-themes github-dark","\u002F\u002F Cloudflare Workers — path routing\naddEventListener('fetch', event => {\n  const url = new URL(event.request.url);\n  \n  if (url.pathname.startsWith('\u002Fcategoria\u002Fnuevos-articulos')) {\n    return event.respondWith(fetch(event.request, {\n      backend: 'headless-origin' \u002F\u002F Hydrogen app on Cloudflare Pages\n    }));\n  }\n  \n  return event.respondWith(fetch(event.request, {\n    backend: 'legacy-shopify'\n  }));\n});\n","javascript",[87],{"type":31,"tag":64,"props":88,"children":89},{"__ignoreMap":14},[90,102,146,181,190,223,256,275,284,292,300,329,343,352],{"type":31,"tag":91,"props":92,"children":95},"span",{"class":93,"line":94},"line",1,[96],{"type":31,"tag":91,"props":97,"children":99},{"style":98},"--shiki-default:#6A737D",[100],{"type":36,"value":101},"\u002F\u002F Cloudflare Workers — path routing\n",{"type":31,"tag":91,"props":103,"children":105},{"class":93,"line":104},2,[106,112,118,124,129,135,141],{"type":31,"tag":91,"props":107,"children":109},{"style":108},"--shiki-default:#B392F0",[110],{"type":36,"value":111},"addEventListener",{"type":31,"tag":91,"props":113,"children":115},{"style":114},"--shiki-default:#E1E4E8",[116],{"type":36,"value":117},"(",{"type":31,"tag":91,"props":119,"children":121},{"style":120},"--shiki-default:#9ECBFF",[122],{"type":36,"value":123},"'fetch'",{"type":31,"tag":91,"props":125,"children":126},{"style":114},[127],{"type":36,"value":128},", ",{"type":31,"tag":91,"props":130,"children":132},{"style":131},"--shiki-default:#FFAB70",[133],{"type":36,"value":134},"event",{"type":31,"tag":91,"props":136,"children":138},{"style":137},"--shiki-default:#F97583",[139],{"type":36,"value":140}," =>",{"type":31,"tag":91,"props":142,"children":143},{"style":114},[144],{"type":36,"value":145}," {\n",{"type":31,"tag":91,"props":147,"children":149},{"class":93,"line":148},3,[150,155,161,166,171,176],{"type":31,"tag":91,"props":151,"children":152},{"style":137},[153],{"type":36,"value":154},"  const",{"type":31,"tag":91,"props":156,"children":158},{"style":157},"--shiki-default:#79B8FF",[159],{"type":36,"value":160}," url",{"type":31,"tag":91,"props":162,"children":163},{"style":137},[164],{"type":36,"value":165}," =",{"type":31,"tag":91,"props":167,"children":168},{"style":137},[169],{"type":36,"value":170}," new",{"type":31,"tag":91,"props":172,"children":173},{"style":108},[174],{"type":36,"value":175}," URL",{"type":31,"tag":91,"props":177,"children":178},{"style":114},[179],{"type":36,"value":180},"(event.request.url);\n",{"type":31,"tag":91,"props":182,"children":184},{"class":93,"line":183},4,[185],{"type":31,"tag":91,"props":186,"children":187},{"style":114},[188],{"type":36,"value":189},"  \n",{"type":31,"tag":91,"props":191,"children":193},{"class":93,"line":192},5,[194,199,204,209,213,218],{"type":31,"tag":91,"props":195,"children":196},{"style":137},[197],{"type":36,"value":198},"  if",{"type":31,"tag":91,"props":200,"children":201},{"style":114},[202],{"type":36,"value":203}," (url.pathname.",{"type":31,"tag":91,"props":205,"children":206},{"style":108},[207],{"type":36,"value":208},"startsWith",{"type":31,"tag":91,"props":210,"children":211},{"style":114},[212],{"type":36,"value":117},{"type":31,"tag":91,"props":214,"children":215},{"style":120},[216],{"type":36,"value":217},"'\u002Fcategoria\u002Fnuevos-articulos'",{"type":31,"tag":91,"props":219,"children":220},{"style":114},[221],{"type":36,"value":222},")) {\n",{"type":31,"tag":91,"props":224,"children":226},{"class":93,"line":225},6,[227,232,237,242,246,251],{"type":31,"tag":91,"props":228,"children":229},{"style":137},[230],{"type":36,"value":231},"    return",{"type":31,"tag":91,"props":233,"children":234},{"style":114},[235],{"type":36,"value":236}," event.",{"type":31,"tag":91,"props":238,"children":239},{"style":108},[240],{"type":36,"value":241},"respondWith",{"type":31,"tag":91,"props":243,"children":244},{"style":114},[245],{"type":36,"value":117},{"type":31,"tag":91,"props":247,"children":248},{"style":108},[249],{"type":36,"value":250},"fetch",{"type":31,"tag":91,"props":252,"children":253},{"style":114},[254],{"type":36,"value":255},"(event.request, {\n",{"type":31,"tag":91,"props":257,"children":259},{"class":93,"line":258},7,[260,265,270],{"type":31,"tag":91,"props":261,"children":262},{"style":114},[263],{"type":36,"value":264},"      backend: ",{"type":31,"tag":91,"props":266,"children":267},{"style":120},[268],{"type":36,"value":269},"'headless-origin'",{"type":31,"tag":91,"props":271,"children":272},{"style":98},[273],{"type":36,"value":274}," \u002F\u002F Hydrogen app on Cloudflare Pages\n",{"type":31,"tag":91,"props":276,"children":278},{"class":93,"line":277},8,[279],{"type":31,"tag":91,"props":280,"children":281},{"style":114},[282],{"type":36,"value":283},"    }));\n",{"type":31,"tag":91,"props":285,"children":286},{"class":93,"line":25},[287],{"type":31,"tag":91,"props":288,"children":289},{"style":114},[290],{"type":36,"value":291},"  }\n",{"type":31,"tag":91,"props":293,"children":295},{"class":93,"line":294},10,[296],{"type":31,"tag":91,"props":297,"children":298},{"style":114},[299],{"type":36,"value":189},{"type":31,"tag":91,"props":301,"children":303},{"class":93,"line":302},11,[304,309,313,317,321,325],{"type":31,"tag":91,"props":305,"children":306},{"style":137},[307],{"type":36,"value":308},"  return",{"type":31,"tag":91,"props":310,"children":311},{"style":114},[312],{"type":36,"value":236},{"type":31,"tag":91,"props":314,"children":315},{"style":108},[316],{"type":36,"value":241},{"type":31,"tag":91,"props":318,"children":319},{"style":114},[320],{"type":36,"value":117},{"type":31,"tag":91,"props":322,"children":323},{"style":108},[324],{"type":36,"value":250},{"type":31,"tag":91,"props":326,"children":327},{"style":114},[328],{"type":36,"value":255},{"type":31,"tag":91,"props":330,"children":332},{"class":93,"line":331},12,[333,338],{"type":31,"tag":91,"props":334,"children":335},{"style":114},[336],{"type":36,"value":337},"    backend: ",{"type":31,"tag":91,"props":339,"children":340},{"style":120},[341],{"type":36,"value":342},"'legacy-shopify'\n",{"type":31,"tag":91,"props":344,"children":346},{"class":93,"line":345},13,[347],{"type":31,"tag":91,"props":348,"children":349},{"style":114},[350],{"type":36,"value":351},"  }));\n",{"type":31,"tag":91,"props":353,"children":355},{"class":93,"line":354},14,[356],{"type":31,"tag":91,"props":357,"children":358},{"style":114},[359],{"type":36,"value":360},"});\n",{"type":31,"tag":32,"props":362,"children":363},{},[364,366,372],{"type":36,"value":365},"Durante 2-3 semanas, monitorea Core Web Vitals, conversion rate y métricas del funnel ATC (agregar al carrito). Objetivos: LCP \u003C2.5s, CLS \u003C0.1, tasa de paso ATC→checkout dentro de ±2% del baseline. Si en la categoría ",{"type":31,"tag":64,"props":367,"children":369},{"className":368},[],[370],{"type":36,"value":371},"nuevos-articulos",{"type":36,"value":373}," el abandono de carrito sube de 18% a 24%, hay problema de rendimiento en la lógica headless—probablemente hydration de React con TBT (Total Blocking Time) >800ms.",{"type":31,"tag":32,"props":375,"children":376},{},[377,382,384,390,391,397],{"type":31,"tag":51,"props":378,"children":379},{},[380],{"type":36,"value":381},"Fase dos:",{"type":36,"value":383}," Categorías principales (",{"type":31,"tag":64,"props":385,"children":387},{"className":386},[],[388],{"type":36,"value":389},"\u002Fcategoria\u002Fhombres",{"type":36,"value":128},{"type":31,"tag":64,"props":392,"children":394},{"className":393},[],[395],{"type":36,"value":396},"\u002Fcategoria\u002Fmujeres",{"type":36,"value":398},"). Tráfico 10x mayor, SKU 2000+. La estrategia de hydration cambia: partial hydration (estilo Astro Islands) o progressive enhancement (HTML-first render, interactividad lazy).",{"type":31,"tag":32,"props":400,"children":401},{},[402,407],{"type":31,"tag":51,"props":403,"children":404},{},[405],{"type":36,"value":406},"Fase tres:",{"type":36,"value":408}," Páginas de detalle de producto (PDP). Si el 60% del tráfico orgánico viene de PDP, aquí ejecutas el testing de paridad SEO (detalles en siguiente sección).",{"type":31,"tag":32,"props":410,"children":411},{},[412,417],{"type":31,"tag":51,"props":413,"children":414},{},[415],{"type":36,"value":416},"Fase final:",{"type":36,"value":418}," Homepage y checkout. El checkout es lo último porque integraciones de pago (iyzico, PayTR) y flujos 3D Secure son battle-tested en Shopify nativo; en headless son nuevos. Incluso usando Shopify Checkout API, un error de render frontend = pérdida de órdenes.",{"type":31,"tag":39,"props":420,"children":422},{"id":421},"preservación-de-seo-testing-de-paridad-titlemetastructured-data",[423],{"type":36,"value":424},"Preservación de SEO: Testing de Paridad Title\u002FMeta\u002FStructured Data",{"type":31,"tag":32,"props":426,"children":427},{},[428,430,436],{"type":36,"value":429},"La mayor pérdida en migración headless es SEO, porque Google necesita 4-6 semanas para re-crawlear y actualizar rankings del nuevo render. Si los title\u002Fmeta\u002Fstructured data divergen (ej: precio dinámico en ",{"type":31,"tag":64,"props":431,"children":433},{"className":432},[],[434],{"type":36,"value":435},"og:price",{"type":36,"value":437}," no se actualiza), el CTR cae.",{"type":31,"tag":32,"props":439,"children":440},{},[441],{"type":31,"tag":51,"props":442,"children":443},{},[444],{"type":36,"value":445},"Proceso de testing de paridad:",{"type":31,"tag":447,"props":448,"children":449},"ol",{},[450,456,461],{"type":31,"tag":451,"props":452,"children":453},"li",{},[454],{"type":36,"value":455},"Extrae lista de URLs desde GSC (top 500 organic landing pages).",{"type":31,"tag":451,"props":457,"children":458},{},[459],{"type":36,"value":460},"Renderiza cada URL en ambos frontends (legacy + headless), captura snapshots HTML.",{"type":31,"tag":451,"props":462,"children":463},{},[464,466,472,474,480],{"type":36,"value":465},"Compara con herramienta diff (",{"type":31,"tag":64,"props":467,"children":469},{"className":468},[],[470],{"type":36,"value":471},"htmldiff",{"type":36,"value":473},", script custom con ",{"type":31,"tag":64,"props":475,"children":477},{"className":476},[],[478],{"type":36,"value":479},"cheerio",{"type":36,"value":481},"):",{"type":31,"tag":81,"props":483,"children":485},{"className":83,"code":484,"language":85,"meta":14,"style":14},"\u002F\u002F headless-seo-parity.js\nimport fetch from 'node-fetch';\nimport * as cheerio from 'cheerio';\n\nasync function compareSEO(url) {\n  const [legacyHTML, headlessHTML] = await Promise.all([\n    fetch(`https:\u002F\u002Flegacy.example.com${url}`).then(r => r.text()),\n    fetch(`https:\u002F\u002Fheadless.example.com${url}`).then(r => r.text())\n  ]);\n  \n  const legacy$ = cheerio.load(legacyHTML);\n  const headless$ = cheerio.load(headlessHTML);\n  \n  const diffs = {\n    title: legacy$('title').text() !== headless$('title').text(),\n    metaDesc: legacy$('meta[name=\"description\"]').attr('content') !== \n              headless$('meta[name=\"description\"]').attr('content'),\n    canonical: legacy$('link[rel=\"canonical\"]').attr('href') !== \n               headless$('link[rel=\"canonical\"]').attr('href'),\n    jsonLD: legacy$('script[type=\"application\u002Fld+json\"]').html() !== \n            headless$('script[type=\"application\u002Fld+json\"]').html()\n  };\n  \n  return { url, diffs };\n}\n\n\u002F\u002F Ejecuta para 500 URLs principales\nconst results = await Promise.all(topUrls.map(compareSEO));\nconst failures = results.filter(r => Object.values(r.diffs).some(d => d));\nconsole.log(`${failures.length} URLs con discrepancia SEO`);\n",[486],{"type":31,"tag":64,"props":487,"children":488},{"__ignoreMap":14},[489,497,525,560,569,601,661,724,781,789,796,827,856,863,883,949,1003,1041,1092,1129,1172,1202,1211,1219,1232,1241,1249,1258,1307,1384],{"type":31,"tag":91,"props":490,"children":491},{"class":93,"line":94},[492],{"type":31,"tag":91,"props":493,"children":494},{"style":98},[495],{"type":36,"value":496},"\u002F\u002F headless-seo-parity.js\n",{"type":31,"tag":91,"props":498,"children":499},{"class":93,"line":104},[500,505,510,515,520],{"type":31,"tag":91,"props":501,"children":502},{"style":137},[503],{"type":36,"value":504},"import",{"type":31,"tag":91,"props":506,"children":507},{"style":114},[508],{"type":36,"value":509}," fetch ",{"type":31,"tag":91,"props":511,"children":512},{"style":137},[513],{"type":36,"value":514},"from",{"type":31,"tag":91,"props":516,"children":517},{"style":120},[518],{"type":36,"value":519}," 'node-fetch'",{"type":31,"tag":91,"props":521,"children":522},{"style":114},[523],{"type":36,"value":524},";\n",{"type":31,"tag":91,"props":526,"children":527},{"class":93,"line":148},[528,532,537,542,547,551,556],{"type":31,"tag":91,"props":529,"children":530},{"style":137},[531],{"type":36,"value":504},{"type":31,"tag":91,"props":533,"children":534},{"style":157},[535],{"type":36,"value":536}," *",{"type":31,"tag":91,"props":538,"children":539},{"style":137},[540],{"type":36,"value":541}," as",{"type":31,"tag":91,"props":543,"children":544},{"style":114},[545],{"type":36,"value":546}," cheerio ",{"type":31,"tag":91,"props":548,"children":549},{"style":137},[550],{"type":36,"value":514},{"type":31,"tag":91,"props":552,"children":553},{"style":120},[554],{"type":36,"value":555}," 'cheerio'",{"type":31,"tag":91,"props":557,"children":558},{"style":114},[559],{"type":36,"value":524},{"type":31,"tag":91,"props":561,"children":562},{"class":93,"line":183},[563],{"type":31,"tag":91,"props":564,"children":566},{"emptyLinePlaceholder":565},true,[567],{"type":36,"value":568},"\n",{"type":31,"tag":91,"props":570,"children":571},{"class":93,"line":192},[572,577,582,587,591,596],{"type":31,"tag":91,"props":573,"children":574},{"style":137},[575],{"type":36,"value":576},"async",{"type":31,"tag":91,"props":578,"children":579},{"style":137},[580],{"type":36,"value":581}," function",{"type":31,"tag":91,"props":583,"children":584},{"style":108},[585],{"type":36,"value":586}," compareSEO",{"type":31,"tag":91,"props":588,"children":589},{"style":114},[590],{"type":36,"value":117},{"type":31,"tag":91,"props":592,"children":593},{"style":131},[594],{"type":36,"value":595},"url",{"type":31,"tag":91,"props":597,"children":598},{"style":114},[599],{"type":36,"value":600},") {\n",{"type":31,"tag":91,"props":602,"children":603},{"class":93,"line":225},[604,608,613,618,622,627,632,637,642,647,651,656],{"type":31,"tag":91,"props":605,"children":606},{"style":137},[607],{"type":36,"value":154},{"type":31,"tag":91,"props":609,"children":610},{"style":114},[611],{"type":36,"value":612}," [",{"type":31,"tag":91,"props":614,"children":615},{"style":157},[616],{"type":36,"value":617},"legacyHTML",{"type":31,"tag":91,"props":619,"children":620},{"style":114},[621],{"type":36,"value":128},{"type":31,"tag":91,"props":623,"children":624},{"style":157},[625],{"type":36,"value":626},"headlessHTML",{"type":31,"tag":91,"props":628,"children":629},{"style":114},[630],{"type":36,"value":631},"] ",{"type":31,"tag":91,"props":633,"children":634},{"style":137},[635],{"type":36,"value":636},"=",{"type":31,"tag":91,"props":638,"children":639},{"style":137},[640],{"type":36,"value":641}," await",{"type":31,"tag":91,"props":643,"children":644},{"style":157},[645],{"type":36,"value":646}," Promise",{"type":31,"tag":91,"props":648,"children":649},{"style":114},[650],{"type":36,"value":57},{"type":31,"tag":91,"props":652,"children":653},{"style":108},[654],{"type":36,"value":655},"all",{"type":31,"tag":91,"props":657,"children":658},{"style":114},[659],{"type":36,"value":660},"([\n",{"type":31,"tag":91,"props":662,"children":663},{"class":93,"line":258},[664,669,673,678,682,687,692,697,701,706,710,715,719],{"type":31,"tag":91,"props":665,"children":666},{"style":108},[667],{"type":36,"value":668},"    fetch",{"type":31,"tag":91,"props":670,"children":671},{"style":114},[672],{"type":36,"value":117},{"type":31,"tag":91,"props":674,"children":675},{"style":120},[676],{"type":36,"value":677},"`https:\u002F\u002Flegacy.example.com${",{"type":31,"tag":91,"props":679,"children":680},{"style":114},[681],{"type":36,"value":595},{"type":31,"tag":91,"props":683,"children":684},{"style":120},[685],{"type":36,"value":686},"}`",{"type":31,"tag":91,"props":688,"children":689},{"style":114},[690],{"type":36,"value":691},").",{"type":31,"tag":91,"props":693,"children":694},{"style":108},[695],{"type":36,"value":696},"then",{"type":31,"tag":91,"props":698,"children":699},{"style":114},[700],{"type":36,"value":117},{"type":31,"tag":91,"props":702,"children":703},{"style":131},[704],{"type":36,"value":705},"r",{"type":31,"tag":91,"props":707,"children":708},{"style":137},[709],{"type":36,"value":140},{"type":31,"tag":91,"props":711,"children":712},{"style":114},[713],{"type":36,"value":714}," r.",{"type":31,"tag":91,"props":716,"children":717},{"style":108},[718],{"type":36,"value":36},{"type":31,"tag":91,"props":720,"children":721},{"style":114},[722],{"type":36,"value":723},"()),\n",{"type":31,"tag":91,"props":725,"children":726},{"class":93,"line":277},[727,731,735,740,744,748,752,756,760,764,768,772,776],{"type":31,"tag":91,"props":728,"children":729},{"style":108},[730],{"type":36,"value":668},{"type":31,"tag":91,"props":732,"children":733},{"style":114},[734],{"type":36,"value":117},{"type":31,"tag":91,"props":736,"children":737},{"style":120},[738],{"type":36,"value":739},"`https:\u002F\u002Fheadless.example.com${",{"type":31,"tag":91,"props":741,"children":742},{"style":114},[743],{"type":36,"value":595},{"type":31,"tag":91,"props":745,"children":746},{"style":120},[747],{"type":36,"value":686},{"type":31,"tag":91,"props":749,"children":750},{"style":114},[751],{"type":36,"value":691},{"type":31,"tag":91,"props":753,"children":754},{"style":108},[755],{"type":36,"value":696},{"type":31,"tag":91,"props":757,"children":758},{"style":114},[759],{"type":36,"value":117},{"type":31,"tag":91,"props":761,"children":762},{"style":131},[763],{"type":36,"value":705},{"type":31,"tag":91,"props":765,"children":766},{"style":137},[767],{"type":36,"value":140},{"type":31,"tag":91,"props":769,"children":770},{"style":114},[771],{"type":36,"value":714},{"type":31,"tag":91,"props":773,"children":774},{"style":108},[775],{"type":36,"value":36},{"type":31,"tag":91,"props":777,"children":778},{"style":114},[779],{"type":36,"value":780},"())\n",{"type":31,"tag":91,"props":782,"children":783},{"class":93,"line":25},[784],{"type":31,"tag":91,"props":785,"children":786},{"style":114},[787],{"type":36,"value":788},"  ]);\n",{"type":31,"tag":91,"props":790,"children":791},{"class":93,"line":294},[792],{"type":31,"tag":91,"props":793,"children":794},{"style":114},[795],{"type":36,"value":189},{"type":31,"tag":91,"props":797,"children":798},{"class":93,"line":302},[799,803,808,812,817,822],{"type":31,"tag":91,"props":800,"children":801},{"style":137},[802],{"type":36,"value":154},{"type":31,"tag":91,"props":804,"children":805},{"style":157},[806],{"type":36,"value":807}," legacy$",{"type":31,"tag":91,"props":809,"children":810},{"style":137},[811],{"type":36,"value":165},{"type":31,"tag":91,"props":813,"children":814},{"style":114},[815],{"type":36,"value":816}," cheerio.",{"type":31,"tag":91,"props":818,"children":819},{"style":108},[820],{"type":36,"value":821},"load",{"type":31,"tag":91,"props":823,"children":824},{"style":114},[825],{"type":36,"value":826},"(legacyHTML);\n",{"type":31,"tag":91,"props":828,"children":829},{"class":93,"line":331},[830,834,839,843,847,851],{"type":31,"tag":91,"props":831,"children":832},{"style":137},[833],{"type":36,"value":154},{"type":31,"tag":91,"props":835,"children":836},{"style":157},[837],{"type":36,"value":838}," headless$",{"type":31,"tag":91,"props":840,"children":841},{"style":137},[842],{"type":36,"value":165},{"type":31,"tag":91,"props":844,"children":845},{"style":114},[846],{"type":36,"value":816},{"type":31,"tag":91,"props":848,"children":849},{"style":108},[850],{"type":36,"value":821},{"type":31,"tag":91,"props":852,"children":853},{"style":114},[854],{"type":36,"value":855},"(headlessHTML);\n",{"type":31,"tag":91,"props":857,"children":858},{"class":93,"line":345},[859],{"type":31,"tag":91,"props":860,"children":861},{"style":114},[862],{"type":36,"value":189},{"type":31,"tag":91,"props":864,"children":865},{"class":93,"line":354},[866,870,875,879],{"type":31,"tag":91,"props":867,"children":868},{"style":137},[869],{"type":36,"value":154},{"type":31,"tag":91,"props":871,"children":872},{"style":157},[873],{"type":36,"value":874}," diffs",{"type":31,"tag":91,"props":876,"children":877},{"style":137},[878],{"type":36,"value":165},{"type":31,"tag":91,"props":880,"children":881},{"style":114},[882],{"type":36,"value":145},{"type":31,"tag":91,"props":884,"children":886},{"class":93,"line":885},15,[887,892,897,901,906,910,914,919,924,928,932,936,940,944],{"type":31,"tag":91,"props":888,"children":889},{"style":114},[890],{"type":36,"value":891},"    title: ",{"type":31,"tag":91,"props":893,"children":894},{"style":108},[895],{"type":36,"value":896},"legacy$",{"type":31,"tag":91,"props":898,"children":899},{"style":114},[900],{"type":36,"value":117},{"type":31,"tag":91,"props":902,"children":903},{"style":120},[904],{"type":36,"value":905},"'title'",{"type":31,"tag":91,"props":907,"children":908},{"style":114},[909],{"type":36,"value":691},{"type":31,"tag":91,"props":911,"children":912},{"style":108},[913],{"type":36,"value":36},{"type":31,"tag":91,"props":915,"children":916},{"style":114},[917],{"type":36,"value":918},"() ",{"type":31,"tag":91,"props":920,"children":921},{"style":137},[922],{"type":36,"value":923},"!==",{"type":31,"tag":91,"props":925,"children":926},{"style":108},[927],{"type":36,"value":838},{"type":31,"tag":91,"props":929,"children":930},{"style":114},[931],{"type":36,"value":117},{"type":31,"tag":91,"props":933,"children":934},{"style":120},[935],{"type":36,"value":905},{"type":31,"tag":91,"props":937,"children":938},{"style":114},[939],{"type":36,"value":691},{"type":31,"tag":91,"props":941,"children":942},{"style":108},[943],{"type":36,"value":36},{"type":31,"tag":91,"props":945,"children":946},{"style":114},[947],{"type":36,"value":948},"(),\n",{"type":31,"tag":91,"props":950,"children":952},{"class":93,"line":951},16,[953,958,962,966,971,975,980,984,989,994,998],{"type":31,"tag":91,"props":954,"children":955},{"style":114},[956],{"type":36,"value":957},"    metaDesc: ",{"type":31,"tag":91,"props":959,"children":960},{"style":108},[961],{"type":36,"value":896},{"type":31,"tag":91,"props":963,"children":964},{"style":114},[965],{"type":36,"value":117},{"type":31,"tag":91,"props":967,"children":968},{"style":120},[969],{"type":36,"value":970},"'meta[name=\"description\"]'",{"type":31,"tag":91,"props":972,"children":973},{"style":114},[974],{"type":36,"value":691},{"type":31,"tag":91,"props":976,"children":977},{"style":108},[978],{"type":36,"value":979},"attr",{"type":31,"tag":91,"props":981,"children":982},{"style":114},[983],{"type":36,"value":117},{"type":31,"tag":91,"props":985,"children":986},{"style":120},[987],{"type":36,"value":988},"'content'",{"type":31,"tag":91,"props":990,"children":991},{"style":114},[992],{"type":36,"value":993},") ",{"type":31,"tag":91,"props":995,"children":996},{"style":137},[997],{"type":36,"value":923},{"type":31,"tag":91,"props":999,"children":1000},{"style":114},[1001],{"type":36,"value":1002}," \n",{"type":31,"tag":91,"props":1004,"children":1006},{"class":93,"line":1005},17,[1007,1012,1016,1020,1024,1028,1032,1036],{"type":31,"tag":91,"props":1008,"children":1009},{"style":108},[1010],{"type":36,"value":1011},"              headless$",{"type":31,"tag":91,"props":1013,"children":1014},{"style":114},[1015],{"type":36,"value":117},{"type":31,"tag":91,"props":1017,"children":1018},{"style":120},[1019],{"type":36,"value":970},{"type":31,"tag":91,"props":1021,"children":1022},{"style":114},[1023],{"type":36,"value":691},{"type":31,"tag":91,"props":1025,"children":1026},{"style":108},[1027],{"type":36,"value":979},{"type":31,"tag":91,"props":1029,"children":1030},{"style":114},[1031],{"type":36,"value":117},{"type":31,"tag":91,"props":1033,"children":1034},{"style":120},[1035],{"type":36,"value":988},{"type":31,"tag":91,"props":1037,"children":1038},{"style":114},[1039],{"type":36,"value":1040},"),\n",{"type":31,"tag":91,"props":1042,"children":1044},{"class":93,"line":1043},18,[1045,1050,1054,1058,1063,1067,1071,1075,1080,1084,1088],{"type":31,"tag":91,"props":1046,"children":1047},{"style":114},[1048],{"type":36,"value":1049},"    canonical: ",{"type":31,"tag":91,"props":1051,"children":1052},{"style":108},[1053],{"type":36,"value":896},{"type":31,"tag":91,"props":1055,"children":1056},{"style":114},[1057],{"type":36,"value":117},{"type":31,"tag":91,"props":1059,"children":1060},{"style":120},[1061],{"type":36,"value":1062},"'link[rel=\"canonical\"]'",{"type":31,"tag":91,"props":1064,"children":1065},{"style":114},[1066],{"type":36,"value":691},{"type":31,"tag":91,"props":1068,"children":1069},{"style":108},[1070],{"type":36,"value":979},{"type":31,"tag":91,"props":1072,"children":1073},{"style":114},[1074],{"type":36,"value":117},{"type":31,"tag":91,"props":1076,"children":1077},{"style":120},[1078],{"type":36,"value":1079},"'href'",{"type":31,"tag":91,"props":1081,"children":1082},{"style":114},[1083],{"type":36,"value":993},{"type":31,"tag":91,"props":1085,"children":1086},{"style":137},[1087],{"type":36,"value":923},{"type":31,"tag":91,"props":1089,"children":1090},{"style":114},[1091],{"type":36,"value":1002},{"type":31,"tag":91,"props":1093,"children":1095},{"class":93,"line":1094},19,[1096,1101,1105,1109,1113,1117,1121,1125],{"type":31,"tag":91,"props":1097,"children":1098},{"style":108},[1099],{"type":36,"value":1100},"               headless$",{"type":31,"tag":91,"props":1102,"children":1103},{"style":114},[1104],{"type":36,"value":117},{"type":31,"tag":91,"props":1106,"children":1107},{"style":120},[1108],{"type":36,"value":1062},{"type":31,"tag":91,"props":1110,"children":1111},{"style":114},[1112],{"type":36,"value":691},{"type":31,"tag":91,"props":1114,"children":1115},{"style":108},[1116],{"type":36,"value":979},{"type":31,"tag":91,"props":1118,"children":1119},{"style":114},[1120],{"type":36,"value":117},{"type":31,"tag":91,"props":1122,"children":1123},{"style":120},[1124],{"type":36,"value":1079},{"type":31,"tag":91,"props":1126,"children":1127},{"style":114},[1128],{"type":36,"value":1040},{"type":31,"tag":91,"props":1130,"children":1132},{"class":93,"line":1131},20,[1133,1138,1142,1146,1151,1155,1160,1164,1168],{"type":31,"tag":91,"props":1134,"children":1135},{"style":114},[1136],{"type":36,"value":1137},"    jsonLD: ",{"type":31,"tag":91,"props":1139,"children":1140},{"style":108},[1141],{"type":36,"value":896},{"type":31,"tag":91,"props":1143,"children":1144},{"style":114},[1145],{"type":36,"value":117},{"type":31,"tag":91,"props":1147,"children":1148},{"style":120},[1149],{"type":36,"value":1150},"'script[type=\"application\u002Fld+json\"]'",{"type":31,"tag":91,"props":1152,"children":1153},{"style":114},[1154],{"type":36,"value":691},{"type":31,"tag":91,"props":1156,"children":1157},{"style":108},[1158],{"type":36,"value":1159},"html",{"type":31,"tag":91,"props":1161,"children":1162},{"style":114},[1163],{"type":36,"value":918},{"type":31,"tag":91,"props":1165,"children":1166},{"style":137},[1167],{"type":36,"value":923},{"type":31,"tag":91,"props":1169,"children":1170},{"style":114},[1171],{"type":36,"value":1002},{"type":31,"tag":91,"props":1173,"children":1175},{"class":93,"line":1174},21,[1176,1181,1185,1189,1193,1197],{"type":31,"tag":91,"props":1177,"children":1178},{"style":108},[1179],{"type":36,"value":1180},"            headless$",{"type":31,"tag":91,"props":1182,"children":1183},{"style":114},[1184],{"type":36,"value":117},{"type":31,"tag":91,"props":1186,"children":1187},{"style":120},[1188],{"type":36,"value":1150},{"type":31,"tag":91,"props":1190,"children":1191},{"style":114},[1192],{"type":36,"value":691},{"type":31,"tag":91,"props":1194,"children":1195},{"style":108},[1196],{"type":36,"value":1159},{"type":31,"tag":91,"props":1198,"children":1199},{"style":114},[1200],{"type":36,"value":1201},"()\n",{"type":31,"tag":91,"props":1203,"children":1205},{"class":93,"line":1204},22,[1206],{"type":31,"tag":91,"props":1207,"children":1208},{"style":114},[1209],{"type":36,"value":1210},"  };\n",{"type":31,"tag":91,"props":1212,"children":1214},{"class":93,"line":1213},23,[1215],{"type":31,"tag":91,"props":1216,"children":1217},{"style":114},[1218],{"type":36,"value":189},{"type":31,"tag":91,"props":1220,"children":1222},{"class":93,"line":1221},24,[1223,1227],{"type":31,"tag":91,"props":1224,"children":1225},{"style":137},[1226],{"type":36,"value":308},{"type":31,"tag":91,"props":1228,"children":1229},{"style":114},[1230],{"type":36,"value":1231}," { url, diffs };\n",{"type":31,"tag":91,"props":1233,"children":1235},{"class":93,"line":1234},25,[1236],{"type":31,"tag":91,"props":1237,"children":1238},{"style":114},[1239],{"type":36,"value":1240},"}\n",{"type":31,"tag":91,"props":1242,"children":1244},{"class":93,"line":1243},26,[1245],{"type":31,"tag":91,"props":1246,"children":1247},{"emptyLinePlaceholder":565},[1248],{"type":36,"value":568},{"type":31,"tag":91,"props":1250,"children":1252},{"class":93,"line":1251},27,[1253],{"type":31,"tag":91,"props":1254,"children":1255},{"style":98},[1256],{"type":36,"value":1257},"\u002F\u002F Ejecuta para 500 URLs principales\n",{"type":31,"tag":91,"props":1259,"children":1261},{"class":93,"line":1260},28,[1262,1267,1272,1276,1280,1284,1288,1292,1297,1302],{"type":31,"tag":91,"props":1263,"children":1264},{"style":137},[1265],{"type":36,"value":1266},"const",{"type":31,"tag":91,"props":1268,"children":1269},{"style":157},[1270],{"type":36,"value":1271}," results",{"type":31,"tag":91,"props":1273,"children":1274},{"style":137},[1275],{"type":36,"value":165},{"type":31,"tag":91,"props":1277,"children":1278},{"style":137},[1279],{"type":36,"value":641},{"type":31,"tag":91,"props":1281,"children":1282},{"style":157},[1283],{"type":36,"value":646},{"type":31,"tag":91,"props":1285,"children":1286},{"style":114},[1287],{"type":36,"value":57},{"type":31,"tag":91,"props":1289,"children":1290},{"style":108},[1291],{"type":36,"value":655},{"type":31,"tag":91,"props":1293,"children":1294},{"style":114},[1295],{"type":36,"value":1296},"(topUrls.",{"type":31,"tag":91,"props":1298,"children":1299},{"style":108},[1300],{"type":36,"value":1301},"map",{"type":31,"tag":91,"props":1303,"children":1304},{"style":114},[1305],{"type":36,"value":1306},"(compareSEO));\n",{"type":31,"tag":91,"props":1308,"children":1310},{"class":93,"line":1309},29,[1311,1315,1320,1324,1329,1334,1338,1342,1346,1351,1356,1361,1366,1370,1375,1379],{"type":31,"tag":91,"props":1312,"children":1313},{"style":137},[1314],{"type":36,"value":1266},{"type":31,"tag":91,"props":1316,"children":1317},{"style":157},[1318],{"type":36,"value":1319}," failures",{"type":31,"tag":91,"props":1321,"children":1322},{"style":137},[1323],{"type":36,"value":165},{"type":31,"tag":91,"props":1325,"children":1326},{"style":114},[1327],{"type":36,"value":1328}," results.",{"type":31,"tag":91,"props":1330,"children":1331},{"style":108},[1332],{"type":36,"value":1333},"filter",{"type":31,"tag":91,"props":1335,"children":1336},{"style":114},[1337],{"type":36,"value":117},{"type":31,"tag":91,"props":1339,"children":1340},{"style":131},[1341],{"type":36,"value":705},{"type":31,"tag":91,"props":1343,"children":1344},{"style":137},[1345],{"type":36,"value":140},{"type":31,"tag":91,"props":1347,"children":1348},{"style":114},[1349],{"type":36,"value":1350}," Object.",{"type":31,"tag":91,"props":1352,"children":1353},{"style":108},[1354],{"type":36,"value":1355},"values",{"type":31,"tag":91,"props":1357,"children":1358},{"style":114},[1359],{"type":36,"value":1360},"(r.diffs).",{"type":31,"tag":91,"props":1362,"children":1363},{"style":108},[1364],{"type":36,"value":1365},"some",{"type":31,"tag":91,"props":1367,"children":1368},{"style":114},[1369],{"type":36,"value":117},{"type":31,"tag":91,"props":1371,"children":1372},{"style":131},[1373],{"type":36,"value":1374},"d",{"type":31,"tag":91,"props":1376,"children":1377},{"style":137},[1378],{"type":36,"value":140},{"type":31,"tag":91,"props":1380,"children":1381},{"style":114},[1382],{"type":36,"value":1383}," d));\n",{"type":31,"tag":91,"props":1385,"children":1387},{"class":93,"line":1386},30,[1388,1393,1398,1402,1407,1412,1416,1421,1426],{"type":31,"tag":91,"props":1389,"children":1390},{"style":114},[1391],{"type":36,"value":1392},"console.",{"type":31,"tag":91,"props":1394,"children":1395},{"style":108},[1396],{"type":36,"value":1397},"log",{"type":31,"tag":91,"props":1399,"children":1400},{"style":114},[1401],{"type":36,"value":117},{"type":31,"tag":91,"props":1403,"children":1404},{"style":120},[1405],{"type":36,"value":1406},"`${",{"type":31,"tag":91,"props":1408,"children":1409},{"style":114},[1410],{"type":36,"value":1411},"failures",{"type":31,"tag":91,"props":1413,"children":1414},{"style":120},[1415],{"type":36,"value":57},{"type":31,"tag":91,"props":1417,"children":1418},{"style":157},[1419],{"type":36,"value":1420},"length",{"type":31,"tag":91,"props":1422,"children":1423},{"style":120},[1424],{"type":36,"value":1425},"} URLs con discrepancia SEO`",{"type":31,"tag":91,"props":1427,"children":1428},{"style":114},[1429],{"type":36,"value":1430},");\n",{"type":31,"tag":32,"props":1432,"children":1433},{},[1434],{"type":36,"value":1435},"Si >5% de URLs muestran diferencias, pausa la migración. Ejemplo: si metadescriptions dinámicas desde metafields Shopify se pierden en queries GraphQL headless, 500 páginas pueden perder 12-18% de tráfico orgánico (datos Search Console 2025).",{"type":31,"tag":32,"props":1437,"children":1438},{},[1439,1444,1446,1452,1454,1460,1462,1468,1470,1476,1478,1484],{"type":31,"tag":51,"props":1440,"children":1441},{},[1442],{"type":36,"value":1443},"Testing de Canonical:",{"type":36,"value":1445}," Headless típicamente usa rutas como ",{"type":31,"tag":64,"props":1447,"children":1449},{"className":1448},[],[1450],{"type":36,"value":1451},"\u002Fp\u002F{id}",{"type":36,"value":1453}," en lugar de ",{"type":31,"tag":64,"props":1455,"children":1457},{"className":1456},[],[1458],{"type":36,"value":1459},"\u002Fproducts\u002F{handle}",{"type":36,"value":1461}," (mejor rendimiento en routing). Aquí necesitas 301 redirects + canonical tags. Test: ",{"type":31,"tag":64,"props":1463,"children":1465},{"className":1464},[],[1466],{"type":36,"value":1467},"curl -I https:\u002F\u002Fheadless.example.com\u002Fold-path",{"type":36,"value":1469}," debe devolver ",{"type":31,"tag":64,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":36,"value":1475},"301 → \u002Fnew-path",{"type":36,"value":1477}," y ",{"type":31,"tag":64,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":36,"value":1483},"\u003Clink rel=\"canonical\" href=\"\u002Fnew-path\">",{"type":36,"value":57},{"type":31,"tag":39,"props":1486,"children":1488},{"id":1487},"análisis-de-picos-de-abandono-en-agregar-al-carrito",[1489],{"type":36,"value":1490},"Análisis de Picos de Abandono en Agregar al Carrito",{"type":31,"tag":32,"props":1492,"children":1493},{},[1494],{"type":36,"value":1495},"Post-migración headless, el problema más común: usuario hace clic en \"Agregar al carrito\", no pasa nada o el spinner gira 3 segundos y timeout. Raíz típica: Shopify Storefront API hit rate limits (50 req\u002Fs default, burst 100).",{"type":31,"tag":32,"props":1497,"children":1498},{},[1499],{"type":31,"tag":51,"props":1500,"children":1501},{},[1502],{"type":36,"value":1503},"Setup de monitoreo:",{"type":31,"tag":81,"props":1505,"children":1507},{"className":83,"code":1506,"language":85,"meta":14,"style":14},"\u002F\u002F Event tracking ATC — app headless\nasync function addToCart(variantId, quantity) {\n  const startTime = performance.now();\n  \n  try {\n    const response = await fetch('\u002Fapi\u002Fcart\u002Fadd', {\n      method: 'POST',\n      body: JSON.stringify({ variantId, quantity })\n    });\n    \n    const duration = performance.now() - startTime;\n    \n    \u002F\u002F RUM beacon\n    navigator.sendBeacon('\u002Fanalytics\u002Fatc', JSON.stringify({\n      success: response.ok,\n      duration,\n      variantId,\n      timestamp: Date.now()\n    }));\n    \n    if (!response.ok) {\n      showErrorToast('Error al actualizar carrito, intenta de nuevo');\n    }\n  } catch (err) {\n    reportError('ATC_TIMEOUT', { variantId, error: err.message });\n  }\n}\n",[1508],{"type":31,"tag":64,"props":1509,"children":1510},{"__ignoreMap":14},[1511,1519,1557,1588,1595,1607,1647,1665,1692,1700,1708,1746,1753,1761,1804,1812,1820,1828,1844,1851,1858,1881,1902,1910,1928,1950,1957],{"type":31,"tag":91,"props":1512,"children":1513},{"class":93,"line":94},[1514],{"type":31,"tag":91,"props":1515,"children":1516},{"style":98},[1517],{"type":36,"value":1518},"\u002F\u002F Event tracking ATC — app headless\n",{"type":31,"tag":91,"props":1520,"children":1521},{"class":93,"line":104},[1522,1526,1530,1535,1539,1544,1548,1553],{"type":31,"tag":91,"props":1523,"children":1524},{"style":137},[1525],{"type":36,"value":576},{"type":31,"tag":91,"props":1527,"children":1528},{"style":137},[1529],{"type":36,"value":581},{"type":31,"tag":91,"props":1531,"children":1532},{"style":108},[1533],{"type":36,"value":1534}," addToCart",{"type":31,"tag":91,"props":1536,"children":1537},{"style":114},[1538],{"type":36,"value":117},{"type":31,"tag":91,"props":1540,"children":1541},{"style":131},[1542],{"type":36,"value":1543},"variantId",{"type":31,"tag":91,"props":1545,"children":1546},{"style":114},[1547],{"type":36,"value":128},{"type":31,"tag":91,"props":1549,"children":1550},{"style":131},[1551],{"type":36,"value":1552},"quantity",{"type":31,"tag":91,"props":1554,"children":1555},{"style":114},[1556],{"type":36,"value":600},{"type":31,"tag":91,"props":1558,"children":1559},{"class":93,"line":148},[1560,1564,1569,1573,1578,1583],{"type":31,"tag":91,"props":1561,"children":1562},{"style":137},[1563],{"type":36,"value":154},{"type":31,"tag":91,"props":1565,"children":1566},{"style":157},[1567],{"type":36,"value":1568}," startTime",{"type":31,"tag":91,"props":1570,"children":1571},{"style":137},[1572],{"type":36,"value":165},{"type":31,"tag":91,"props":1574,"children":1575},{"style":114},[1576],{"type":36,"value":1577}," performance.",{"type":31,"tag":91,"props":1579,"children":1580},{"style":108},[1581],{"type":36,"value":1582},"now",{"type":31,"tag":91,"props":1584,"children":1585},{"style":114},[1586],{"type":36,"value":1587},"();\n",{"type":31,"tag":91,"props":1589,"children":1590},{"class":93,"line":183},[1591],{"type":31,"tag":91,"props":1592,"children":1593},{"style":114},[1594],{"type":36,"value":189},{"type":31,"tag":91,"props":1596,"children":1597},{"class":93,"line":192},[1598,1603],{"type":31,"tag":91,"props":1599,"children":1600},{"style":137},[1601],{"type":36,"value":1602},"  try",{"type":31,"tag":91,"props":1604,"children":1605},{"style":114},[1606],{"type":36,"value":145},{"type":31,"tag":91,"props":1608,"children":1609},{"class":93,"line":225},[1610,1615,1620,1624,1628,1633,1637,1642],{"type":31,"tag":91,"props":1611,"children":1612},{"style":137},[1613],{"type":36,"value":1614},"    const",{"type":31,"tag":91,"props":1616,"children":1617},{"style":157},[1618],{"type":36,"value":1619}," response",{"type":31,"tag":91,"props":1621,"children":1622},{"style":137},[1623],{"type":36,"value":165},{"type":31,"tag":91,"props":1625,"children":1626},{"style":137},[1627],{"type":36,"value":641},{"type":31,"tag":91,"props":1629,"children":1630},{"style":108},[1631],{"type":36,"value":1632}," fetch",{"type":31,"tag":91,"props":1634,"children":1635},{"style":114},[1636],{"type":36,"value":117},{"type":31,"tag":91,"props":1638,"children":1639},{"style":120},[1640],{"type":36,"value":1641},"'\u002Fapi\u002Fcart\u002Fadd'",{"type":31,"tag":91,"props":1643,"children":1644},{"style":114},[1645],{"type":36,"value":1646},", {\n",{"type":31,"tag":91,"props":1648,"children":1649},{"class":93,"line":258},[1650,1655,1660],{"type":31,"tag":91,"props":1651,"children":1652},{"style":114},[1653],{"type":36,"value":1654},"      method: ",{"type":31,"tag":91,"props":1656,"children":1657},{"style":120},[1658],{"type":36,"value":1659},"'POST'",{"type":31,"tag":91,"props":1661,"children":1662},{"style":114},[1663],{"type":36,"value":1664},",\n",{"type":31,"tag":91,"props":1666,"children":1667},{"class":93,"line":277},[1668,1673,1678,1682,1687],{"type":31,"tag":91,"props":1669,"children":1670},{"style":114},[1671],{"type":36,"value":1672},"      body: ",{"type":31,"tag":91,"props":1674,"children":1675},{"style":157},[1676],{"type":36,"value":1677},"JSON",{"type":31,"tag":91,"props":1679,"children":1680},{"style":114},[1681],{"type":36,"value":57},{"type":31,"tag":91,"props":1683,"children":1684},{"style":108},[1685],{"type":36,"value":1686},"stringify",{"type":31,"tag":91,"props":1688,"children":1689},{"style":114},[1690],{"type":36,"value":1691},"({ variantId, quantity })\n",{"type":31,"tag":91,"props":1693,"children":1694},{"class":93,"line":25},[1695],{"type":31,"tag":91,"props":1696,"children":1697},{"style":114},[1698],{"type":36,"value":1699},"    });\n",{"type":31,"tag":91,"props":1701,"children":1702},{"class":93,"line":294},[1703],{"type":31,"tag":91,"props":1704,"children":1705},{"style":114},[1706],{"type":36,"value":1707},"    \n",{"type":31,"tag":91,"props":1709,"children":1710},{"class":93,"line":302},[1711,1715,1720,1724,1728,1732,1736,1741],{"type":31,"tag":91,"props":1712,"children":1713},{"style":137},[1714],{"type":36,"value":1614},{"type":31,"tag":91,"props":1716,"children":1717},{"style":157},[1718],{"type":36,"value":1719}," duration",{"type":31,"tag":91,"props":1721,"children":1722},{"style":137},[1723],{"type":36,"value":165},{"type":31,"tag":91,"props":1725,"children":1726},{"style":114},[1727],{"type":36,"value":1577},{"type":31,"tag":91,"props":1729,"children":1730},{"style":108},[1731],{"type":36,"value":1582},{"type":31,"tag":91,"props":1733,"children":1734},{"style":114},[1735],{"type":36,"value":918},{"type":31,"tag":91,"props":1737,"children":1738},{"style":137},[1739],{"type":36,"value":1740},"-",{"type":31,"tag":91,"props":1742,"children":1743},{"style":114},[1744],{"type":36,"value":1745}," startTime;\n",{"type":31,"tag":91,"props":1747,"children":1748},{"class":93,"line":331},[1749],{"type":31,"tag":91,"props":1750,"children":1751},{"style":114},[1752],{"type":36,"value":1707},{"type":31,"tag":91,"props":1754,"children":1755},{"class":93,"line":345},[1756],{"type":31,"tag":91,"props":1757,"children":1758},{"style":98},[1759],{"type":36,"value":1760},"    \u002F\u002F RUM beacon\n",{"type":31,"tag":91,"props":1762,"children":1763},{"class":93,"line":354},[1764,1769,1774,1778,1783,1787,1791,1795,1799],{"type":31,"tag":91,"props":1765,"children":1766},{"style":114},[1767],{"type":36,"value":1768},"    navigator.",{"type":31,"tag":91,"props":1770,"children":1771},{"style":108},[1772],{"type":36,"value":1773},"sendBeacon",{"type":31,"tag":91,"props":1775,"children":1776},{"style":114},[1777],{"type":36,"value":117},{"type":31,"tag":91,"props":1779,"children":1780},{"style":120},[1781],{"type":36,"value":1782},"'\u002Fanalytics\u002Fatc'",{"type":31,"tag":91,"props":1784,"children":1785},{"style":114},[1786],{"type":36,"value":128},{"type":31,"tag":91,"props":1788,"children":1789},{"style":157},[1790],{"type":36,"value":1677},{"type":31,"tag":91,"props":1792,"children":1793},{"style":114},[1794],{"type":36,"value":57},{"type":31,"tag":91,"props":1796,"children":1797},{"style":108},[1798],{"type":36,"value":1686},{"type":31,"tag":91,"props":1800,"children":1801},{"style":114},[1802],{"type":36,"value":1803},"({\n",{"type":31,"tag":91,"props":1805,"children":1806},{"class":93,"line":885},[1807],{"type":31,"tag":91,"props":1808,"children":1809},{"style":114},[1810],{"type":36,"value":1811},"      success: response.ok,\n",{"type":31,"tag":91,"props":1813,"children":1814},{"class":93,"line":951},[1815],{"type":31,"tag":91,"props":1816,"children":1817},{"style":114},[1818],{"type":36,"value":1819},"      duration,\n",{"type":31,"tag":91,"props":1821,"children":1822},{"class":93,"line":1005},[1823],{"type":31,"tag":91,"props":1824,"children":1825},{"style":114},[1826],{"type":36,"value":1827},"      variantId,\n",{"type":31,"tag":91,"props":1829,"children":1830},{"class":93,"line":1043},[1831,1836,1840],{"type":31,"tag":91,"props":1832,"children":1833},{"style":114},[1834],{"type":36,"value":1835},"      timestamp: Date.",{"type":31,"tag":91,"props":1837,"children":1838},{"style":108},[1839],{"type":36,"value":1582},{"type":31,"tag":91,"props":1841,"children":1842},{"style":114},[1843],{"type":36,"value":1201},{"type":31,"tag":91,"props":1845,"children":1846},{"class":93,"line":1094},[1847],{"type":31,"tag":91,"props":1848,"children":1849},{"style":114},[1850],{"type":36,"value":283},{"type":31,"tag":91,"props":1852,"children":1853},{"class":93,"line":1131},[1854],{"type":31,"tag":91,"props":1855,"children":1856},{"style":114},[1857],{"type":36,"value":1707},{"type":31,"tag":91,"props":1859,"children":1860},{"class":93,"line":1174},[1861,1866,1871,1876],{"type":31,"tag":91,"props":1862,"children":1863},{"style":137},[1864],{"type":36,"value":1865},"    if",{"type":31,"tag":91,"props":1867,"children":1868},{"style":114},[1869],{"type":36,"value":1870}," (",{"type":31,"tag":91,"props":1872,"children":1873},{"style":137},[1874],{"type":36,"value":1875},"!",{"type":31,"tag":91,"props":1877,"children":1878},{"style":114},[1879],{"type":36,"value":1880},"response.ok) {\n",{"type":31,"tag":91,"props":1882,"children":1883},{"class":93,"line":1204},[1884,1889,1893,1898],{"type":31,"tag":91,"props":1885,"children":1886},{"style":108},[1887],{"type":36,"value":1888},"      showErrorToast",{"type":31,"tag":91,"props":1890,"children":1891},{"style":114},[1892],{"type":36,"value":117},{"type":31,"tag":91,"props":1894,"children":1895},{"style":120},[1896],{"type":36,"value":1897},"'Error al actualizar carrito, intenta de nuevo'",{"type":31,"tag":91,"props":1899,"children":1900},{"style":114},[1901],{"type":36,"value":1430},{"type":31,"tag":91,"props":1903,"children":1904},{"class":93,"line":1213},[1905],{"type":31,"tag":91,"props":1906,"children":1907},{"style":114},[1908],{"type":36,"value":1909},"    }\n",{"type":31,"tag":91,"props":1911,"children":1912},{"class":93,"line":1221},[1913,1918,1923],{"type":31,"tag":91,"props":1914,"children":1915},{"style":114},[1916],{"type":36,"value":1917},"  } ",{"type":31,"tag":91,"props":1919,"children":1920},{"style":137},[1921],{"type":36,"value":1922},"catch",{"type":31,"tag":91,"props":1924,"children":1925},{"style":114},[1926],{"type":36,"value":1927}," (err) {\n",{"type":31,"tag":91,"props":1929,"children":1930},{"class":93,"line":1234},[1931,1936,1940,1945],{"type":31,"tag":91,"props":1932,"children":1933},{"style":108},[1934],{"type":36,"value":1935},"    reportError",{"type":31,"tag":91,"props":1937,"children":1938},{"style":114},[1939],{"type":36,"value":117},{"type":31,"tag":91,"props":1941,"children":1942},{"style":120},[1943],{"type":36,"value":1944},"'ATC_TIMEOUT'",{"type":31,"tag":91,"props":1946,"children":1947},{"style":114},[1948],{"type":36,"value":1949},", { variantId, error: err.message });\n",{"type":31,"tag":91,"props":1951,"children":1952},{"class":93,"line":1243},[1953],{"type":31,"tag":91,"props":1954,"children":1955},{"style":114},[1956],{"type":36,"value":291},{"type":31,"tag":91,"props":1958,"children":1959},{"class":93,"line":1251},[1960],{"type":31,"tag":91,"props":1961,"children":1962},{"style":114},[1963],{"type":36,"value":1240},{"type":31,"tag":32,"props":1965,"children":1966},{},[1967,1972,1974,1980],{"type":31,"tag":51,"props":1968,"children":1969},{},[1970],{"type":36,"value":1971},"Análisis:",{"type":36,"value":1973}," En dashboard Grafana\u002FDatadog, si ",{"type":31,"tag":64,"props":1975,"children":1977},{"className":1976},[],[1978],{"type":36,"value":1979},"atc_duration_p95",{"type":36,"value":1981}," supera 2000ms, tienes problema. Causas probables:",{"type":31,"tag":1983,"props":1984,"children":1985},"ul",{},[1986,1996,2006],{"type":31,"tag":451,"props":1987,"children":1988},{},[1989,1994],{"type":31,"tag":51,"props":1990,"children":1991},{},[1992],{"type":36,"value":1993},"Latencia API:",{"type":36,"value":1995}," Shopify Storefront API response >800ms. Solución: cachea estado del carrito client-side (UI optimista, sync en background).",{"type":31,"tag":451,"props":1997,"children":1998},{},[1999,2004],{"type":31,"tag":51,"props":2000,"children":2001},{},[2002],{"type":36,"value":2003},"Hydration delay:",{"type":36,"value":2005}," Si React no ha hidratado, el handler de evento no está attached. Solución: SSR + progressive enhancement, botón con interactividad inmediata.",{"type":31,"tag":451,"props":2007,"children":2008},{},[2009,2014],{"type":31,"tag":51,"props":2010,"children":2011},{},[2012],{"type":36,"value":2013},"Bundle bloqueante:",{"type":36,"value":2015}," Size JS >500kb causa parse blocking en 3G. Solución: code splitting, CSS crítico inline.",{"type":31,"tag":32,"props":2017,"children":2018},{},[2019],{"type":36,"value":2020},"En una migración real, la tasa de éxito ATC bajó de 96% a 89%. RUM mostró: en móvil, hydration tardaba 4.2s porque Hydrogen cargaba 780kb de JS. Con lazy load + splitting por ruta, bajamos a 210kb y recuperamos 95% de success rate.",{"type":31,"tag":39,"props":2022,"children":2024},{"id":2023},"mitigación-de-riesgos-feature-flags-e-instant-rollback",[2025],{"type":36,"value":2026},"Mitigación de Riesgos: Feature Flags e Instant Rollback",{"type":31,"tag":32,"props":2028,"children":2029},{},[2030],{"type":36,"value":2031},"Sin feature flags, no avanzes en migración headless. Con LaunchDarkly, Statsig o un servicio Redis custom, controlas para cada usuario si ve render headless o legacy.",{"type":31,"tag":81,"props":2033,"children":2035},{"className":83,"code":2034,"language":85,"meta":14,"style":14},"\u002F\u002F Feature flag check — edge middleware\nexport async function middleware(request) {\n  const userId = request.cookies.get('user_id');\n  const country = request.geo.country;\n  \n  const headlessEnabled = await checkFlag('headless-rollout', {\n    userId,\n    country,\n    trafficPercentage: 10 \u002F\u002F Primeros 10% de tráfico\n  });\n  \n  if (headlessEnabled) {\n    return NextResponse.rewrite('\u002Fheadless-app');\n  }\n  \n  return NextResponse.rewrite('\u002Flegacy-shopify');\n}\n",[2036],{"type":31,"tag":64,"props":2037,"children":2038},{"__ignoreMap":14},[2039,2047,2082,2121,2142,2149,2187,2195,2203,2221,2229,2236,2248,2278,2285,2292,2320],{"type":31,"tag":91,"props":2040,"children":2041},{"class":93,"line":94},[2042],{"type":31,"tag":91,"props":2043,"children":2044},{"style":98},[2045],{"type":36,"value":2046},"\u002F\u002F Feature flag check — edge middleware\n",{"type":31,"tag":91,"props":2048,"children":2049},{"class":93,"line":104},[2050,2055,2060,2064,2069,2073,2078],{"type":31,"tag":91,"props":2051,"children":2052},{"style":137},[2053],{"type":36,"value":2054},"export",{"type":31,"tag":91,"props":2056,"children":2057},{"style":137},[2058],{"type":36,"value":2059}," async",{"type":31,"tag":91,"props":2061,"children":2062},{"style":137},[2063],{"type":36,"value":581},{"type":31,"tag":91,"props":2065,"children":2066},{"style":108},[2067],{"type":36,"value":2068}," middleware",{"type":31,"tag":91,"props":2070,"children":2071},{"style":114},[2072],{"type":36,"value":117},{"type":31,"tag":91,"props":2074,"children":2075},{"style":131},[2076],{"type":36,"value":2077},"request",{"type":31,"tag":91,"props":2079,"children":2080},{"style":114},[2081],{"type":36,"value":600},{"type":31,"tag":91,"props":2083,"children":2084},{"class":93,"line":148},[2085,2089,2094,2098,2103,2108,2112,2117],{"type":31,"tag":91,"props":2086,"children":2087},{"style":137},[2088],{"type":36,"value":154},{"type":31,"tag":91,"props":2090,"children":2091},{"style":157},[2092],{"type":36,"value":2093}," userId",{"type":31,"tag":91,"props":2095,"children":2096},{"style":137},[2097],{"type":36,"value":165},{"type":31,"tag":91,"props":2099,"children":2100},{"style":114},[2101],{"type":36,"value":2102}," request.cookies.",{"type":31,"tag":91,"props":2104,"children":2105},{"style":108},[2106],{"type":36,"value":2107},"get",{"type":31,"tag":91,"props":2109,"children":2110},{"style":114},[2111],{"type":36,"value":117},{"type":31,"tag":91,"props":2113,"children":2114},{"style":120},[2115],{"type":36,"value":2116},"'user_id'",{"type":31,"tag":91,"props":2118,"children":2119},{"style":114},[2120],{"type":36,"value":1430},{"type":31,"tag":91,"props":2122,"children":2123},{"class":93,"line":183},[2124,2128,2133,2137],{"type":31,"tag":91,"props":2125,"children":2126},{"style":137},[2127],{"type":36,"value":154},{"type":31,"tag":91,"props":2129,"children":2130},{"style":157},[2131],{"type":36,"value":2132}," country",{"type":31,"tag":91,"props":2134,"children":2135},{"style":137},[2136],{"type":36,"value":165},{"type":31,"tag":91,"props":2138,"children":2139},{"style":114},[2140],{"type":36,"value":2141}," request.geo.country;\n",{"type":31,"tag":91,"props":2143,"children":2144},{"class":93,"line":192},[2145],{"type":31,"tag":91,"props":2146,"children":2147},{"style":114},[2148],{"type":36,"value":189},{"type":31,"tag":91,"props":2150,"children":2151},{"class":93,"line":225},[2152,2156,2161,2165,2169,2174,2178,2183],{"type":31,"tag":91,"props":2153,"children":2154},{"style":137},[2155],{"type":36,"value":154},{"type":31,"tag":91,"props":2157,"children":2158},{"style":157},[2159],{"type":36,"value":2160}," headlessEnabled",{"type":31,"tag":91,"props":2162,"children":2163},{"style":137},[2164],{"type":36,"value":165},{"type":31,"tag":91,"props":2166,"children":2167},{"style":137},[2168],{"type":36,"value":641},{"type":31,"tag":91,"props":2170,"children":2171},{"style":108},[2172],{"type":36,"value":2173}," checkFlag",{"type":31,"tag":91,"props":2175,"children":2176},{"style":114},[2177],{"type":36,"value":117},{"type":31,"tag":91,"props":2179,"children":2180},{"style":120},[2181],{"type":36,"value":2182},"'headless-rollout'",{"type":31,"tag":91,"props":2184,"children":2185},{"style":114},[2186],{"type":36,"value":1646},{"type":31,"tag":91,"props":2188,"children":2189},{"class":93,"line":258},[2190],{"type":31,"tag":91,"props":2191,"children":2192},{"style":114},[2193],{"type":36,"value":2194},"    userId,\n",{"type":31,"tag":91,"props":2196,"children":2197},{"class":93,"line":277},[2198],{"type":31,"tag":91,"props":2199,"children":2200},{"style":114},[2201],{"type":36,"value":2202},"    country,\n",{"type":31,"tag":91,"props":2204,"children":2205},{"class":93,"line":25},[2206,2211,2216],{"type":31,"tag":91,"props":2207,"children":2208},{"style":114},[2209],{"type":36,"value":2210},"    trafficPercentage: ",{"type":31,"tag":91,"props":2212,"children":2213},{"style":157},[2214],{"type":36,"value":2215},"10",{"type":31,"tag":91,"props":2217,"children":2218},{"style":98},[2219],{"type":36,"value":2220}," \u002F\u002F Primeros 10% de tráfico\n",{"type":31,"tag":91,"props":2222,"children":2223},{"class":93,"line":294},[2224],{"type":31,"tag":91,"props":2225,"children":2226},{"style":114},[2227],{"type":36,"value":2228},"  });\n",{"type":31,"tag":91,"props":2230,"children":2231},{"class":93,"line":302},[2232],{"type":31,"tag":91,"props":2233,"children":2234},{"style":114},[2235],{"type":36,"value":189},{"type":31,"tag":91,"props":2237,"children":2238},{"class":93,"line":331},[2239,2243],{"type":31,"tag":91,"props":2240,"children":2241},{"style":137},[2242],{"type":36,"value":198},{"type":31,"tag":91,"props":2244,"children":2245},{"style":114},[2246],{"type":36,"value":2247}," (headlessEnabled) {\n",{"type":31,"tag":91,"props":2249,"children":2250},{"class":93,"line":345},[2251,2255,2260,2265,2269,2274],{"type":31,"tag":91,"props":2252,"children":2253},{"style":137},[2254],{"type":36,"value":231},{"type":31,"tag":91,"props":2256,"children":2257},{"style":114},[2258],{"type":36,"value":2259}," NextResponse.",{"type":31,"tag":91,"props":2261,"children":2262},{"style":108},[2263],{"type":36,"value":2264},"rewrite",{"type":31,"tag":91,"props":2266,"children":2267},{"style":114},[2268],{"type":36,"value":117},{"type":31,"tag":91,"props":2270,"children":2271},{"style":120},[2272],{"type":36,"value":2273},"'\u002Fheadless-app'",{"type":31,"tag":91,"props":2275,"children":2276},{"style":114},[2277],{"type":36,"value":1430},{"type":31,"tag":91,"props":2279,"children":2280},{"class":93,"line":354},[2281],{"type":31,"tag":91,"props":2282,"children":2283},{"style":114},[2284],{"type":36,"value":291},{"type":31,"tag":91,"props":2286,"children":2287},{"class":93,"line":885},[2288],{"type":31,"tag":91,"props":2289,"children":2290},{"style":114},[2291],{"type":36,"value":189},{"type":31,"tag":91,"props":2293,"children":2294},{"class":93,"line":951},[2295,2299,2303,2307,2311,2316],{"type":31,"tag":91,"props":2296,"children":2297},{"style":137},[2298],{"type":36,"value":308},{"type":31,"tag":91,"props":2300,"children":2301},{"style":114},[2302],{"type":36,"value":2259},{"type":31,"tag":91,"props":2304,"children":2305},{"style":108},[2306],{"type":36,"value":2264},{"type":31,"tag":91,"props":2308,"children":2309},{"style":114},[2310],{"type":36,"value":117},{"type":31,"tag":91,"props":2312,"children":2313},{"style":120},[2314],{"type":36,"value":2315},"'\u002Flegacy-shopify'",{"type":31,"tag":91,"props":2317,"children":2318},{"style":114},[2319],{"type":36,"value":1430},{"type":31,"tag":91,"props":2321,"children":2322},{"class":93,"line":1005},[2323],{"type":31,"tag":91,"props":2324,"children":2325},{"style":114},[2326],{"type":36,"value":1240},{"type":31,"tag":32,"props":2328,"children":2329},{},[2330,2335],{"type":31,"tag":51,"props":2331,"children":2332},{},[2333],{"type":36,"value":2334},"Estrategia de rollback instantáneo:",{"type":36,"value":2336}," Si en una ventana deslizante de 5 minutos la tasa de error ATC supera 3%, rollback automático (alerta PagerDuty + toggle de flag).",{"type":31,"tag":81,"props":2338,"children":2342},{"className":2339,"code":2340,"language":2341,"meta":14,"style":14},"language-yaml shiki shiki-themes github-dark","# rollback-policy.yaml\nthresholds:\n  atc_error_rate: 3.0  # percent\n  lcp_p75: 3500        # milliseconds\n  revenue_drop: 5.0    # percent vs last week same hour\n\nactions:\n  - type: flag_override\n    target: headless-rollout\n    value: false\n  - type: alert\n    channel: slack-ops\n    message: \"Rollback headless activado: pico de errores ATC\"\n","yaml",[2343],{"type":31,"tag":64,"props":2344,"children":2345},{"__ignoreMap":14},[2346,2354,2368,2391,2413,2435,2442,2454,2476,2493,2510,2530,2547],{"type":31,"tag":91,"props":2347,"children":2348},{"class":93,"line":94},[2349],{"type":31,"tag":91,"props":2350,"children":2351},{"style":98},[2352],{"type":36,"value":2353},"# rollback-policy.yaml\n",{"type":31,"tag":91,"props":2355,"children":2356},{"class":93,"line":104},[2357,2363],{"type":31,"tag":91,"props":2358,"children":2360},{"style":2359},"--shiki-default:#85E89D",[2361],{"type":36,"value":2362},"thresholds",{"type":31,"tag":91,"props":2364,"children":2365},{"style":114},[2366],{"type":36,"value":2367},":\n",{"type":31,"tag":91,"props":2369,"children":2370},{"class":93,"line":148},[2371,2376,2381,2386],{"type":31,"tag":91,"props":2372,"children":2373},{"style":2359},[2374],{"type":36,"value":2375},"  atc_error_rate",{"type":31,"tag":91,"props":2377,"children":2378},{"style":114},[2379],{"type":36,"value":2380},": ",{"type":31,"tag":91,"props":2382,"children":2383},{"style":157},[2384],{"type":36,"value":2385},"3.0",{"type":31,"tag":91,"props":2387,"children":2388},{"style":98},[2389],{"type":36,"value":2390},"  # percent\n",{"type":31,"tag":91,"props":2392,"children":2393},{"class":93,"line":183},[2394,2399,2403,2408],{"type":31,"tag":91,"props":2395,"children":2396},{"style":2359},[2397],{"type":36,"value":2398},"  lcp_p75",{"type":31,"tag":91,"props":2400,"children":2401},{"style":114},[2402],{"type":36,"value":2380},{"type":31,"tag":91,"props":2404,"children":2405},{"style":157},[2406],{"type":36,"value":2407},"3500",{"type":31,"tag":91,"props":2409,"children":2410},{"style":98},[2411],{"type":36,"value":2412},"        # milliseconds\n",{"type":31,"tag":91,"props":2414,"children":2415},{"class":93,"line":192},[2416,2421,2425,2430],{"type":31,"tag":91,"props":2417,"children":2418},{"style":2359},[2419],{"type":36,"value":2420},"  revenue_drop",{"type":31,"tag":91,"props":2422,"children":2423},{"style":114},[2424],{"type":36,"value":2380},{"type":31,"tag":91,"props":2426,"children":2427},{"style":157},[2428],{"type":36,"value":2429},"5.0",{"type":31,"tag":91,"props":2431,"children":2432},{"style":98},[2433],{"type":36,"value":2434},"    # percent vs last week same hour\n",{"type":31,"tag":91,"props":2436,"children":2437},{"class":93,"line":225},[2438],{"type":31,"tag":91,"props":2439,"children":2440},{"emptyLinePlaceholder":565},[2441],{"type":36,"value":568},{"type":31,"tag":91,"props":2443,"children":2444},{"class":93,"line":258},[2445,2450],{"type":31,"tag":91,"props":2446,"children":2447},{"style":2359},[2448],{"type":36,"value":2449},"actions",{"type":31,"tag":91,"props":2451,"children":2452},{"style":114},[2453],{"type":36,"value":2367},{"type":31,"tag":91,"props":2455,"children":2456},{"class":93,"line":277},[2457,2462,2467,2471],{"type":31,"tag":91,"props":2458,"children":2459},{"style":114},[2460],{"type":36,"value":2461},"  - ",{"type":31,"tag":91,"props":2463,"children":2464},{"style":2359},[2465],{"type":36,"value":2466},"type",{"type":31,"tag":91,"props":2468,"children":2469},{"style":114},[2470],{"type":36,"value":2380},{"type":31,"tag":91,"props":2472,"children":2473},{"style":120},[2474],{"type":36,"value":2475},"flag_override\n",{"type":31,"tag":91,"props":2477,"children":2478},{"class":93,"line":25},[2479,2484,2488],{"type":31,"tag":91,"props":2480,"children":2481},{"style":2359},[2482],{"type":36,"value":2483},"    target",{"type":31,"tag":91,"props":2485,"children":2486},{"style":114},[2487],{"type":36,"value":2380},{"type":31,"tag":91,"props":2489,"children":2490},{"style":120},[2491],{"type":36,"value":2492},"headless-rollout\n",{"type":31,"tag":91,"props":2494,"children":2495},{"class":93,"line":294},[2496,2501,2505],{"type":31,"tag":91,"props":2497,"children":2498},{"style":2359},[2499],{"type":36,"value":2500},"    value",{"type":31,"tag":91,"props":2502,"children":2503},{"style":114},[2504],{"type":36,"value":2380},{"type":31,"tag":91,"props":2506,"children":2507},{"style":157},[2508],{"type":36,"value":2509},"false\n",{"type":31,"tag":91,"props":2511,"children":2512},{"class":93,"line":302},[2513,2517,2521,2525],{"type":31,"tag":91,"props":2514,"children":2515},{"style":114},[2516],{"type":36,"value":2461},{"type":31,"tag":91,"props":2518,"children":2519},{"style":2359},[2520],{"type":36,"value":2466},{"type":31,"tag":91,"props":2522,"children":2523},{"style":114},[2524],{"type":36,"value":2380},{"type":31,"tag":91,"props":2526,"children":2527},{"style":120},[2528],{"type":36,"value":2529},"alert\n",{"type":31,"tag":91,"props":2531,"children":2532},{"class":93,"line":331},[2533,2538,2542],{"type":31,"tag":91,"props":2534,"children":2535},{"style":2359},[2536],{"type":36,"value":2537},"    channel",{"type":31,"tag":91,"props":2539,"children":2540},{"style":114},[2541],{"type":36,"value":2380},{"type":31,"tag":91,"props":2543,"children":2544},{"style":120},[2545],{"type":36,"value":2546},"slack-ops\n",{"type":31,"tag":91,"props":2548,"children":2549},{"class":93,"line":345},[2550,2555,2559],{"type":31,"tag":91,"props":2551,"children":2552},{"style":2359},[2553],{"type":36,"value":2554},"    message",{"type":31,"tag":91,"props":2556,"children":2557},{"style":114},[2558],{"type":36,"value":2380},{"type":31,"tag":91,"props":2560,"children":2561},{"style":120},[2562],{"type":36,"value":2563},"\"Rollback headless activado: pico de errores ATC\"\n",{"type":31,"tag":32,"props":2565,"children":2566},{},[2567],{"type":36,"value":2568},"Con esta estructura, la migración toma 8 semanas pero la pérdida de ingresos \u003C2%. Las ganancias reales de headless (LCP 4.8s → 1.9s, conversion +12%) se realizan cuando está completa, pero ningún punto se convierte en crisis.",{"type":31,"tag":39,"props":2570,"children":2572},{"id":2571},"escenarios-de-testing-de-rendimiento-en-migración",[2573],{"type":36,"value":2574},"Escenarios de Testing de Rendimiento en Migración",{"type":31,"tag":32,"props":2576,"children":2577},{},[2578],{"type":36,"value":2579},"No basta \"¿el nuevo sitio es rápido?\". También: \"¿se rompen comportamientos legacy post-migración?\". Combina testing sintético + RUM:",{"type":31,"tag":32,"props":2581,"children":2582},{},[2583],{"type":31,"tag":51,"props":2584,"children":2585},{},[2586],{"type":36,"value":2587},"Sintético:",{"type":31,"tag":1983,"props":2589,"children":2590},{},[2591,2596],{"type":31,"tag":451,"props":2592,"children":2593},{},[2594],{"type":36,"value":2595},"Lighthouse CI en pipeline: LCP\u002FTBT\u002FCLS para PDP, PLP, homepage en cada deploy",{"type":31,"tag":451,"props":2597,"children":2598},{},[2599],{"type":36,"value":2600},"WebPageTest scripted: \"clic en categoría, clic en 3er producto, agregar a carrito, ir a checkout\" desde 10 geos (Estambul, Berlín, Nueva York)",{"type":31,"tag":32,"props":2602,"children":2603},{},[2604],{"type":31,"tag":51,"props":2605,"children":2606},{},[2607],{"type":36,"value":2608},"RUM:",{"type":31,"tag":1983,"props":2610,"children":2611},{},[2612,2625],{"type":31,"tag":451,"props":2613,"children":2614},{},[2615,2617,2623],{"type":36,"value":2616},"Captura ",{"type":31,"tag":64,"props":2618,"children":2620},{"className":2619},[],[2621],{"type":36,"value":2622},"performance.getEntriesByType('navigation')",{"type":36,"value":2624}," por page view, stream a BigQuery",{"type":31,"tag":451,"props":2626,"children":2627},{},[2628],{"type":36,"value":2629},"Cohort comparison: últimos 10K usuarios en frontend legacy vs primeros 10K en headless → median session duration, pages per session, bounce rate",{"type":31,"tag":32,"props":2631,"children":2632},{},[2633,2635,2644],{"type":36,"value":2634},"En ",{"type":31,"tag":2636,"props":2637,"children":2641},"a",{"href":2638,"rel":2639},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fheadless",[2640],"nofollow",[2642],{"type":36,"value":2643},"Comercio Headless",{"type":36,"value":2645},", preferimos Nuxt 3 + Cloudflare Pages porque latencia SSR edge \u003C50ms y routing progresivo tiene soporte Workers nativo.",{"type":31,"tag":32,"props":2647,"children":2648},{},[2649,2651,2656],{"type":36,"value":2650},"La pieza más crítica del roadmap de migración headless es ",{"type":31,"tag":51,"props":2652,"children":2653},{},[2654],{"type":36,"value":2655},"la capacidad de retroceso",{"type":36,"value":2657},". Cada fase debe desplegarse independientemente, controlada por flags, impulsada por métricas. Sin automatización en testing de preservación SEO, QA manual no puede validar 500 URLs y Google ranking loss se descubre 6 semanas después—demasiado tarde para rollback. Sin monitoreo real-time de abandono ATC, usas dashboards con 24h de lag. Con este rigor, headless deja de ser riesgo y se vuelve optimización medible.",{"type":31,"tag":2659,"props":2660,"children":2661},"style",{},[2662],{"type":36,"value":2663},"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":14,"searchDepth":148,"depth":148,"links":2665},[2666,2667,2668,2669,2670],{"id":41,"depth":104,"text":44},{"id":421,"depth":104,"text":424},{"id":1487,"depth":104,"text":1490},{"id":2023,"depth":104,"text":2026},{"id":2571,"depth":104,"text":2574},"markdown","content:es:tech:migracion-a-comercio-headless-hoja-de-ruta-gestion-riesgos.md","content","es\u002Ftech\u002Fmigracion-a-comercio-headless-hoja-de-ruta-gestion-riesgos.md","es\u002Ftech\u002Fmigracion-a-comercio-headless-hoja-de-ruta-gestion-riesgos","md",1785967496126]