[{"data":1,"prerenderedAt":2700},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fit\u002Ftech\u002Fheadless-e-commerce-migration-roadmap-e-risk-management":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":9,"_dir":12,"_draft":13,"_partial":13,"_locale":14,"title":15,"description":16,"publishedAt":17,"modifiedAt":17,"category":12,"i18nKey":4,"tags":18,"readingTime":24,"author":25,"body":26,"_type":2694,"_id":2695,"_source":2696,"_file":2697,"_stem":2698,"_extension":2699},"tech",false,"","E-commerce Headless: Roadmap di Migrazione e Gestione dei Rischi","Strategia di migrazione verso headless preservando SEO tramite rollout fasato. Analisi dell'abbandono carrello, test di performance e metodi di mitigazione dei rischi.","2026-07-16",[19,20,21,22,23],"headless-commerce","migration-strategy","seo-preservation","performance-testing","risk-management",9,"Roibase",{"type":27,"children":28,"toc":2687},"root",[29,37,44,57,79,360,373,398,408,418,424,437,445,481,1431,1436,1485,1491,1496,1504,1980,1998,2039,2044,2050,2055,2350,2360,2587,2592,2598,2603,2611,2624,2632,2653,2669,2681],{"type":30,"tag":31,"props":32,"children":33},"element","p",{},[34],{"type":35,"value":36},"text","La migrazione verso e-commerce headless nel 2026 non è più una domanda \"sì o no\". La domanda è: \"come si fa senza mandare il sito in crash, senza perdere il 40% dei ranking SEO, senza che l'abbandono carrello salga dal 18% al 32%\". Framework come Shopify Hydrogen, Remix e Next.js Commerce hanno ridotto il rischio tecnico, ma il rischio operazionale rimane elevato. Migrare un sito e-commerce da monolite a headless non è una migrazione database — è una chirurgia a cuore aperto su un sistema che genera fatturato in tempo reale. Questo articolo affronta la strategia di rollout fasato, i test di preservazione SEO e i metodi per prevenire spike di abbandono carrello.",{"type":30,"tag":38,"props":39,"children":41},"h2",{"id":40},"strategia-di-rollout-fasato-canary-deployment-tra-domini",[42],{"type":35,"value":43},"Strategia di Rollout Fasato: Canary Deployment tra Domini",{"type":30,"tag":31,"props":45,"children":46},{},[47,49,55],{"type":35,"value":48},"Non esiste una migrazione big-bang. Non si passa tutto il sito da un frontend monolite a headless contemporaneamente, perché se una metrica si rompe, il costo del rollback è insostenibile. La struttura che consigliamo: ",{"type":30,"tag":50,"props":51,"children":52},"strong",{},[53],{"type":35,"value":54},"routing basato su path URL",{"type":35,"value":56}," con rollout progressivo.",{"type":30,"tag":31,"props":58,"children":59},{},[60,62,69,71,77],{"type":35,"value":61},"Fase uno: scegli un path con traffico basso e SKU limitati — ad esempio ",{"type":30,"tag":63,"props":64,"children":66},"code",{"className":65},[],[67],{"type":35,"value":68},"\u002Fcategoria\u002Fnovita",{"type":35,"value":70}," (50-100 prodotti). Nel CDN (Cloudflare, Fastly) configura una regola di routing: il traffico verso ",{"type":30,"tag":63,"props":72,"children":74},{"className":73},[],[75],{"type":35,"value":76},"\u002Fcategoria\u002Fnovita\u002F*",{"type":35,"value":78}," va all'origin headless, il resto rimane sul Shopify Liquid legacy.",{"type":30,"tag":80,"props":81,"children":85},"pre",{"className":82,"code":83,"language":84,"meta":14,"style":14},"language-javascript shiki shiki-themes github-dark","\u002F\u002F Cloudflare Workers — path-based routing\naddEventListener('fetch', event => {\n  const url = new URL(event.request.url);\n  \n  if (url.pathname.startsWith('\u002Fcategoria\u002Fnovita')) {\n    return event.respondWith(fetch(event.request, {\n      backend: 'headless-origin' \u002F\u002F Hydrogen app su Cloudflare Pages\n    }));\n  }\n  \n  return event.respondWith(fetch(event.request, {\n    backend: 'legacy-shopify'\n  }));\n});\n","javascript",[86],{"type":30,"tag":63,"props":87,"children":88},{"__ignoreMap":14},[89,101,145,180,189,222,255,274,283,291,299,328,342,351],{"type":30,"tag":90,"props":91,"children":94},"span",{"class":92,"line":93},"line",1,[95],{"type":30,"tag":90,"props":96,"children":98},{"style":97},"--shiki-default:#6A737D",[99],{"type":35,"value":100},"\u002F\u002F Cloudflare Workers — path-based routing\n",{"type":30,"tag":90,"props":102,"children":104},{"class":92,"line":103},2,[105,111,117,123,128,134,140],{"type":30,"tag":90,"props":106,"children":108},{"style":107},"--shiki-default:#B392F0",[109],{"type":35,"value":110},"addEventListener",{"type":30,"tag":90,"props":112,"children":114},{"style":113},"--shiki-default:#E1E4E8",[115],{"type":35,"value":116},"(",{"type":30,"tag":90,"props":118,"children":120},{"style":119},"--shiki-default:#9ECBFF",[121],{"type":35,"value":122},"'fetch'",{"type":30,"tag":90,"props":124,"children":125},{"style":113},[126],{"type":35,"value":127},", ",{"type":30,"tag":90,"props":129,"children":131},{"style":130},"--shiki-default:#FFAB70",[132],{"type":35,"value":133},"event",{"type":30,"tag":90,"props":135,"children":137},{"style":136},"--shiki-default:#F97583",[138],{"type":35,"value":139}," =>",{"type":30,"tag":90,"props":141,"children":142},{"style":113},[143],{"type":35,"value":144}," {\n",{"type":30,"tag":90,"props":146,"children":148},{"class":92,"line":147},3,[149,154,160,165,170,175],{"type":30,"tag":90,"props":150,"children":151},{"style":136},[152],{"type":35,"value":153},"  const",{"type":30,"tag":90,"props":155,"children":157},{"style":156},"--shiki-default:#79B8FF",[158],{"type":35,"value":159}," url",{"type":30,"tag":90,"props":161,"children":162},{"style":136},[163],{"type":35,"value":164}," =",{"type":30,"tag":90,"props":166,"children":167},{"style":136},[168],{"type":35,"value":169}," new",{"type":30,"tag":90,"props":171,"children":172},{"style":107},[173],{"type":35,"value":174}," URL",{"type":30,"tag":90,"props":176,"children":177},{"style":113},[178],{"type":35,"value":179},"(event.request.url);\n",{"type":30,"tag":90,"props":181,"children":183},{"class":92,"line":182},4,[184],{"type":30,"tag":90,"props":185,"children":186},{"style":113},[187],{"type":35,"value":188},"  \n",{"type":30,"tag":90,"props":190,"children":192},{"class":92,"line":191},5,[193,198,203,208,212,217],{"type":30,"tag":90,"props":194,"children":195},{"style":136},[196],{"type":35,"value":197},"  if",{"type":30,"tag":90,"props":199,"children":200},{"style":113},[201],{"type":35,"value":202}," (url.pathname.",{"type":30,"tag":90,"props":204,"children":205},{"style":107},[206],{"type":35,"value":207},"startsWith",{"type":30,"tag":90,"props":209,"children":210},{"style":113},[211],{"type":35,"value":116},{"type":30,"tag":90,"props":213,"children":214},{"style":119},[215],{"type":35,"value":216},"'\u002Fcategoria\u002Fnovita'",{"type":30,"tag":90,"props":218,"children":219},{"style":113},[220],{"type":35,"value":221},")) {\n",{"type":30,"tag":90,"props":223,"children":225},{"class":92,"line":224},6,[226,231,236,241,245,250],{"type":30,"tag":90,"props":227,"children":228},{"style":136},[229],{"type":35,"value":230},"    return",{"type":30,"tag":90,"props":232,"children":233},{"style":113},[234],{"type":35,"value":235}," event.",{"type":30,"tag":90,"props":237,"children":238},{"style":107},[239],{"type":35,"value":240},"respondWith",{"type":30,"tag":90,"props":242,"children":243},{"style":113},[244],{"type":35,"value":116},{"type":30,"tag":90,"props":246,"children":247},{"style":107},[248],{"type":35,"value":249},"fetch",{"type":30,"tag":90,"props":251,"children":252},{"style":113},[253],{"type":35,"value":254},"(event.request, {\n",{"type":30,"tag":90,"props":256,"children":258},{"class":92,"line":257},7,[259,264,269],{"type":30,"tag":90,"props":260,"children":261},{"style":113},[262],{"type":35,"value":263},"      backend: ",{"type":30,"tag":90,"props":265,"children":266},{"style":119},[267],{"type":35,"value":268},"'headless-origin'",{"type":30,"tag":90,"props":270,"children":271},{"style":97},[272],{"type":35,"value":273}," \u002F\u002F Hydrogen app su Cloudflare Pages\n",{"type":30,"tag":90,"props":275,"children":277},{"class":92,"line":276},8,[278],{"type":30,"tag":90,"props":279,"children":280},{"style":113},[281],{"type":35,"value":282},"    }));\n",{"type":30,"tag":90,"props":284,"children":285},{"class":92,"line":24},[286],{"type":30,"tag":90,"props":287,"children":288},{"style":113},[289],{"type":35,"value":290},"  }\n",{"type":30,"tag":90,"props":292,"children":294},{"class":92,"line":293},10,[295],{"type":30,"tag":90,"props":296,"children":297},{"style":113},[298],{"type":35,"value":188},{"type":30,"tag":90,"props":300,"children":302},{"class":92,"line":301},11,[303,308,312,316,320,324],{"type":30,"tag":90,"props":304,"children":305},{"style":136},[306],{"type":35,"value":307},"  return",{"type":30,"tag":90,"props":309,"children":310},{"style":113},[311],{"type":35,"value":235},{"type":30,"tag":90,"props":313,"children":314},{"style":107},[315],{"type":35,"value":240},{"type":30,"tag":90,"props":317,"children":318},{"style":113},[319],{"type":35,"value":116},{"type":30,"tag":90,"props":321,"children":322},{"style":107},[323],{"type":35,"value":249},{"type":30,"tag":90,"props":325,"children":326},{"style":113},[327],{"type":35,"value":254},{"type":30,"tag":90,"props":329,"children":331},{"class":92,"line":330},12,[332,337],{"type":30,"tag":90,"props":333,"children":334},{"style":113},[335],{"type":35,"value":336},"    backend: ",{"type":30,"tag":90,"props":338,"children":339},{"style":119},[340],{"type":35,"value":341},"'legacy-shopify'\n",{"type":30,"tag":90,"props":343,"children":345},{"class":92,"line":344},13,[346],{"type":30,"tag":90,"props":347,"children":348},{"style":113},[349],{"type":35,"value":350},"  }));\n",{"type":30,"tag":90,"props":352,"children":354},{"class":92,"line":353},14,[355],{"type":30,"tag":90,"props":356,"children":357},{"style":113},[358],{"type":35,"value":359},"});\n",{"type":30,"tag":31,"props":361,"children":362},{},[363,365,371],{"type":35,"value":364},"Monitora per 2-3 settimane: Core Web Vitals, conversion rate, funnel ATC (add-to-cart). LCP target \u003C2.5s, CLS \u003C0.1, transizione ATC→checkout deve stare entro ±2% di scarto dalla baseline legacy. Se l'abbandono carrello nella categoria ",{"type":30,"tag":63,"props":366,"children":368},{"className":367},[],[369],{"type":35,"value":370},"novita",{"type":35,"value":372}," sale dal 18% al 24%, hai un problema di performance nel rendering headless — probabilmente l'idratazione React impiega 800ms+ in TBT (Total Blocking Time).",{"type":30,"tag":31,"props":374,"children":375},{},[376,381,383,389,390,396],{"type":30,"tag":50,"props":377,"children":378},{},[379],{"type":35,"value":380},"Fase due:",{"type":35,"value":382}," categoria principali (",{"type":30,"tag":63,"props":384,"children":386},{"className":385},[],[387],{"type":35,"value":388},"\u002Fcategoria\u002Fuomo",{"type":35,"value":127},{"type":30,"tag":63,"props":391,"children":393},{"className":392},[],[394],{"type":35,"value":395},"\u002Fcategoria\u002Fdonna",{"type":35,"value":397},"). Traffico 10x maggiore, SKU oltre 2000. La strategia di idratazione cambia: idratazione parziale (stile Astro Islands) o progressive enhancement (HTML-first render, interattività lazy).",{"type":30,"tag":31,"props":399,"children":400},{},[401,406],{"type":30,"tag":50,"props":402,"children":403},{},[404],{"type":35,"value":405},"Fase tre:",{"type":35,"value":407}," pagine di dettaglio prodotto (PDP). Se il 60% del traffico organico viene da PDP, qui fai il test di parità title\u002Fmeta\u002Fstructured data (dettagli nella prossima sezione).",{"type":30,"tag":31,"props":409,"children":410},{},[411,416],{"type":30,"tag":50,"props":412,"children":413},{},[414],{"type":35,"value":415},"Fase finale:",{"type":35,"value":417}," homepage e checkout. Il checkout migra per ultimo perché le integrazioni pagamento (Iyzico, PayTR) e i flussi 3D Secure sono consolidati su Shopify nativo — headless significa riscrivere logica già collaudata. Anche con Shopify Checkout API, un bug nel rendering frontend del payment form = ordini persi.",{"type":30,"tag":38,"props":419,"children":421},{"id":420},"preservazione-seo-test-di-parità-titlemetastructured-data",[422],{"type":35,"value":423},"Preservazione SEO: Test di Parità Title\u002FMeta\u002FStructured Data",{"type":30,"tag":31,"props":425,"children":426},{},[427,429,435],{"type":35,"value":428},"La perdita maggiore in una migrazione headless viene dall'SEO, perché Google re-esegue il crawl del nuovo render e impiega 4-6 settimane per aggiornare i ranking. Se in questo periodo il title\u002Fmeta\u002Fstructured data della versione headless differisce da quello legacy (ad es. il tag ",{"type":30,"tag":63,"props":430,"children":432},{"className":431},[],[433],{"type":35,"value":434},"og:price",{"type":35,"value":436}," non si aggiorna dinamicamente), il CTR scende.",{"type":30,"tag":31,"props":438,"children":439},{},[440],{"type":30,"tag":50,"props":441,"children":442},{},[443],{"type":35,"value":444},"Processo di test di parità:",{"type":30,"tag":446,"props":447,"children":448},"ol",{},[449,455,460],{"type":30,"tag":450,"props":451,"children":452},"li",{},[453],{"type":35,"value":454},"Estrai 500 URL top di landing pages organiche da Google Search Console",{"type":30,"tag":450,"props":456,"children":457},{},[458],{"type":35,"value":459},"Render gli stessi URL sul frontend headless e prendi snapshot HTML",{"type":30,"tag":450,"props":461,"children":462},{},[463,465,471,473,479],{"type":35,"value":464},"Confronta con uno strumento diff (",{"type":30,"tag":63,"props":466,"children":468},{"className":467},[],[469],{"type":35,"value":470},"htmldiff",{"type":35,"value":472},", o script personalizzato con ",{"type":30,"tag":63,"props":474,"children":476},{"className":475},[],[477],{"type":35,"value":478},"cheerio",{"type":35,"value":480},")",{"type":30,"tag":80,"props":482,"children":484},{"className":82,"code":483,"language":84,"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 Esegui per i top 500 URL\nconst results = await Promise.all(topUrls.map(compareSEO));\nconst failures = results.filter(r => Object.values(r.diffs).some(d => d));\nconsole.log(`${failures.length} URL con incongruenze SEO metadata`);\n",[485],{"type":30,"tag":63,"props":486,"children":487},{"__ignoreMap":14},[488,496,524,559,568,600,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":30,"tag":90,"props":489,"children":490},{"class":92,"line":93},[491],{"type":30,"tag":90,"props":492,"children":493},{"style":97},[494],{"type":35,"value":495},"\u002F\u002F headless-seo-parity.js\n",{"type":30,"tag":90,"props":497,"children":498},{"class":92,"line":103},[499,504,509,514,519],{"type":30,"tag":90,"props":500,"children":501},{"style":136},[502],{"type":35,"value":503},"import",{"type":30,"tag":90,"props":505,"children":506},{"style":113},[507],{"type":35,"value":508}," fetch ",{"type":30,"tag":90,"props":510,"children":511},{"style":136},[512],{"type":35,"value":513},"from",{"type":30,"tag":90,"props":515,"children":516},{"style":119},[517],{"type":35,"value":518}," 'node-fetch'",{"type":30,"tag":90,"props":520,"children":521},{"style":113},[522],{"type":35,"value":523},";\n",{"type":30,"tag":90,"props":525,"children":526},{"class":92,"line":147},[527,531,536,541,546,550,555],{"type":30,"tag":90,"props":528,"children":529},{"style":136},[530],{"type":35,"value":503},{"type":30,"tag":90,"props":532,"children":533},{"style":156},[534],{"type":35,"value":535}," *",{"type":30,"tag":90,"props":537,"children":538},{"style":136},[539],{"type":35,"value":540}," as",{"type":30,"tag":90,"props":542,"children":543},{"style":113},[544],{"type":35,"value":545}," cheerio ",{"type":30,"tag":90,"props":547,"children":548},{"style":136},[549],{"type":35,"value":513},{"type":30,"tag":90,"props":551,"children":552},{"style":119},[553],{"type":35,"value":554}," 'cheerio'",{"type":30,"tag":90,"props":556,"children":557},{"style":113},[558],{"type":35,"value":523},{"type":30,"tag":90,"props":560,"children":561},{"class":92,"line":182},[562],{"type":30,"tag":90,"props":563,"children":565},{"emptyLinePlaceholder":564},true,[566],{"type":35,"value":567},"\n",{"type":30,"tag":90,"props":569,"children":570},{"class":92,"line":191},[571,576,581,586,590,595],{"type":30,"tag":90,"props":572,"children":573},{"style":136},[574],{"type":35,"value":575},"async",{"type":30,"tag":90,"props":577,"children":578},{"style":136},[579],{"type":35,"value":580}," function",{"type":30,"tag":90,"props":582,"children":583},{"style":107},[584],{"type":35,"value":585}," compareSEO",{"type":30,"tag":90,"props":587,"children":588},{"style":113},[589],{"type":35,"value":116},{"type":30,"tag":90,"props":591,"children":592},{"style":130},[593],{"type":35,"value":594},"url",{"type":30,"tag":90,"props":596,"children":597},{"style":113},[598],{"type":35,"value":599},") {\n",{"type":30,"tag":90,"props":601,"children":602},{"class":92,"line":224},[603,607,612,617,621,626,631,636,641,646,651,656],{"type":30,"tag":90,"props":604,"children":605},{"style":136},[606],{"type":35,"value":153},{"type":30,"tag":90,"props":608,"children":609},{"style":113},[610],{"type":35,"value":611}," [",{"type":30,"tag":90,"props":613,"children":614},{"style":156},[615],{"type":35,"value":616},"legacyHTML",{"type":30,"tag":90,"props":618,"children":619},{"style":113},[620],{"type":35,"value":127},{"type":30,"tag":90,"props":622,"children":623},{"style":156},[624],{"type":35,"value":625},"headlessHTML",{"type":30,"tag":90,"props":627,"children":628},{"style":113},[629],{"type":35,"value":630},"] ",{"type":30,"tag":90,"props":632,"children":633},{"style":136},[634],{"type":35,"value":635},"=",{"type":30,"tag":90,"props":637,"children":638},{"style":136},[639],{"type":35,"value":640}," await",{"type":30,"tag":90,"props":642,"children":643},{"style":156},[644],{"type":35,"value":645}," Promise",{"type":30,"tag":90,"props":647,"children":648},{"style":113},[649],{"type":35,"value":650},".",{"type":30,"tag":90,"props":652,"children":653},{"style":107},[654],{"type":35,"value":655},"all",{"type":30,"tag":90,"props":657,"children":658},{"style":113},[659],{"type":35,"value":660},"([\n",{"type":30,"tag":90,"props":662,"children":663},{"class":92,"line":257},[664,669,673,678,682,687,692,697,701,706,710,715,719],{"type":30,"tag":90,"props":665,"children":666},{"style":107},[667],{"type":35,"value":668},"    fetch",{"type":30,"tag":90,"props":670,"children":671},{"style":113},[672],{"type":35,"value":116},{"type":30,"tag":90,"props":674,"children":675},{"style":119},[676],{"type":35,"value":677},"`https:\u002F\u002Flegacy.example.com${",{"type":30,"tag":90,"props":679,"children":680},{"style":113},[681],{"type":35,"value":594},{"type":30,"tag":90,"props":683,"children":684},{"style":119},[685],{"type":35,"value":686},"}`",{"type":30,"tag":90,"props":688,"children":689},{"style":113},[690],{"type":35,"value":691},").",{"type":30,"tag":90,"props":693,"children":694},{"style":107},[695],{"type":35,"value":696},"then",{"type":30,"tag":90,"props":698,"children":699},{"style":113},[700],{"type":35,"value":116},{"type":30,"tag":90,"props":702,"children":703},{"style":130},[704],{"type":35,"value":705},"r",{"type":30,"tag":90,"props":707,"children":708},{"style":136},[709],{"type":35,"value":139},{"type":30,"tag":90,"props":711,"children":712},{"style":113},[713],{"type":35,"value":714}," r.",{"type":30,"tag":90,"props":716,"children":717},{"style":107},[718],{"type":35,"value":35},{"type":30,"tag":90,"props":720,"children":721},{"style":113},[722],{"type":35,"value":723},"()),\n",{"type":30,"tag":90,"props":725,"children":726},{"class":92,"line":276},[727,731,735,740,744,748,752,756,760,764,768,772,776],{"type":30,"tag":90,"props":728,"children":729},{"style":107},[730],{"type":35,"value":668},{"type":30,"tag":90,"props":732,"children":733},{"style":113},[734],{"type":35,"value":116},{"type":30,"tag":90,"props":736,"children":737},{"style":119},[738],{"type":35,"value":739},"`https:\u002F\u002Fheadless.example.com${",{"type":30,"tag":90,"props":741,"children":742},{"style":113},[743],{"type":35,"value":594},{"type":30,"tag":90,"props":745,"children":746},{"style":119},[747],{"type":35,"value":686},{"type":30,"tag":90,"props":749,"children":750},{"style":113},[751],{"type":35,"value":691},{"type":30,"tag":90,"props":753,"children":754},{"style":107},[755],{"type":35,"value":696},{"type":30,"tag":90,"props":757,"children":758},{"style":113},[759],{"type":35,"value":116},{"type":30,"tag":90,"props":761,"children":762},{"style":130},[763],{"type":35,"value":705},{"type":30,"tag":90,"props":765,"children":766},{"style":136},[767],{"type":35,"value":139},{"type":30,"tag":90,"props":769,"children":770},{"style":113},[771],{"type":35,"value":714},{"type":30,"tag":90,"props":773,"children":774},{"style":107},[775],{"type":35,"value":35},{"type":30,"tag":90,"props":777,"children":778},{"style":113},[779],{"type":35,"value":780},"())\n",{"type":30,"tag":90,"props":782,"children":783},{"class":92,"line":24},[784],{"type":30,"tag":90,"props":785,"children":786},{"style":113},[787],{"type":35,"value":788},"  ]);\n",{"type":30,"tag":90,"props":790,"children":791},{"class":92,"line":293},[792],{"type":30,"tag":90,"props":793,"children":794},{"style":113},[795],{"type":35,"value":188},{"type":30,"tag":90,"props":797,"children":798},{"class":92,"line":301},[799,803,808,812,817,822],{"type":30,"tag":90,"props":800,"children":801},{"style":136},[802],{"type":35,"value":153},{"type":30,"tag":90,"props":804,"children":805},{"style":156},[806],{"type":35,"value":807}," legacy$",{"type":30,"tag":90,"props":809,"children":810},{"style":136},[811],{"type":35,"value":164},{"type":30,"tag":90,"props":813,"children":814},{"style":113},[815],{"type":35,"value":816}," cheerio.",{"type":30,"tag":90,"props":818,"children":819},{"style":107},[820],{"type":35,"value":821},"load",{"type":30,"tag":90,"props":823,"children":824},{"style":113},[825],{"type":35,"value":826},"(legacyHTML);\n",{"type":30,"tag":90,"props":828,"children":829},{"class":92,"line":330},[830,834,839,843,847,851],{"type":30,"tag":90,"props":831,"children":832},{"style":136},[833],{"type":35,"value":153},{"type":30,"tag":90,"props":835,"children":836},{"style":156},[837],{"type":35,"value":838}," headless$",{"type":30,"tag":90,"props":840,"children":841},{"style":136},[842],{"type":35,"value":164},{"type":30,"tag":90,"props":844,"children":845},{"style":113},[846],{"type":35,"value":816},{"type":30,"tag":90,"props":848,"children":849},{"style":107},[850],{"type":35,"value":821},{"type":30,"tag":90,"props":852,"children":853},{"style":113},[854],{"type":35,"value":855},"(headlessHTML);\n",{"type":30,"tag":90,"props":857,"children":858},{"class":92,"line":344},[859],{"type":30,"tag":90,"props":860,"children":861},{"style":113},[862],{"type":35,"value":188},{"type":30,"tag":90,"props":864,"children":865},{"class":92,"line":353},[866,870,875,879],{"type":30,"tag":90,"props":867,"children":868},{"style":136},[869],{"type":35,"value":153},{"type":30,"tag":90,"props":871,"children":872},{"style":156},[873],{"type":35,"value":874}," diffs",{"type":30,"tag":90,"props":876,"children":877},{"style":136},[878],{"type":35,"value":164},{"type":30,"tag":90,"props":880,"children":881},{"style":113},[882],{"type":35,"value":144},{"type":30,"tag":90,"props":884,"children":886},{"class":92,"line":885},15,[887,892,897,901,906,910,914,919,924,928,932,936,940,944],{"type":30,"tag":90,"props":888,"children":889},{"style":113},[890],{"type":35,"value":891},"    title: ",{"type":30,"tag":90,"props":893,"children":894},{"style":107},[895],{"type":35,"value":896},"legacy$",{"type":30,"tag":90,"props":898,"children":899},{"style":113},[900],{"type":35,"value":116},{"type":30,"tag":90,"props":902,"children":903},{"style":119},[904],{"type":35,"value":905},"'title'",{"type":30,"tag":90,"props":907,"children":908},{"style":113},[909],{"type":35,"value":691},{"type":30,"tag":90,"props":911,"children":912},{"style":107},[913],{"type":35,"value":35},{"type":30,"tag":90,"props":915,"children":916},{"style":113},[917],{"type":35,"value":918},"() ",{"type":30,"tag":90,"props":920,"children":921},{"style":136},[922],{"type":35,"value":923},"!==",{"type":30,"tag":90,"props":925,"children":926},{"style":107},[927],{"type":35,"value":838},{"type":30,"tag":90,"props":929,"children":930},{"style":113},[931],{"type":35,"value":116},{"type":30,"tag":90,"props":933,"children":934},{"style":119},[935],{"type":35,"value":905},{"type":30,"tag":90,"props":937,"children":938},{"style":113},[939],{"type":35,"value":691},{"type":30,"tag":90,"props":941,"children":942},{"style":107},[943],{"type":35,"value":35},{"type":30,"tag":90,"props":945,"children":946},{"style":113},[947],{"type":35,"value":948},"(),\n",{"type":30,"tag":90,"props":950,"children":952},{"class":92,"line":951},16,[953,958,962,966,971,975,980,984,989,994,998],{"type":30,"tag":90,"props":954,"children":955},{"style":113},[956],{"type":35,"value":957},"    metaDesc: ",{"type":30,"tag":90,"props":959,"children":960},{"style":107},[961],{"type":35,"value":896},{"type":30,"tag":90,"props":963,"children":964},{"style":113},[965],{"type":35,"value":116},{"type":30,"tag":90,"props":967,"children":968},{"style":119},[969],{"type":35,"value":970},"'meta[name=\"description\"]'",{"type":30,"tag":90,"props":972,"children":973},{"style":113},[974],{"type":35,"value":691},{"type":30,"tag":90,"props":976,"children":977},{"style":107},[978],{"type":35,"value":979},"attr",{"type":30,"tag":90,"props":981,"children":982},{"style":113},[983],{"type":35,"value":116},{"type":30,"tag":90,"props":985,"children":986},{"style":119},[987],{"type":35,"value":988},"'content'",{"type":30,"tag":90,"props":990,"children":991},{"style":113},[992],{"type":35,"value":993},") ",{"type":30,"tag":90,"props":995,"children":996},{"style":136},[997],{"type":35,"value":923},{"type":30,"tag":90,"props":999,"children":1000},{"style":113},[1001],{"type":35,"value":1002}," \n",{"type":30,"tag":90,"props":1004,"children":1006},{"class":92,"line":1005},17,[1007,1012,1016,1020,1024,1028,1032,1036],{"type":30,"tag":90,"props":1008,"children":1009},{"style":107},[1010],{"type":35,"value":1011},"              headless$",{"type":30,"tag":90,"props":1013,"children":1014},{"style":113},[1015],{"type":35,"value":116},{"type":30,"tag":90,"props":1017,"children":1018},{"style":119},[1019],{"type":35,"value":970},{"type":30,"tag":90,"props":1021,"children":1022},{"style":113},[1023],{"type":35,"value":691},{"type":30,"tag":90,"props":1025,"children":1026},{"style":107},[1027],{"type":35,"value":979},{"type":30,"tag":90,"props":1029,"children":1030},{"style":113},[1031],{"type":35,"value":116},{"type":30,"tag":90,"props":1033,"children":1034},{"style":119},[1035],{"type":35,"value":988},{"type":30,"tag":90,"props":1037,"children":1038},{"style":113},[1039],{"type":35,"value":1040},"),\n",{"type":30,"tag":90,"props":1042,"children":1044},{"class":92,"line":1043},18,[1045,1050,1054,1058,1063,1067,1071,1075,1080,1084,1088],{"type":30,"tag":90,"props":1046,"children":1047},{"style":113},[1048],{"type":35,"value":1049},"    canonical: ",{"type":30,"tag":90,"props":1051,"children":1052},{"style":107},[1053],{"type":35,"value":896},{"type":30,"tag":90,"props":1055,"children":1056},{"style":113},[1057],{"type":35,"value":116},{"type":30,"tag":90,"props":1059,"children":1060},{"style":119},[1061],{"type":35,"value":1062},"'link[rel=\"canonical\"]'",{"type":30,"tag":90,"props":1064,"children":1065},{"style":113},[1066],{"type":35,"value":691},{"type":30,"tag":90,"props":1068,"children":1069},{"style":107},[1070],{"type":35,"value":979},{"type":30,"tag":90,"props":1072,"children":1073},{"style":113},[1074],{"type":35,"value":116},{"type":30,"tag":90,"props":1076,"children":1077},{"style":119},[1078],{"type":35,"value":1079},"'href'",{"type":30,"tag":90,"props":1081,"children":1082},{"style":113},[1083],{"type":35,"value":993},{"type":30,"tag":90,"props":1085,"children":1086},{"style":136},[1087],{"type":35,"value":923},{"type":30,"tag":90,"props":1089,"children":1090},{"style":113},[1091],{"type":35,"value":1002},{"type":30,"tag":90,"props":1093,"children":1095},{"class":92,"line":1094},19,[1096,1101,1105,1109,1113,1117,1121,1125],{"type":30,"tag":90,"props":1097,"children":1098},{"style":107},[1099],{"type":35,"value":1100},"               headless$",{"type":30,"tag":90,"props":1102,"children":1103},{"style":113},[1104],{"type":35,"value":116},{"type":30,"tag":90,"props":1106,"children":1107},{"style":119},[1108],{"type":35,"value":1062},{"type":30,"tag":90,"props":1110,"children":1111},{"style":113},[1112],{"type":35,"value":691},{"type":30,"tag":90,"props":1114,"children":1115},{"style":107},[1116],{"type":35,"value":979},{"type":30,"tag":90,"props":1118,"children":1119},{"style":113},[1120],{"type":35,"value":116},{"type":30,"tag":90,"props":1122,"children":1123},{"style":119},[1124],{"type":35,"value":1079},{"type":30,"tag":90,"props":1126,"children":1127},{"style":113},[1128],{"type":35,"value":1040},{"type":30,"tag":90,"props":1130,"children":1132},{"class":92,"line":1131},20,[1133,1138,1142,1146,1151,1155,1160,1164,1168],{"type":30,"tag":90,"props":1134,"children":1135},{"style":113},[1136],{"type":35,"value":1137},"    jsonLD: ",{"type":30,"tag":90,"props":1139,"children":1140},{"style":107},[1141],{"type":35,"value":896},{"type":30,"tag":90,"props":1143,"children":1144},{"style":113},[1145],{"type":35,"value":116},{"type":30,"tag":90,"props":1147,"children":1148},{"style":119},[1149],{"type":35,"value":1150},"'script[type=\"application\u002Fld+json\"]'",{"type":30,"tag":90,"props":1152,"children":1153},{"style":113},[1154],{"type":35,"value":691},{"type":30,"tag":90,"props":1156,"children":1157},{"style":107},[1158],{"type":35,"value":1159},"html",{"type":30,"tag":90,"props":1161,"children":1162},{"style":113},[1163],{"type":35,"value":918},{"type":30,"tag":90,"props":1165,"children":1166},{"style":136},[1167],{"type":35,"value":923},{"type":30,"tag":90,"props":1169,"children":1170},{"style":113},[1171],{"type":35,"value":1002},{"type":30,"tag":90,"props":1173,"children":1175},{"class":92,"line":1174},21,[1176,1181,1185,1189,1193,1197],{"type":30,"tag":90,"props":1177,"children":1178},{"style":107},[1179],{"type":35,"value":1180},"            headless$",{"type":30,"tag":90,"props":1182,"children":1183},{"style":113},[1184],{"type":35,"value":116},{"type":30,"tag":90,"props":1186,"children":1187},{"style":119},[1188],{"type":35,"value":1150},{"type":30,"tag":90,"props":1190,"children":1191},{"style":113},[1192],{"type":35,"value":691},{"type":30,"tag":90,"props":1194,"children":1195},{"style":107},[1196],{"type":35,"value":1159},{"type":30,"tag":90,"props":1198,"children":1199},{"style":113},[1200],{"type":35,"value":1201},"()\n",{"type":30,"tag":90,"props":1203,"children":1205},{"class":92,"line":1204},22,[1206],{"type":30,"tag":90,"props":1207,"children":1208},{"style":113},[1209],{"type":35,"value":1210},"  };\n",{"type":30,"tag":90,"props":1212,"children":1214},{"class":92,"line":1213},23,[1215],{"type":30,"tag":90,"props":1216,"children":1217},{"style":113},[1218],{"type":35,"value":188},{"type":30,"tag":90,"props":1220,"children":1222},{"class":92,"line":1221},24,[1223,1227],{"type":30,"tag":90,"props":1224,"children":1225},{"style":136},[1226],{"type":35,"value":307},{"type":30,"tag":90,"props":1228,"children":1229},{"style":113},[1230],{"type":35,"value":1231}," { url, diffs };\n",{"type":30,"tag":90,"props":1233,"children":1235},{"class":92,"line":1234},25,[1236],{"type":30,"tag":90,"props":1237,"children":1238},{"style":113},[1239],{"type":35,"value":1240},"}\n",{"type":30,"tag":90,"props":1242,"children":1244},{"class":92,"line":1243},26,[1245],{"type":30,"tag":90,"props":1246,"children":1247},{"emptyLinePlaceholder":564},[1248],{"type":35,"value":567},{"type":30,"tag":90,"props":1250,"children":1252},{"class":92,"line":1251},27,[1253],{"type":30,"tag":90,"props":1254,"children":1255},{"style":97},[1256],{"type":35,"value":1257},"\u002F\u002F Esegui per i top 500 URL\n",{"type":30,"tag":90,"props":1259,"children":1261},{"class":92,"line":1260},28,[1262,1267,1272,1276,1280,1284,1288,1292,1297,1302],{"type":30,"tag":90,"props":1263,"children":1264},{"style":136},[1265],{"type":35,"value":1266},"const",{"type":30,"tag":90,"props":1268,"children":1269},{"style":156},[1270],{"type":35,"value":1271}," results",{"type":30,"tag":90,"props":1273,"children":1274},{"style":136},[1275],{"type":35,"value":164},{"type":30,"tag":90,"props":1277,"children":1278},{"style":136},[1279],{"type":35,"value":640},{"type":30,"tag":90,"props":1281,"children":1282},{"style":156},[1283],{"type":35,"value":645},{"type":30,"tag":90,"props":1285,"children":1286},{"style":113},[1287],{"type":35,"value":650},{"type":30,"tag":90,"props":1289,"children":1290},{"style":107},[1291],{"type":35,"value":655},{"type":30,"tag":90,"props":1293,"children":1294},{"style":113},[1295],{"type":35,"value":1296},"(topUrls.",{"type":30,"tag":90,"props":1298,"children":1299},{"style":107},[1300],{"type":35,"value":1301},"map",{"type":30,"tag":90,"props":1303,"children":1304},{"style":113},[1305],{"type":35,"value":1306},"(compareSEO));\n",{"type":30,"tag":90,"props":1308,"children":1310},{"class":92,"line":1309},29,[1311,1315,1320,1324,1329,1334,1338,1342,1346,1351,1356,1361,1366,1370,1375,1379],{"type":30,"tag":90,"props":1312,"children":1313},{"style":136},[1314],{"type":35,"value":1266},{"type":30,"tag":90,"props":1316,"children":1317},{"style":156},[1318],{"type":35,"value":1319}," failures",{"type":30,"tag":90,"props":1321,"children":1322},{"style":136},[1323],{"type":35,"value":164},{"type":30,"tag":90,"props":1325,"children":1326},{"style":113},[1327],{"type":35,"value":1328}," results.",{"type":30,"tag":90,"props":1330,"children":1331},{"style":107},[1332],{"type":35,"value":1333},"filter",{"type":30,"tag":90,"props":1335,"children":1336},{"style":113},[1337],{"type":35,"value":116},{"type":30,"tag":90,"props":1339,"children":1340},{"style":130},[1341],{"type":35,"value":705},{"type":30,"tag":90,"props":1343,"children":1344},{"style":136},[1345],{"type":35,"value":139},{"type":30,"tag":90,"props":1347,"children":1348},{"style":113},[1349],{"type":35,"value":1350}," Object.",{"type":30,"tag":90,"props":1352,"children":1353},{"style":107},[1354],{"type":35,"value":1355},"values",{"type":30,"tag":90,"props":1357,"children":1358},{"style":113},[1359],{"type":35,"value":1360},"(r.diffs).",{"type":30,"tag":90,"props":1362,"children":1363},{"style":107},[1364],{"type":35,"value":1365},"some",{"type":30,"tag":90,"props":1367,"children":1368},{"style":113},[1369],{"type":35,"value":116},{"type":30,"tag":90,"props":1371,"children":1372},{"style":130},[1373],{"type":35,"value":1374},"d",{"type":30,"tag":90,"props":1376,"children":1377},{"style":136},[1378],{"type":35,"value":139},{"type":30,"tag":90,"props":1380,"children":1381},{"style":113},[1382],{"type":35,"value":1383}," d));\n",{"type":30,"tag":90,"props":1385,"children":1387},{"class":92,"line":1386},30,[1388,1393,1398,1402,1407,1412,1416,1421,1426],{"type":30,"tag":90,"props":1389,"children":1390},{"style":113},[1391],{"type":35,"value":1392},"console.",{"type":30,"tag":90,"props":1394,"children":1395},{"style":107},[1396],{"type":35,"value":1397},"log",{"type":30,"tag":90,"props":1399,"children":1400},{"style":113},[1401],{"type":35,"value":116},{"type":30,"tag":90,"props":1403,"children":1404},{"style":119},[1405],{"type":35,"value":1406},"`${",{"type":30,"tag":90,"props":1408,"children":1409},{"style":113},[1410],{"type":35,"value":1411},"failures",{"type":30,"tag":90,"props":1413,"children":1414},{"style":119},[1415],{"type":35,"value":650},{"type":30,"tag":90,"props":1417,"children":1418},{"style":156},[1419],{"type":35,"value":1420},"length",{"type":30,"tag":90,"props":1422,"children":1423},{"style":119},[1424],{"type":35,"value":1425},"} URL con incongruenze SEO metadata`",{"type":30,"tag":90,"props":1427,"children":1428},{"style":113},[1429],{"type":35,"value":1430},");\n",{"type":30,"tag":31,"props":1432,"children":1433},{},[1434],{"type":35,"value":1435},"Se più del 5% degli URL mostra differenze, ferma la migrazione. Esempio: i metadati dinamici da Shopify metafields non vengono estratti nella query GraphQL headless — magari 500 pagine perdono la description dinamica. Risultato: perdita stimata di traffico organico del 12-18% (dati Search Console 2025).",{"type":30,"tag":31,"props":1437,"children":1438},{},[1439,1444,1446,1452,1454,1460,1462,1468,1470,1476,1478,1484],{"type":30,"tag":50,"props":1440,"children":1441},{},[1442],{"type":35,"value":1443},"Test URL canonico:",{"type":35,"value":1445}," su headless spesso il path cambia da ",{"type":30,"tag":63,"props":1447,"children":1449},{"className":1448},[],[1450],{"type":35,"value":1451},"\u002Fproducts\u002F{handle}",{"type":35,"value":1453}," a ",{"type":30,"tag":63,"props":1455,"children":1457},{"className":1456},[],[1458],{"type":35,"value":1459},"\u002Fp\u002F{id}",{"type":35,"value":1461}," (ottimizzazione routing). In questo caso: redirect 301 dall'URL vecchio al nuovo + tag canonical obbligatorio. Verifica: ",{"type":30,"tag":63,"props":1463,"children":1465},{"className":1464},[],[1466],{"type":35,"value":1467},"curl -I https:\u002F\u002Fheadless.example.com\u002Fold-path",{"type":35,"value":1469}," → ",{"type":30,"tag":63,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":35,"value":1475},"301 → \u002Fnew-path",{"type":35,"value":1477}," e ",{"type":30,"tag":63,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":35,"value":1483},"\u003Clink rel=\"canonical\" href=\"\u002Fnew-path\">",{"type":35,"value":650},{"type":30,"tag":38,"props":1486,"children":1488},{"id":1487},"analisi-spike-di-abbandono-carrello",[1489],{"type":35,"value":1490},"Analisi Spike di Abbandono Carrello",{"type":30,"tag":31,"props":1492,"children":1493},{},[1494],{"type":35,"value":1495},"Il problema più comune post-migrazione headless: l'utente clicca \"Aggiungi al carrello\", il pulsante non risponde, oppure vedi un loading spinner per 3 secondi poi timeout. Causa frequente: Shopify Storefront API raggiunge il rate limit (default 50 req\u002Fsec, burst 100).",{"type":30,"tag":31,"props":1497,"children":1498},{},[1499],{"type":30,"tag":50,"props":1500,"children":1501},{},[1502],{"type":35,"value":1503},"Setup monitoraggio:",{"type":30,"tag":80,"props":1505,"children":1507},{"className":82,"code":1506,"language":84,"meta":14,"style":14},"\u002F\u002F ATC event tracking — 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      \u002F\u002F Fallback UI in caso di errore\n      showErrorToast('Errore aggiornamento carrello, riprova');\n    }\n  } catch (err) {\n    \u002F\u002F Network timeout — critico\n    reportError('ATC_TIMEOUT', { variantId, error: err.message });\n  }\n}\n",[1508],{"type":30,"tag":63,"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,1889,1910,1918,1936,1944,1966,1973],{"type":30,"tag":90,"props":1512,"children":1513},{"class":92,"line":93},[1514],{"type":30,"tag":90,"props":1515,"children":1516},{"style":97},[1517],{"type":35,"value":1518},"\u002F\u002F ATC event tracking — app headless\n",{"type":30,"tag":90,"props":1520,"children":1521},{"class":92,"line":103},[1522,1526,1530,1535,1539,1544,1548,1553],{"type":30,"tag":90,"props":1523,"children":1524},{"style":136},[1525],{"type":35,"value":575},{"type":30,"tag":90,"props":1527,"children":1528},{"style":136},[1529],{"type":35,"value":580},{"type":30,"tag":90,"props":1531,"children":1532},{"style":107},[1533],{"type":35,"value":1534}," addToCart",{"type":30,"tag":90,"props":1536,"children":1537},{"style":113},[1538],{"type":35,"value":116},{"type":30,"tag":90,"props":1540,"children":1541},{"style":130},[1542],{"type":35,"value":1543},"variantId",{"type":30,"tag":90,"props":1545,"children":1546},{"style":113},[1547],{"type":35,"value":127},{"type":30,"tag":90,"props":1549,"children":1550},{"style":130},[1551],{"type":35,"value":1552},"quantity",{"type":30,"tag":90,"props":1554,"children":1555},{"style":113},[1556],{"type":35,"value":599},{"type":30,"tag":90,"props":1558,"children":1559},{"class":92,"line":147},[1560,1564,1569,1573,1578,1583],{"type":30,"tag":90,"props":1561,"children":1562},{"style":136},[1563],{"type":35,"value":153},{"type":30,"tag":90,"props":1565,"children":1566},{"style":156},[1567],{"type":35,"value":1568}," startTime",{"type":30,"tag":90,"props":1570,"children":1571},{"style":136},[1572],{"type":35,"value":164},{"type":30,"tag":90,"props":1574,"children":1575},{"style":113},[1576],{"type":35,"value":1577}," performance.",{"type":30,"tag":90,"props":1579,"children":1580},{"style":107},[1581],{"type":35,"value":1582},"now",{"type":30,"tag":90,"props":1584,"children":1585},{"style":113},[1586],{"type":35,"value":1587},"();\n",{"type":30,"tag":90,"props":1589,"children":1590},{"class":92,"line":182},[1591],{"type":30,"tag":90,"props":1592,"children":1593},{"style":113},[1594],{"type":35,"value":188},{"type":30,"tag":90,"props":1596,"children":1597},{"class":92,"line":191},[1598,1603],{"type":30,"tag":90,"props":1599,"children":1600},{"style":136},[1601],{"type":35,"value":1602},"  try",{"type":30,"tag":90,"props":1604,"children":1605},{"style":113},[1606],{"type":35,"value":144},{"type":30,"tag":90,"props":1608,"children":1609},{"class":92,"line":224},[1610,1615,1620,1624,1628,1633,1637,1642],{"type":30,"tag":90,"props":1611,"children":1612},{"style":136},[1613],{"type":35,"value":1614},"    const",{"type":30,"tag":90,"props":1616,"children":1617},{"style":156},[1618],{"type":35,"value":1619}," response",{"type":30,"tag":90,"props":1621,"children":1622},{"style":136},[1623],{"type":35,"value":164},{"type":30,"tag":90,"props":1625,"children":1626},{"style":136},[1627],{"type":35,"value":640},{"type":30,"tag":90,"props":1629,"children":1630},{"style":107},[1631],{"type":35,"value":1632}," fetch",{"type":30,"tag":90,"props":1634,"children":1635},{"style":113},[1636],{"type":35,"value":116},{"type":30,"tag":90,"props":1638,"children":1639},{"style":119},[1640],{"type":35,"value":1641},"'\u002Fapi\u002Fcart\u002Fadd'",{"type":30,"tag":90,"props":1643,"children":1644},{"style":113},[1645],{"type":35,"value":1646},", {\n",{"type":30,"tag":90,"props":1648,"children":1649},{"class":92,"line":257},[1650,1655,1660],{"type":30,"tag":90,"props":1651,"children":1652},{"style":113},[1653],{"type":35,"value":1654},"      method: ",{"type":30,"tag":90,"props":1656,"children":1657},{"style":119},[1658],{"type":35,"value":1659},"'POST'",{"type":30,"tag":90,"props":1661,"children":1662},{"style":113},[1663],{"type":35,"value":1664},",\n",{"type":30,"tag":90,"props":1666,"children":1667},{"class":92,"line":276},[1668,1673,1678,1682,1687],{"type":30,"tag":90,"props":1669,"children":1670},{"style":113},[1671],{"type":35,"value":1672},"      body: ",{"type":30,"tag":90,"props":1674,"children":1675},{"style":156},[1676],{"type":35,"value":1677},"JSON",{"type":30,"tag":90,"props":1679,"children":1680},{"style":113},[1681],{"type":35,"value":650},{"type":30,"tag":90,"props":1683,"children":1684},{"style":107},[1685],{"type":35,"value":1686},"stringify",{"type":30,"tag":90,"props":1688,"children":1689},{"style":113},[1690],{"type":35,"value":1691},"({ variantId, quantity })\n",{"type":30,"tag":90,"props":1693,"children":1694},{"class":92,"line":24},[1695],{"type":30,"tag":90,"props":1696,"children":1697},{"style":113},[1698],{"type":35,"value":1699},"    });\n",{"type":30,"tag":90,"props":1701,"children":1702},{"class":92,"line":293},[1703],{"type":30,"tag":90,"props":1704,"children":1705},{"style":113},[1706],{"type":35,"value":1707},"    \n",{"type":30,"tag":90,"props":1709,"children":1710},{"class":92,"line":301},[1711,1715,1720,1724,1728,1732,1736,1741],{"type":30,"tag":90,"props":1712,"children":1713},{"style":136},[1714],{"type":35,"value":1614},{"type":30,"tag":90,"props":1716,"children":1717},{"style":156},[1718],{"type":35,"value":1719}," duration",{"type":30,"tag":90,"props":1721,"children":1722},{"style":136},[1723],{"type":35,"value":164},{"type":30,"tag":90,"props":1725,"children":1726},{"style":113},[1727],{"type":35,"value":1577},{"type":30,"tag":90,"props":1729,"children":1730},{"style":107},[1731],{"type":35,"value":1582},{"type":30,"tag":90,"props":1733,"children":1734},{"style":113},[1735],{"type":35,"value":918},{"type":30,"tag":90,"props":1737,"children":1738},{"style":136},[1739],{"type":35,"value":1740},"-",{"type":30,"tag":90,"props":1742,"children":1743},{"style":113},[1744],{"type":35,"value":1745}," startTime;\n",{"type":30,"tag":90,"props":1747,"children":1748},{"class":92,"line":330},[1749],{"type":30,"tag":90,"props":1750,"children":1751},{"style":113},[1752],{"type":35,"value":1707},{"type":30,"tag":90,"props":1754,"children":1755},{"class":92,"line":344},[1756],{"type":30,"tag":90,"props":1757,"children":1758},{"style":97},[1759],{"type":35,"value":1760},"    \u002F\u002F RUM beacon\n",{"type":30,"tag":90,"props":1762,"children":1763},{"class":92,"line":353},[1764,1769,1774,1778,1783,1787,1791,1795,1799],{"type":30,"tag":90,"props":1765,"children":1766},{"style":113},[1767],{"type":35,"value":1768},"    navigator.",{"type":30,"tag":90,"props":1770,"children":1771},{"style":107},[1772],{"type":35,"value":1773},"sendBeacon",{"type":30,"tag":90,"props":1775,"children":1776},{"style":113},[1777],{"type":35,"value":116},{"type":30,"tag":90,"props":1779,"children":1780},{"style":119},[1781],{"type":35,"value":1782},"'\u002Fanalytics\u002Fatc'",{"type":30,"tag":90,"props":1784,"children":1785},{"style":113},[1786],{"type":35,"value":127},{"type":30,"tag":90,"props":1788,"children":1789},{"style":156},[1790],{"type":35,"value":1677},{"type":30,"tag":90,"props":1792,"children":1793},{"style":113},[1794],{"type":35,"value":650},{"type":30,"tag":90,"props":1796,"children":1797},{"style":107},[1798],{"type":35,"value":1686},{"type":30,"tag":90,"props":1800,"children":1801},{"style":113},[1802],{"type":35,"value":1803},"({\n",{"type":30,"tag":90,"props":1805,"children":1806},{"class":92,"line":885},[1807],{"type":30,"tag":90,"props":1808,"children":1809},{"style":113},[1810],{"type":35,"value":1811},"      success: response.ok,\n",{"type":30,"tag":90,"props":1813,"children":1814},{"class":92,"line":951},[1815],{"type":30,"tag":90,"props":1816,"children":1817},{"style":113},[1818],{"type":35,"value":1819},"      duration,\n",{"type":30,"tag":90,"props":1821,"children":1822},{"class":92,"line":1005},[1823],{"type":30,"tag":90,"props":1824,"children":1825},{"style":113},[1826],{"type":35,"value":1827},"      variantId,\n",{"type":30,"tag":90,"props":1829,"children":1830},{"class":92,"line":1043},[1831,1836,1840],{"type":30,"tag":90,"props":1832,"children":1833},{"style":113},[1834],{"type":35,"value":1835},"      timestamp: Date.",{"type":30,"tag":90,"props":1837,"children":1838},{"style":107},[1839],{"type":35,"value":1582},{"type":30,"tag":90,"props":1841,"children":1842},{"style":113},[1843],{"type":35,"value":1201},{"type":30,"tag":90,"props":1845,"children":1846},{"class":92,"line":1094},[1847],{"type":30,"tag":90,"props":1848,"children":1849},{"style":113},[1850],{"type":35,"value":282},{"type":30,"tag":90,"props":1852,"children":1853},{"class":92,"line":1131},[1854],{"type":30,"tag":90,"props":1855,"children":1856},{"style":113},[1857],{"type":35,"value":1707},{"type":30,"tag":90,"props":1859,"children":1860},{"class":92,"line":1174},[1861,1866,1871,1876],{"type":30,"tag":90,"props":1862,"children":1863},{"style":136},[1864],{"type":35,"value":1865},"    if",{"type":30,"tag":90,"props":1867,"children":1868},{"style":113},[1869],{"type":35,"value":1870}," (",{"type":30,"tag":90,"props":1872,"children":1873},{"style":136},[1874],{"type":35,"value":1875},"!",{"type":30,"tag":90,"props":1877,"children":1878},{"style":113},[1879],{"type":35,"value":1880},"response.ok) {\n",{"type":30,"tag":90,"props":1882,"children":1883},{"class":92,"line":1204},[1884],{"type":30,"tag":90,"props":1885,"children":1886},{"style":97},[1887],{"type":35,"value":1888},"      \u002F\u002F Fallback UI in caso di errore\n",{"type":30,"tag":90,"props":1890,"children":1891},{"class":92,"line":1213},[1892,1897,1901,1906],{"type":30,"tag":90,"props":1893,"children":1894},{"style":107},[1895],{"type":35,"value":1896},"      showErrorToast",{"type":30,"tag":90,"props":1898,"children":1899},{"style":113},[1900],{"type":35,"value":116},{"type":30,"tag":90,"props":1902,"children":1903},{"style":119},[1904],{"type":35,"value":1905},"'Errore aggiornamento carrello, riprova'",{"type":30,"tag":90,"props":1907,"children":1908},{"style":113},[1909],{"type":35,"value":1430},{"type":30,"tag":90,"props":1911,"children":1912},{"class":92,"line":1221},[1913],{"type":30,"tag":90,"props":1914,"children":1915},{"style":113},[1916],{"type":35,"value":1917},"    }\n",{"type":30,"tag":90,"props":1919,"children":1920},{"class":92,"line":1234},[1921,1926,1931],{"type":30,"tag":90,"props":1922,"children":1923},{"style":113},[1924],{"type":35,"value":1925},"  } ",{"type":30,"tag":90,"props":1927,"children":1928},{"style":136},[1929],{"type":35,"value":1930},"catch",{"type":30,"tag":90,"props":1932,"children":1933},{"style":113},[1934],{"type":35,"value":1935}," (err) {\n",{"type":30,"tag":90,"props":1937,"children":1938},{"class":92,"line":1243},[1939],{"type":30,"tag":90,"props":1940,"children":1941},{"style":97},[1942],{"type":35,"value":1943},"    \u002F\u002F Network timeout — critico\n",{"type":30,"tag":90,"props":1945,"children":1946},{"class":92,"line":1251},[1947,1952,1956,1961],{"type":30,"tag":90,"props":1948,"children":1949},{"style":107},[1950],{"type":35,"value":1951},"    reportError",{"type":30,"tag":90,"props":1953,"children":1954},{"style":113},[1955],{"type":35,"value":116},{"type":30,"tag":90,"props":1957,"children":1958},{"style":119},[1959],{"type":35,"value":1960},"'ATC_TIMEOUT'",{"type":30,"tag":90,"props":1962,"children":1963},{"style":113},[1964],{"type":35,"value":1965},", { variantId, error: err.message });\n",{"type":30,"tag":90,"props":1967,"children":1968},{"class":92,"line":1260},[1969],{"type":30,"tag":90,"props":1970,"children":1971},{"style":113},[1972],{"type":35,"value":290},{"type":30,"tag":90,"props":1974,"children":1975},{"class":92,"line":1309},[1976],{"type":30,"tag":90,"props":1977,"children":1978},{"style":113},[1979],{"type":35,"value":1240},{"type":30,"tag":31,"props":1981,"children":1982},{},[1983,1988,1990,1996],{"type":30,"tag":50,"props":1984,"children":1985},{},[1986],{"type":35,"value":1987},"Analisi:",{"type":35,"value":1989}," se il dashboard Grafana\u002FDatadog mostra ",{"type":30,"tag":63,"props":1991,"children":1993},{"className":1992},[],[1994],{"type":35,"value":1995},"atc_duration_p95",{"type":35,"value":1997}," >2000ms, hai un problema. Cause possibili:",{"type":30,"tag":1999,"props":2000,"children":2001},"ul",{},[2002,2012,2029],{"type":30,"tag":450,"props":2003,"children":2004},{},[2005,2010],{"type":30,"tag":50,"props":2006,"children":2007},{},[2008],{"type":35,"value":2009},"API latency:",{"type":35,"value":2011}," response time di Storefront API >800ms. Soluzione: cache il carrello lato client (optimistic UI, background sync).",{"type":30,"tag":450,"props":2013,"children":2014},{},[2015,2020,2022,2028],{"type":30,"tag":50,"props":2016,"children":2017},{},[2018],{"type":35,"value":2019},"Idratazione ritardata:",{"type":35,"value":2021}," se il tasto viene cliccato prima che React finisca l'idratazione, gli event handler non sono ancora attached. Soluzione: SSR + progressive enhancement, dai interattività immediata al pulsante via ",{"type":30,"tag":63,"props":2023,"children":2025},{"className":2024},[],[2026],{"type":35,"value":2027},"onLoad",{"type":35,"value":650},{"type":30,"tag":450,"props":2030,"children":2031},{},[2032,2037],{"type":30,"tag":50,"props":2033,"children":2034},{},[2035],{"type":35,"value":2036},"Bundle JS troppo grande:",{"type":35,"value":2038}," il bundle headless è >500kb, il parsing blocca il thread per 4+ secondi su 3G. Soluzione: code splitting, CSS critico inline.",{"type":30,"tag":31,"props":2040,"children":2041},{},[2042],{"type":35,"value":2043},"In una migrazione recente abbiamo visto ATC success rate crollare dal 96% all'89%. L'analisi RUM rivelava: sugli utenti mobile, l'idratazione Hydrogen impiegava 4.2 secondi perché il bundle era 780kb. Con lazy loading + route splitting l'abbiamo ridotto a 210kb, e il success rate è tornato al 95%.",{"type":30,"tag":38,"props":2045,"children":2047},{"id":2046},"mitigazione-rischi-feature-flag-e-rollback-istantaneo",[2048],{"type":35,"value":2049},"Mitigazione Rischi: Feature Flag e Rollback Istantaneo",{"type":30,"tag":31,"props":2051,"children":2052},{},[2053],{"type":35,"value":2054},"Una migrazione headless senza feature flag è come volare senza paracadute. Usa LaunchDarkly, Statsig, o un sistema flag custom Redis-backed per controllare chi vede il render headless vs legacy.",{"type":30,"tag":80,"props":2056,"children":2058},{"className":82,"code":2057,"language":84,"meta":14,"style":14},"\u002F\u002F Feature flag check — middleware edge\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 Prima il 10% del traffico\n  });\n  \n  if (headlessEnabled) {\n    return NextResponse.rewrite('\u002Fheadless-app');\n  }\n  \n  return NextResponse.rewrite('\u002Flegacy-shopify');\n}\n",[2059],{"type":30,"tag":63,"props":2060,"children":2061},{"__ignoreMap":14},[2062,2070,2105,2144,2165,2172,2210,2218,2226,2244,2252,2259,2271,2301,2308,2315,2343],{"type":30,"tag":90,"props":2063,"children":2064},{"class":92,"line":93},[2065],{"type":30,"tag":90,"props":2066,"children":2067},{"style":97},[2068],{"type":35,"value":2069},"\u002F\u002F Feature flag check — middleware edge\n",{"type":30,"tag":90,"props":2071,"children":2072},{"class":92,"line":103},[2073,2078,2083,2087,2092,2096,2101],{"type":30,"tag":90,"props":2074,"children":2075},{"style":136},[2076],{"type":35,"value":2077},"export",{"type":30,"tag":90,"props":2079,"children":2080},{"style":136},[2081],{"type":35,"value":2082}," async",{"type":30,"tag":90,"props":2084,"children":2085},{"style":136},[2086],{"type":35,"value":580},{"type":30,"tag":90,"props":2088,"children":2089},{"style":107},[2090],{"type":35,"value":2091}," middleware",{"type":30,"tag":90,"props":2093,"children":2094},{"style":113},[2095],{"type":35,"value":116},{"type":30,"tag":90,"props":2097,"children":2098},{"style":130},[2099],{"type":35,"value":2100},"request",{"type":30,"tag":90,"props":2102,"children":2103},{"style":113},[2104],{"type":35,"value":599},{"type":30,"tag":90,"props":2106,"children":2107},{"class":92,"line":147},[2108,2112,2117,2121,2126,2131,2135,2140],{"type":30,"tag":90,"props":2109,"children":2110},{"style":136},[2111],{"type":35,"value":153},{"type":30,"tag":90,"props":2113,"children":2114},{"style":156},[2115],{"type":35,"value":2116}," userId",{"type":30,"tag":90,"props":2118,"children":2119},{"style":136},[2120],{"type":35,"value":164},{"type":30,"tag":90,"props":2122,"children":2123},{"style":113},[2124],{"type":35,"value":2125}," request.cookies.",{"type":30,"tag":90,"props":2127,"children":2128},{"style":107},[2129],{"type":35,"value":2130},"get",{"type":30,"tag":90,"props":2132,"children":2133},{"style":113},[2134],{"type":35,"value":116},{"type":30,"tag":90,"props":2136,"children":2137},{"style":119},[2138],{"type":35,"value":2139},"'user_id'",{"type":30,"tag":90,"props":2141,"children":2142},{"style":113},[2143],{"type":35,"value":1430},{"type":30,"tag":90,"props":2145,"children":2146},{"class":92,"line":182},[2147,2151,2156,2160],{"type":30,"tag":90,"props":2148,"children":2149},{"style":136},[2150],{"type":35,"value":153},{"type":30,"tag":90,"props":2152,"children":2153},{"style":156},[2154],{"type":35,"value":2155}," country",{"type":30,"tag":90,"props":2157,"children":2158},{"style":136},[2159],{"type":35,"value":164},{"type":30,"tag":90,"props":2161,"children":2162},{"style":113},[2163],{"type":35,"value":2164}," request.geo.country;\n",{"type":30,"tag":90,"props":2166,"children":2167},{"class":92,"line":191},[2168],{"type":30,"tag":90,"props":2169,"children":2170},{"style":113},[2171],{"type":35,"value":188},{"type":30,"tag":90,"props":2173,"children":2174},{"class":92,"line":224},[2175,2179,2184,2188,2192,2197,2201,2206],{"type":30,"tag":90,"props":2176,"children":2177},{"style":136},[2178],{"type":35,"value":153},{"type":30,"tag":90,"props":2180,"children":2181},{"style":156},[2182],{"type":35,"value":2183}," headlessEnabled",{"type":30,"tag":90,"props":2185,"children":2186},{"style":136},[2187],{"type":35,"value":164},{"type":30,"tag":90,"props":2189,"children":2190},{"style":136},[2191],{"type":35,"value":640},{"type":30,"tag":90,"props":2193,"children":2194},{"style":107},[2195],{"type":35,"value":2196}," checkFlag",{"type":30,"tag":90,"props":2198,"children":2199},{"style":113},[2200],{"type":35,"value":116},{"type":30,"tag":90,"props":2202,"children":2203},{"style":119},[2204],{"type":35,"value":2205},"'headless-rollout'",{"type":30,"tag":90,"props":2207,"children":2208},{"style":113},[2209],{"type":35,"value":1646},{"type":30,"tag":90,"props":2211,"children":2212},{"class":92,"line":257},[2213],{"type":30,"tag":90,"props":2214,"children":2215},{"style":113},[2216],{"type":35,"value":2217},"    userId,\n",{"type":30,"tag":90,"props":2219,"children":2220},{"class":92,"line":276},[2221],{"type":30,"tag":90,"props":2222,"children":2223},{"style":113},[2224],{"type":35,"value":2225},"    country,\n",{"type":30,"tag":90,"props":2227,"children":2228},{"class":92,"line":24},[2229,2234,2239],{"type":30,"tag":90,"props":2230,"children":2231},{"style":113},[2232],{"type":35,"value":2233},"    trafficPercentage: ",{"type":30,"tag":90,"props":2235,"children":2236},{"style":156},[2237],{"type":35,"value":2238},"10",{"type":30,"tag":90,"props":2240,"children":2241},{"style":97},[2242],{"type":35,"value":2243}," \u002F\u002F Prima il 10% del traffico\n",{"type":30,"tag":90,"props":2245,"children":2246},{"class":92,"line":293},[2247],{"type":30,"tag":90,"props":2248,"children":2249},{"style":113},[2250],{"type":35,"value":2251},"  });\n",{"type":30,"tag":90,"props":2253,"children":2254},{"class":92,"line":301},[2255],{"type":30,"tag":90,"props":2256,"children":2257},{"style":113},[2258],{"type":35,"value":188},{"type":30,"tag":90,"props":2260,"children":2261},{"class":92,"line":330},[2262,2266],{"type":30,"tag":90,"props":2263,"children":2264},{"style":136},[2265],{"type":35,"value":197},{"type":30,"tag":90,"props":2267,"children":2268},{"style":113},[2269],{"type":35,"value":2270}," (headlessEnabled) {\n",{"type":30,"tag":90,"props":2272,"children":2273},{"class":92,"line":344},[2274,2278,2283,2288,2292,2297],{"type":30,"tag":90,"props":2275,"children":2276},{"style":136},[2277],{"type":35,"value":230},{"type":30,"tag":90,"props":2279,"children":2280},{"style":113},[2281],{"type":35,"value":2282}," NextResponse.",{"type":30,"tag":90,"props":2284,"children":2285},{"style":107},[2286],{"type":35,"value":2287},"rewrite",{"type":30,"tag":90,"props":2289,"children":2290},{"style":113},[2291],{"type":35,"value":116},{"type":30,"tag":90,"props":2293,"children":2294},{"style":119},[2295],{"type":35,"value":2296},"'\u002Fheadless-app'",{"type":30,"tag":90,"props":2298,"children":2299},{"style":113},[2300],{"type":35,"value":1430},{"type":30,"tag":90,"props":2302,"children":2303},{"class":92,"line":353},[2304],{"type":30,"tag":90,"props":2305,"children":2306},{"style":113},[2307],{"type":35,"value":290},{"type":30,"tag":90,"props":2309,"children":2310},{"class":92,"line":885},[2311],{"type":30,"tag":90,"props":2312,"children":2313},{"style":113},[2314],{"type":35,"value":188},{"type":30,"tag":90,"props":2316,"children":2317},{"class":92,"line":951},[2318,2322,2326,2330,2334,2339],{"type":30,"tag":90,"props":2319,"children":2320},{"style":136},[2321],{"type":35,"value":307},{"type":30,"tag":90,"props":2323,"children":2324},{"style":113},[2325],{"type":35,"value":2282},{"type":30,"tag":90,"props":2327,"children":2328},{"style":107},[2329],{"type":35,"value":2287},{"type":30,"tag":90,"props":2331,"children":2332},{"style":113},[2333],{"type":35,"value":116},{"type":30,"tag":90,"props":2335,"children":2336},{"style":119},[2337],{"type":35,"value":2338},"'\u002Flegacy-shopify'",{"type":30,"tag":90,"props":2340,"children":2341},{"style":113},[2342],{"type":35,"value":1430},{"type":30,"tag":90,"props":2344,"children":2345},{"class":92,"line":1005},[2346],{"type":30,"tag":90,"props":2347,"children":2348},{"style":113},[2349],{"type":35,"value":1240},{"type":30,"tag":31,"props":2351,"children":2352},{},[2353,2358],{"type":30,"tag":50,"props":2354,"children":2355},{},[2356],{"type":35,"value":2357},"Strategia rollback istantaneo:",{"type":35,"value":2359}," se in una finestra mobile di 5 minuti l'error rate ATC supera il 3%, attiva un rollback automatico (alert PagerDuty + toggle flag).",{"type":30,"tag":80,"props":2361,"children":2365},{"className":2362,"code":2363,"language":2364,"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: spike errori ATC\"\n","yaml",[2366],{"type":30,"tag":63,"props":2367,"children":2368},{"__ignoreMap":14},[2369,2377,2391,2414,2436,2458,2465,2477,2499,2516,2533,2553,2570],{"type":30,"tag":90,"props":2370,"children":2371},{"class":92,"line":93},[2372],{"type":30,"tag":90,"props":2373,"children":2374},{"style":97},[2375],{"type":35,"value":2376},"# rollback-policy.yaml\n",{"type":30,"tag":90,"props":2378,"children":2379},{"class":92,"line":103},[2380,2386],{"type":30,"tag":90,"props":2381,"children":2383},{"style":2382},"--shiki-default:#85E89D",[2384],{"type":35,"value":2385},"thresholds",{"type":30,"tag":90,"props":2387,"children":2388},{"style":113},[2389],{"type":35,"value":2390},":\n",{"type":30,"tag":90,"props":2392,"children":2393},{"class":92,"line":147},[2394,2399,2404,2409],{"type":30,"tag":90,"props":2395,"children":2396},{"style":2382},[2397],{"type":35,"value":2398},"  atc_error_rate",{"type":30,"tag":90,"props":2400,"children":2401},{"style":113},[2402],{"type":35,"value":2403},": ",{"type":30,"tag":90,"props":2405,"children":2406},{"style":156},[2407],{"type":35,"value":2408},"3.0",{"type":30,"tag":90,"props":2410,"children":2411},{"style":97},[2412],{"type":35,"value":2413},"      # percent\n",{"type":30,"tag":90,"props":2415,"children":2416},{"class":92,"line":182},[2417,2422,2426,2431],{"type":30,"tag":90,"props":2418,"children":2419},{"style":2382},[2420],{"type":35,"value":2421},"  lcp_p75",{"type":30,"tag":90,"props":2423,"children":2424},{"style":113},[2425],{"type":35,"value":2403},{"type":30,"tag":90,"props":2427,"children":2428},{"style":156},[2429],{"type":35,"value":2430},"3500",{"type":30,"tag":90,"props":2432,"children":2433},{"style":97},[2434],{"type":35,"value":2435},"            # milliseconds\n",{"type":30,"tag":90,"props":2437,"children":2438},{"class":92,"line":191},[2439,2444,2448,2453],{"type":30,"tag":90,"props":2440,"children":2441},{"style":2382},[2442],{"type":35,"value":2443},"  revenue_drop",{"type":30,"tag":90,"props":2445,"children":2446},{"style":113},[2447],{"type":35,"value":2403},{"type":30,"tag":90,"props":2449,"children":2450},{"style":156},[2451],{"type":35,"value":2452},"5.0",{"type":30,"tag":90,"props":2454,"children":2455},{"style":97},[2456],{"type":35,"value":2457},"        # percent vs last week same hour\n",{"type":30,"tag":90,"props":2459,"children":2460},{"class":92,"line":224},[2461],{"type":30,"tag":90,"props":2462,"children":2463},{"emptyLinePlaceholder":564},[2464],{"type":35,"value":567},{"type":30,"tag":90,"props":2466,"children":2467},{"class":92,"line":257},[2468,2473],{"type":30,"tag":90,"props":2469,"children":2470},{"style":2382},[2471],{"type":35,"value":2472},"actions",{"type":30,"tag":90,"props":2474,"children":2475},{"style":113},[2476],{"type":35,"value":2390},{"type":30,"tag":90,"props":2478,"children":2479},{"class":92,"line":276},[2480,2485,2490,2494],{"type":30,"tag":90,"props":2481,"children":2482},{"style":113},[2483],{"type":35,"value":2484},"  - ",{"type":30,"tag":90,"props":2486,"children":2487},{"style":2382},[2488],{"type":35,"value":2489},"type",{"type":30,"tag":90,"props":2491,"children":2492},{"style":113},[2493],{"type":35,"value":2403},{"type":30,"tag":90,"props":2495,"children":2496},{"style":119},[2497],{"type":35,"value":2498},"flag_override\n",{"type":30,"tag":90,"props":2500,"children":2501},{"class":92,"line":24},[2502,2507,2511],{"type":30,"tag":90,"props":2503,"children":2504},{"style":2382},[2505],{"type":35,"value":2506},"    target",{"type":30,"tag":90,"props":2508,"children":2509},{"style":113},[2510],{"type":35,"value":2403},{"type":30,"tag":90,"props":2512,"children":2513},{"style":119},[2514],{"type":35,"value":2515},"headless-rollout\n",{"type":30,"tag":90,"props":2517,"children":2518},{"class":92,"line":293},[2519,2524,2528],{"type":30,"tag":90,"props":2520,"children":2521},{"style":2382},[2522],{"type":35,"value":2523},"    value",{"type":30,"tag":90,"props":2525,"children":2526},{"style":113},[2527],{"type":35,"value":2403},{"type":30,"tag":90,"props":2529,"children":2530},{"style":156},[2531],{"type":35,"value":2532},"false\n",{"type":30,"tag":90,"props":2534,"children":2535},{"class":92,"line":301},[2536,2540,2544,2548],{"type":30,"tag":90,"props":2537,"children":2538},{"style":113},[2539],{"type":35,"value":2484},{"type":30,"tag":90,"props":2541,"children":2542},{"style":2382},[2543],{"type":35,"value":2489},{"type":30,"tag":90,"props":2545,"children":2546},{"style":113},[2547],{"type":35,"value":2403},{"type":30,"tag":90,"props":2549,"children":2550},{"style":119},[2551],{"type":35,"value":2552},"alert\n",{"type":30,"tag":90,"props":2554,"children":2555},{"class":92,"line":330},[2556,2561,2565],{"type":30,"tag":90,"props":2557,"children":2558},{"style":2382},[2559],{"type":35,"value":2560},"    channel",{"type":30,"tag":90,"props":2562,"children":2563},{"style":113},[2564],{"type":35,"value":2403},{"type":30,"tag":90,"props":2566,"children":2567},{"style":119},[2568],{"type":35,"value":2569},"slack-ops\n",{"type":30,"tag":90,"props":2571,"children":2572},{"class":92,"line":344},[2573,2578,2582],{"type":30,"tag":90,"props":2574,"children":2575},{"style":2382},[2576],{"type":35,"value":2577},"    message",{"type":30,"tag":90,"props":2579,"children":2580},{"style":113},[2581],{"type":35,"value":2403},{"type":30,"tag":90,"props":2583,"children":2584},{"style":119},[2585],{"type":35,"value":2586},"\"Rollback headless: spike errori ATC\"\n",{"type":30,"tag":31,"props":2588,"children":2589},{},[2590],{"type":35,"value":2591},"Con questa struttura la migrazione dura 8 settimane, ma il calo di revenue rimane \u003C2%. I benefici reali di headless (LCP da 4.8s a 1.9s, conversion +12%) si vedono solo quando tutto il sito è migrato, ma nessun momento diventa una crisi operazionale.",{"type":30,"tag":38,"props":2593,"children":2595},{"id":2594},"scenari-di-test-performance-in-migrazione",[2596],{"type":35,"value":2597},"Scenari di Test Performance in Migrazione",{"type":30,"tag":31,"props":2599,"children":2600},{},[2601],{"type":35,"value":2602},"Non bastano i test \"il nuovo sito è veloce\". Devi testare: \"i pattern di comportamento degli utenti legacy rimangono intatti post-migrazione\". Combo synthetic + real user monitoring:",{"type":30,"tag":31,"props":2604,"children":2605},{},[2606],{"type":30,"tag":50,"props":2607,"children":2608},{},[2609],{"type":35,"value":2610},"Synthetic:",{"type":30,"tag":1999,"props":2612,"children":2613},{},[2614,2619],{"type":30,"tag":450,"props":2615,"children":2616},{},[2617],{"type":35,"value":2618},"Lighthouse CI pipeline a ogni deploy: check LCP\u002FTBT\u002FCLS su PDP, PLP, homepage",{"type":30,"tag":450,"props":2620,"children":2621},{},[2622],{"type":35,"value":2623},"WebPageTest con script: \"apri categoria, clicca 3° prodotto, aggiungi carrello, vai a checkout\", eseguito da 10 geografie (Istanbul, Berlin, New York)",{"type":30,"tag":31,"props":2625,"children":2626},{},[2627],{"type":30,"tag":50,"props":2628,"children":2629},{},[2630],{"type":35,"value":2631},"RUM:",{"type":30,"tag":1999,"props":2633,"children":2634},{},[2635,2648],{"type":30,"tag":450,"props":2636,"children":2637},{},[2638,2640,2646],{"type":35,"value":2639},"Ogni page view raccoglie ",{"type":30,"tag":63,"props":2641,"children":2643},{"className":2642},[],[2644],{"type":35,"value":2645},"performance.getEntriesByType('navigation')",{"type":35,"value":2647},", streaming in BigQuery",{"type":30,"tag":450,"props":2649,"children":2650},{},[2651],{"type":35,"value":2652},"Coorte comparativa: ultimi 10K utenti su frontend vecchio vs primi 10K su headless → median session duration, pagine per sessione, bounce rate",{"type":30,"tag":31,"props":2654,"children":2655},{},[2656,2658,2667],{"type":35,"value":2657},"L'infrastruttura ",{"type":30,"tag":2659,"props":2660,"children":2664},"a",{"href":2661,"rel":2662},"https:\u002F\u002Fwww.roibase.com.tr\u002Fit\u002Fheadless",[2663],"nofollow",[2665],{"type":35,"value":2666},"Headless Commerce",{"type":35,"value":2668}," che consigliamo è Nuxt 3 + Cloudflare Pages perché l'SSR edge latency rimane \u003C50ms e il routing con Workers supporta il rollout fasato nativamente.",{"type":30,"tag":31,"props":2670,"children":2671},{},[2672,2674,2679],{"type":35,"value":2673},"Il pezzo più critico di una roadmap migrazione headless è ",{"type":30,"tag":50,"props":2675,"children":2676},{},[2677],{"type":35,"value":2678},"la capacità di fare step indietro",{"type":35,"value":2680},". Ogni fase deve essere deployabile indipendentemente, controllabile da flag, guidata da metriche. Se il test di parità SEO non è automatizzato, il QA manuale non può controllare 500 URL e la perdita di ranking Google viene scoperta 6 settimane dopo — troppo tardi per un rollback. Se l'analisi abbandono carrello non è real-time, usi dashboard con 24 ore di lag e perdi il segnale critico. Con questa disciplina, una migrazione headless diventa un processo di ottimizzazione misurabile, non un rischio operazionale.",{"type":30,"tag":2682,"props":2683,"children":2684},"style",{},[2685],{"type":35,"value":2686},"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":147,"depth":147,"links":2688},[2689,2690,2691,2692,2693],{"id":40,"depth":103,"text":43},{"id":420,"depth":103,"text":423},{"id":1487,"depth":103,"text":1490},{"id":2046,"depth":103,"text":2049},{"id":2594,"depth":103,"text":2597},"markdown","content:it:tech:headless-e-commerce-migration-roadmap-e-risk-management.md","content","it\u002Ftech\u002Fheadless-e-commerce-migration-roadmap-e-risk-management.md","it\u002Ftech\u002Fheadless-e-commerce-migration-roadmap-e-risk-management","md",1785967494192]