CINXE.COM
<!doctype html><html lang="en"><head><title data-rh="true">Edge Delivery Services for Commerce: A New Storefront Has Dropped | by Carlos A. Cabrera | Jan, 2025 | Adobe Tech Blog</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:type" content="article"/><meta data-rh="true" property="article:published_time" content="2025-01-14T19:05:34.837Z"/><meta data-rh="true" name="title" content="Edge Delivery Services for Commerce: A New Storefront Has Dropped | by Carlos A. Cabrera | Jan, 2025 | Adobe Tech Blog"/><meta data-rh="true" property="og:title" content="Edge Delivery Services for Commerce: A New Storefront Has Dropped"/><meta data-rh="true" property="al:android:url" content="medium://p/ae1ac8d7ceca"/><meta data-rh="true" property="al:ios:url" content="medium://p/ae1ac8d7ceca"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="At Adobe, we have redefined the e-commerce storefront to help merchants streamline development workflows and accelerate time-to-market through a fully composable architecture powered by Edge Delivery…"/><meta data-rh="true" property="og:description" content="We have reimagined what a modern e-commerce storefront can be, & the Edge Delivery Services for Commerce Boilerplate manifests this vision."/><meta data-rh="true" property="og:url" content="https://blog.developer.adobe.com/edge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca"/><meta data-rh="true" property="al:web:url" content="https://blog.developer.adobe.com/edge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/resize:fit:1200/1*f8AlON9dCnR1p9XcfyzbyQ.png"/><meta data-rh="true" property="article:author" content="https://medium.com/@fnhipster"/><meta data-rh="true" name="author" content="Carlos A. Cabrera"/><meta data-rh="true" name="robots" content="index,noarchive,nofollow,max-image-preview:large"/><meta data-rh="true" name="referrer" content="unsafe-url"/><meta data-rh="true" property="twitter:title" content="Edge Delivery Services for Commerce: A New Storefront Has Dropped"/><meta data-rh="true" name="twitter:site" content="@adobedevs"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/ae1ac8d7ceca"/><meta data-rh="true" property="twitter:description" content="We have reimagined what a modern e-commerce storefront can be, & the Edge Delivery Services for Commerce Boilerplate manifests this vision."/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/resize:fit:1200/1*f8AlON9dCnR1p9XcfyzbyQ.png"/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:label1" content="Reading time"/><meta data-rh="true" name="twitter:data1" content="11 min read"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/resize:fill:256:256/1*y6TtdKlSFBCCH2t385XObA.png"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="author" href="https://medium.com/@fnhipster"/><link data-rh="true" rel="canonical" href="https://blog.developer.adobe.com/edge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/ae1ac8d7ceca"/><script data-rh="true" type="application/ld+json">{"@context":"http:\u002F\u002Fschema.org","@type":"NewsArticle","image":["https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:1200\u002F1*f8AlON9dCnR1p9XcfyzbyQ.png"],"url":"https:\u002F\u002Fblog.developer.adobe.com\u002Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca","dateCreated":"2025-01-14T19:05:34.837Z","datePublished":"2025-01-14T19:05:34.837Z","dateModified":"2025-01-14T20:27:59.333Z","headline":"Edge Delivery Services for Commerce: A New Storefront Has Dropped","name":"Edge Delivery Services for Commerce: A New Storefront Has Dropped","description":"At Adobe, we have redefined the e-commerce storefront to help merchants streamline development workflows and accelerate time-to-market through a fully composable architecture powered by Edge Delivery…","identifier":"ae1ac8d7ceca","author":{"@type":"Person","name":"Carlos A. Cabrera","url":"https:\u002F\u002Fblog.developer.adobe.com\u002F@fnhipster"},"creator":["Carlos A. Cabrera"],"publisher":{"@type":"Organization","name":"Adobe Tech Blog","url":"blog.developer.adobe.com","logo":{"@type":"ImageObject","width":272,"height":60,"url":"https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:544\u002F7*V1_7XP4snlmqrc_0Njontw.png"}},"mainEntityOfPage":"https:\u002F\u002Fblog.developer.adobe.com\u002Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca"}</script><style type="text/css" data-fela-rehydration="577" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="577" data-fela-type="KEYFRAME">@-webkit-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@-moz-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{color:inherit}.ag{fill:inherit}.ah{font-size:inherit}.ai{border:inherit}.aj{font-family:inherit}.ak{letter-spacing:inherit}.al{font-weight:inherit}.am{padding:0}.an{margin:0}.ao{cursor:pointer}.ap:disabled{cursor:not-allowed}.aq:disabled{color:#6B6B6B}.ar:disabled{fill:#6B6B6B}.au{width:auto}.av path{fill:#242424}.aw{height:25px}.ax{margin-left:16px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{justify-content:center}.ch{max-width:680px}.ci{min-width:0}.cj{animation:k1 1.2s ease-in-out infinite}.ck{height:100vh}.cl{margin-bottom:16px}.cm{margin-top:48px}.cn{align-items:flex-start}.co{flex-direction:column}.cp{justify-content:space-between}.cq{margin-bottom:24px}.cw{width:80%}.cx{background-color:#F2F2F2}.dd{height:44px}.de{width:44px}.df{margin:auto 0}.dg{margin-bottom:4px}.dh{height:16px}.di{width:120px}.dj{width:80px}.dp{margin-bottom:8px}.dq{width:96%}.dr{width:98%}.ds{width:81%}.dt{margin-left:8px}.du{color:#6B6B6B}.dv{font-size:13px}.dw{height:100%}.ep{color:#FFFFFF}.eq{fill:#FFFFFF}.er{background:rgba(133, 132, 132, 1)}.es{border-color:rgba(133, 132, 132, 1)}.ew:disabled{cursor:inherit !important}.ex:disabled{opacity:0.3}.ey:disabled:hover{background:rgba(133, 132, 132, 1)}.ez:disabled:hover{border-color:rgba(133, 132, 132, 1)}.fa{border-radius:99em}.fb{border-width:1px}.fc{border-style:solid}.fd{box-sizing:border-box}.fe{text-decoration:none}.ff{text-align:center}.fi{margin-right:32px}.fj{position:relative}.fk{fill:#6B6B6B}.fn{background:transparent}.fo svg{margin-left:4px}.fp svg{fill:#6B6B6B}.fr{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.fs{position:absolute}.fu{max-width:100%}.fv{overflow:hidden}.fw{text-overflow:ellipsis}.fx{white-space:nowrap}.fy{border-bottom:1px solid #F2F2F2}.fz{height:3px}.ga{background-color:rgba(133, 132, 132, 1)}.gb{max-width:1192px}.gh{font-weight:500}.gv{margin-left:56px}.gw{gap:32px}.gx{margin:0 8px}.gy{display:inline}.gz{font-size:16px}.ha{line-height:24px}.hb{text-decoration:underline}.hc{pointer-events:none}.hd{will-change:opacity, transform}.hg{opacity:0}.hh{transform:translateY(89px)}.hi{width:132px}.hj{border-radius:2px}.hk{height:38px}.hl{width:38px}.hn{margin-top:16px}.ho{word-break:break-word}.hu{margin:0 24px}.hy{background:rgba(255, 255, 255, 1)}.hz{border:1px solid #F2F2F2}.ia{box-shadow:0 1px 4px #F2F2F2}.ib{max-height:100vh}.ic{overflow-y:auto}.id{left:0}.ie{top:calc(100vh + 100px)}.if{bottom:calc(100vh + 100px)}.ig{width:10px}.ih{word-wrap:break-word}.ii:after{display:block}.ij:after{content:""}.ik:after{clear:both}.il{line-height:1.23}.im{letter-spacing:0}.in{font-style:normal}.io{font-weight:700}.jt{align-items:baseline}.ju{width:48px}.jv{height:48px}.jw{border:2px solid rgba(255, 255, 255, 1)}.jx{z-index:0}.jy{box-shadow:none}.jz{border:1px solid rgba(0, 0, 0, 0.05)}.ka{margin-left:-12px}.kb{width:28px}.kc{height:28px}.kd{z-index:1}.ke{width:24px}.kf{margin-bottom:2px}.kg{flex-wrap:nowrap}.ki{flex:0 0 auto}.kl{flex-wrap:wrap}.km{white-space:pre-wrap}.kn{margin-right:4px}.ko{max-height:20px}.kp{display:-webkit-box}.kq{-webkit-line-clamp:1}.kr{-webkit-box-orient:vertical}.ks{word-break:break-all}.ku{padding-left:8px}.kv{padding-right:8px}.lw> *{flex-shrink:0}.lx{overflow-x:scroll}.ly::-webkit-scrollbar{display:none}.lz{scrollbar-width:none}.ma{-ms-overflow-style:none}.mb{width:74px}.mc{flex-direction:row}.md{z-index:2}.mg{-webkit-user-select:none}.mh{border:0}.mi{fill:rgba(117, 117, 117, 1)}.ml{outline:0}.mm{user-select:none}.mn> svg{pointer-events:none}.mw{cursor:progress}.mx{opacity:1}.my{padding:4px 0}.nb{margin-top:0px}.nc{width:16px}.ne{display:inline-flex}.nk{padding:8px 2px}.nl svg{color:#6B6B6B}.oc{line-height:1.58}.od{letter-spacing:-0.004em}.oe{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.ow{margin-bottom:-0.46em}.ox{line-height:1.12}.oy{letter-spacing:-0.022em}.oz{font-weight:600}.ps{margin-bottom:-0.28em}.py{clear:both}.qe{margin-left:auto}.qf{margin-right:auto}.qg{max-width:2700px}.qm{padding-top:5px}.qn{padding-bottom:5px}.qp{cursor:zoom-in}.qq{z-index:auto}.qs{height:auto}.qt{list-style-type:disc}.qu{margin-left:30px}.qv{padding-left:0px}.rb{max-width:7258px}.rc{line-height:1.18}.ri{margin-bottom:-0.31em}.rj{font-style:italic}.rk{padding:2px 4px}.rl{font-size:75%}.rm> strong{font-family:inherit}.rn{font-family:source-code-pro, Menlo, Monaco, "Courier New", Courier, monospace}.ro{max-width:1436px}.rp{max-width:4898px}.rq{max-width:3680px}.rr{list-style-type:decimal}.rs{max-width:2756px}.rt{max-width:4696px}.ru{overflow-x:auto}.rv{padding:32px}.rw{border:1px solid #E5E5E5}.rx{line-height:1.4}.ry{margin-top:-0.2em}.rz{margin-bottom:-0.2em}.sa{white-space:pre}.sb{min-width:fit-content}.sc{max-width:2520px}.sd{max-width:3840px}.se{margin-bottom:26px}.sf{margin-top:6px}.sg{margin-top:8px}.sh{margin-right:8px}.si{padding:8px 16px}.sj{border-radius:100px}.sk{transition:background 300ms ease}.sm{border-top:none}.sn{margin-bottom:50px}.so{height:52px}.sp{max-height:52px}.sq{box-sizing:content-box}.sr{position:static}.st{max-width:155px}.sz{margin-right:20px}.ta{margin-bottom:64px}.tb{margin-bottom:48px}.tp{height:64px}.tq{width:64px}.tr{align-self:flex-end}.ts{color:rgba(255, 255, 255, 1)}.tt{fill:rgba(255, 255, 255, 1)}.tu{background:rgba(25, 25, 25, 1)}.tv{border-color:rgba(25, 25, 25, 1)}.ty:disabled{opacity:0.1}.tz:disabled:hover{background:rgba(25, 25, 25, 1)}.ua:disabled:hover{border-color:rgba(25, 25, 25, 1)}.ub{flex:1 1 auto}.uf{padding-right:4px}.um{margin-bottom:54px}.un{height:0px}.uo{gap:18px}.up{fill:rgba(61, 61, 61, 1)}.vb{border-bottom:solid 1px #E5E5E5}.vc{margin-top:72px}.vd{padding:24px 0}.ve{margin-bottom:0px}.vf{margin-right:16px}.as:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.at:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.et:hover{background:rgba(114, 114, 113, 1)}.eu:hover{border-color:rgba(114, 114, 113, 1)}.ev:hover{cursor:pointer}.fl:hover{color:#242424}.fm:hover{fill:#242424}.fq:hover svg{fill:#242424}.ft:hover{background-color:rgba(0, 0, 0, 0.1)}.hm:hover{background-color:none}.kh:hover{text-decoration:underline}.mk:hover{fill:rgba(8, 8, 8, 1)}.mz:hover{fill:#000000}.na:hover p{color:#000000}.nd:hover{color:#000000}.nm:hover svg{color:#000000}.sl:hover{background-color:#F2F2F2}.tw:hover{background:#000000}.tx:hover{border-color:#242424}.uq:hover{fill:rgba(25, 25, 25, 1)}.bd:focus-within path{fill:#242424}.mj:focus{fill:rgba(8, 8, 8, 1)}.nn:focus svg{color:#000000}.qr:focus{transform:scale(1.01)}.mo:active{border-style:none}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.cg{margin:0 64px}.cv{height:48px}.dc{margin-bottom:52px}.do{margin-bottom:48px}.ef{font-size:14px}.eg{line-height:20px}.em{font-size:13px}.eo{padding:5px 12px}.fh{display:flex}.gg{max-width:250px}.gs{font-size:20px}.gt{line-height:24px}.gu{letter-spacing:0}.ht{margin-bottom:50px}.hx{max-width:680px}.jj{font-size:42px}.jk{margin-top:1.19em}.jl{margin-bottom:32px}.jm{line-height:52px}.jn{letter-spacing:-0.011em}.js{align-items:center}.li{border-top:solid 1px #F2F2F2}.lj{border-bottom:solid 1px #F2F2F2}.lk{margin:32px 0 0}.ll{padding:3px 8px}.lu> *{margin-right:24px}.lv> :last-child{margin-right:0}.mv{margin-top:0px}.nj{margin:0}.ot{margin-top:2.14em}.ou{line-height:32px}.ov{letter-spacing:-0.003em}.po{font-size:24px}.pp{margin-top:1.95em}.pq{line-height:30px}.pr{letter-spacing:-0.016em}.px{margin-top:0.94em}.qd{max-width:1192px}.ql{margin-top:56px}.ra{margin-top:1.14em}.rh{margin-top:1.72em}.sy{display:inline-block}.tc{flex-direction:row}.tf{margin-bottom:0}.tg{margin-right:20px}.uc{max-width:500px}.uv{margin:40px 0 0}.va{padding-top:72px}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.mu{margin-top:0px}.sx{display:inline-block}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.mt{margin-top:0px}.sw{display:inline-block}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.mr{margin-top:0px}.ms{margin-right:0px}.sv{display:inline-block}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.cc{margin:0 24px}.cr{height:40px}.cy{margin-bottom:44px}.dk{margin-bottom:32px}.dx{font-size:13px}.dy{line-height:20px}.eh{padding:0px 8px 1px}.gc{max-width:150px}.gi{font-size:16px}.gj{letter-spacing:0}.hp{margin-bottom:2px}.ip{font-size:32px}.iq{margin-top:1.01em}.ir{margin-bottom:24px}.is{line-height:38px}.it{letter-spacing:-0.014em}.jo{align-items:flex-start}.kj{flex-direction:column}.kw{margin:24px -24px 0}.kx{padding:0}.lm> *{margin-right:8px}.ln> :last-child{margin-right:24px}.me{margin-left:0px}.mp{margin-top:0px}.mq{margin-right:0px}.nf{margin:0}.no{border:1px solid #F2F2F2}.np{border-radius:99em}.nq{padding:0px 16px 0px 12px}.nr{height:38px}.ns{align-items:center}.nu svg{margin-right:8px}.of{font-size:18px}.og{margin-top:1.56em}.oh{line-height:28px}.oi{letter-spacing:-0.003em}.pa{font-size:20px}.pb{margin-top:1.2em}.pc{line-height:24px}.pt{margin-top:0.67em}.pz{max-width:100%}.qh{margin-top:40px}.qw{margin-top:1.34em}.rd{margin-top:1.23em}.su{display:inline-block}.tn{margin-bottom:20px}.to{margin-right:0}.ug{font-size:24px}.uh{line-height:30px}.ui{letter-spacing:-0.016em}.ur{margin:32px 0 0}.uw{padding-top:48px}.nt:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.cf{margin:0 64px}.cu{height:48px}.db{margin-bottom:52px}.dn{margin-bottom:48px}.ed{font-size:14px}.ee{line-height:20px}.ek{font-size:13px}.el{padding:5px 12px}.fg{display:flex}.gf{max-width:250px}.gp{font-size:20px}.gq{line-height:24px}.gr{letter-spacing:0}.hs{margin-bottom:50px}.hw{max-width:680px}.je{font-size:42px}.jf{margin-top:1.19em}.jg{margin-bottom:32px}.jh{line-height:52px}.ji{letter-spacing:-0.011em}.jr{align-items:center}.le{border-top:solid 1px #F2F2F2}.lf{border-bottom:solid 1px #F2F2F2}.lg{margin:32px 0 0}.lh{padding:3px 8px}.ls> *{margin-right:24px}.lt> :last-child{margin-right:0}.ni{margin:0}.oq{margin-top:2.14em}.or{line-height:32px}.os{letter-spacing:-0.003em}.pk{font-size:24px}.pl{margin-top:1.95em}.pm{line-height:30px}.pn{letter-spacing:-0.016em}.pw{margin-top:0.94em}.qc{max-width:1192px}.qk{margin-top:56px}.qz{margin-top:1.14em}.rg{margin-top:1.72em}.td{flex-direction:row}.th{margin-bottom:0}.ti{margin-right:20px}.ud{max-width:500px}.uu{margin:40px 0 0}.uz{padding-top:72px}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.ce{margin:0 48px}.ct{height:48px}.da{margin-bottom:52px}.dm{margin-bottom:48px}.eb{font-size:13px}.ec{line-height:20px}.ej{padding:0px 8px 1px}.ge{max-width:250px}.gm{font-size:20px}.gn{line-height:24px}.go{letter-spacing:0}.hr{margin-bottom:50px}.hv{max-width:680px}.iz{font-size:42px}.ja{margin-top:1.19em}.jb{margin-bottom:32px}.jc{line-height:52px}.jd{letter-spacing:-0.011em}.jq{align-items:center}.la{border-top:solid 1px #F2F2F2}.lb{border-bottom:solid 1px #F2F2F2}.lc{margin:32px 0 0}.ld{padding:3px 8px}.lq> *{margin-right:24px}.lr> :last-child{margin-right:0}.nh{margin:0}.on{margin-top:2.14em}.oo{line-height:32px}.op{letter-spacing:-0.003em}.pg{font-size:24px}.ph{margin-top:1.95em}.pi{line-height:30px}.pj{letter-spacing:-0.016em}.pv{margin-top:0.94em}.qb{max-width:100%}.qj{margin-top:56px}.qy{margin-top:1.14em}.rf{margin-top:1.72em}.te{flex-direction:row}.tj{margin-bottom:0}.tk{margin-right:20px}.ue{max-width:500px}.ut{margin:40px 0 0}.uy{padding-top:72px}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.cd{margin:0 24px}.cs{height:40px}.cz{margin-bottom:44px}.dl{margin-bottom:32px}.dz{font-size:13px}.ea{line-height:20px}.ei{padding:0px 8px 1px}.gd{max-width:150px}.gk{font-size:16px}.gl{letter-spacing:0}.hq{margin-bottom:2px}.iu{font-size:32px}.iv{margin-top:1.01em}.iw{margin-bottom:24px}.ix{line-height:38px}.iy{letter-spacing:-0.014em}.jp{align-items:flex-start}.kk{flex-direction:column}.ky{margin:24px 0 0}.kz{padding:0}.lo> *{margin-right:8px}.lp> :last-child{margin-right:8px}.mf{margin-left:0px}.ng{margin:0}.nv{border:1px solid #F2F2F2}.nw{border-radius:99em}.nx{padding:0px 16px 0px 12px}.ny{height:38px}.nz{align-items:center}.ob svg{margin-right:8px}.oj{font-size:18px}.ok{margin-top:1.56em}.ol{line-height:28px}.om{letter-spacing:-0.003em}.pd{font-size:20px}.pe{margin-top:1.2em}.pf{line-height:24px}.pu{margin-top:0.67em}.qa{max-width:100%}.qi{margin-top:40px}.qx{margin-top:1.34em}.re{margin-top:1.23em}.tl{margin-bottom:20px}.tm{margin-right:0}.uj{font-size:24px}.uk{line-height:30px}.ul{letter-spacing:-0.016em}.us{margin:32px 0 0}.ux{padding-top:48px}.oa:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="print">.ss{display:none}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="(prefers-reduced-motion: no-preference)">.he{transition:opacity 200ms}.qo{transition:transform 300ms cubic-bezier(0.2, 0, 0.2, 1)}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="all and (max-width: 1200px)">.hf{display:none}</style><style type="text/css" data-fela-rehydration="577" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.kt{max-height:none}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="du ag dv bf ak b am an ao ap aq ar as at s u w i d q dw z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2Fae1ac8d7ceca&%7Efeature=LoOpenInAppButton&%7Echannel=ShowPostUnderCollection&source=post_page---top_nav_layout_nav-----------------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="dt"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton" href="https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&source=post_page---top_nav_layout_nav-----------------------global_nav------------------" rel="noopener follow">Sign up</a></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" href="https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&source=post_page---top_nav_layout_nav-----------------------global_nav------------------" rel="noopener follow">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ab" aria-label="Homepage" data-testid="headerMediumLogo" href="https://medium.com/?source=post_page---top_nav_layout_nav-----------------------------------------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="au av aw"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="ax h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w fg fh"><div class="fi ab"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerWriteButton" href="https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&source=---top_nav_layout_nav-----------------------new_post_topnav------------------" rel="noopener follow"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="dt l">Write</div></div></a></span></div></div><div class="k j i d"><div class="fi ab"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSearchButton" href="https://medium.com/search?source=post_page---top_nav_layout_nav-----------------------------------------" rel="noopener follow"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="fi h k j"><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton" href="https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&source=post_page---top_nav_layout_nav-----------------------global_nav------------------" rel="noopener follow">Sign up</a></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" href="https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&source=post_page---top_nav_layout_nav-----------------------global_nav------------------" rel="noopener follow">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay fn am ab q ao fo fp fq" aria-label="user options menu" data-testid="headerUserIcon"><div class="l fj"><img alt="" class="l fd by bz ca cx" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="fr by l bz ca fs n ay ft"></div></div></button></div></div></div><div class="l"><div><div class="fy bh l"><div class="fz bh ga"></div><div class="ab cb"><div class="cc cd ce cf cg gb ci bh"><div class="ac ab q"><div class="gc gd ge gf gg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.developer.adobe.com/?source=post_page---publication_nav-9342990108af-ae1ac8d7ceca---------------------------------------" rel="noopener follow"><h2 class="bf gh gi dy gj gk ea gl gm gn go gp gq gr gs gt gu bk"><div class="fu fv fw fx">Adobe Tech Blog</div></h2></a></div><div class="gv h k w fg fh cp gw"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.developer.adobe.com/?source=post_page---publication_nav-9342990108af-ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b bg z du">Home</p></a><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/newsletter?source=post_page---publication_nav-9342990108af-ae1ac8d7ceca---------------------------------------"><p class="bf b bg z du">Newsletter</p></a><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.developer.adobe.com/about?source=post_page---publication_nav-9342990108af-ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b bg z du">About</p></a></div><div class="s u j i d"><span class="gx gy" aria-hidden="true"><span class="bf b gz ha bk">·</span></span><p class="bf b gz ha bk"><span><a class="af ag ah ai aj ak al am an ao ap aq ar hb" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Fadobetech&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&collection=Adobe+Tech+Blog&collectionId=9342990108af&source=post_page---publication_nav-9342990108af-ae1ac8d7ceca---------------------publication_nav------------------" rel="noopener follow">Follow publication</a></span></p></div></div></div></div></div></div><div class="hc fs hd bh n he hf hg hh"><div class="ab cb"><div class="cc cd ce cf cg gb ci bh"><div class="hi l"><div class="hc"><div class="bm"><a href="https://blog.developer.adobe.com/?source=post_page---post_publication_sidebar-9342990108af-ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="fj"><img alt="Adobe Tech Blog" class="hj hl hk cx" src="https://miro.medium.com/v2/resize:fill:76:76/1*riyFijvwTfGcWNf1guRNtg.png" width="38" height="38" loading="lazy"/><div class="hj l hk hl fs n fr hm"></div></div></a></div><div class="hn l"></div><p class="bf b bg z du"><span class="ho">News, updates, and thoughts related to Adobe, developers, and technology.</span></p><div class="hn l"></div><p class="bf b bg z bk"><span><a class="af ag ah ai aj ak al am an ao ap aq ar hb" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Fadobetech&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&collection=Adobe+Tech+Blog&collectionId=9342990108af&source=post_page---post_publication_sidebar-9342990108af-ae1ac8d7ceca---------------------post_publication_sidebar------------------" rel="noopener follow">Follow publication</a></span></p></div></div></div></div></div><div class="hp hq hr hs ht l"><div class="ab cb"><div class="ci bh hu hv hw hx"></div></div><article><div class="l"><div class="l"><span class="l"></span><section><div><div class="fs id ie if ig hc"></div><div class="ho ih ii ij ik"><div class="ab cb"><div class="ci bh hu hv hw hx"><div><h1 id="b585" class="pw-post-title il im in bf io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn bk" data-testid="storyTitle">Edge Delivery Services for Commerce: A New Storefront Has Dropped</h1><div><div class="speechify-ignore ab cp"><div class="speechify-ignore bh l"><div class="jo jp jq jr js ab"><div><div class="ab jt"><div><div class="bm" aria-hidden="false"><a href="https://medium.com/@fnhipster?source=post_page---byline--ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="l ju jv by jw jx"><div class="l fj"><img alt="Carlos A. Cabrera" class="l fd by dd de cx" src="https://miro.medium.com/v2/da:true/resize:fill:88:88/1*lZnyeKF5mIaH9zx73aOJaQ.gif" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="jy by l dd de fs n jz ft"></div></div></div></a></div></div><div class="ka ab fj"><div><div class="bm" aria-hidden="false"><a href="https://blog.developer.adobe.com/?source=post_page---byline--ae1ac8d7ceca---------------------------------------" rel="noopener ugc nofollow"><div class="l kb kc by jw kd"><div class="l fj"><img alt="Adobe Tech Blog" class="l fd by br ke cx" src="https://miro.medium.com/v2/resize:fill:48:48/1*riyFijvwTfGcWNf1guRNtg.png" width="24" height="24" loading="lazy" data-testid="publicationPhoto"/><div class="jy by l br ke fs n jz ft"></div></div></div></a></div></div></div></div></div><div class="bn bh l"><div class="ab"><div style="flex:1"><span class="bf b bg z bk"><div class="kf ab q"><div class="ab q kg"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b gz ha bk"><a class="af ag ah ai aj ak al am an ao ap aq ar kh" data-testid="authorName" href="https://medium.com/@fnhipster?source=post_page---byline--ae1ac8d7ceca---------------------------------------" rel="noopener follow">Carlos A. Cabrera</a></p></div></div></div><span class="gx gy" aria-hidden="true"><span class="bf b bg z bk">·</span></span><p class="bf b gz ha bk"><span><a class="af ag ah ai aj ak al am an ao ap aq ar hb" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fca17853191d5&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&user=Carlos+A.+Cabrera&userId=ca17853191d5&source=post_page-ca17853191d5--byline--ae1ac8d7ceca---------------------post_header------------------" rel="noopener follow">Follow</a></span></p></div></div></span></div></div><div class="l ki"><span class="bf b bg z du"><div class="ab cn kj kk kl"><div class="hp hq ab"><div class="bf b bg z du ab km"><span class="kn l ki">Published in</span><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar kh ab q" data-testid="publicationName" href="https://blog.developer.adobe.com/?source=post_page---byline--ae1ac8d7ceca---------------------------------------" rel="noopener ugc nofollow"><p class="bf b bg z fv ko fw kp kq kr ks kt bk">Adobe Tech Blog</p></a></div></div></div><div class="h k"><span class="gx gy" aria-hidden="true"><span class="bf b bg z du">·</span></span></div></div><span class="bf b bg z du"><div class="ab ae"><span data-testid="storyReadTime">11 min read</span><div class="ku kv l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z du">·</span></span></div><span data-testid="storyPublishDate">Jan 14, 2025</span></div></span></div></span></div></div></div><div class="ab cp kw kx ky kz la lb lc ld le lf lg lh li lj lk ll"><div class="h k w fg fh q"><div class="mb l"><div class="ab q mc md"><div class="pw-multi-vote-icon fj kn me mf mg"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fadobetech%2Fae1ac8d7ceca&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&user=Carlos+A.+Cabrera&userId=ca17853191d5&source=---header_actions--ae1ac8d7ceca---------------------clap_footer------------------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="mh ao mi mj mk ml am mm mn mo mg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l mp mq mr ms mt mu mv"><p class="bf b dv z du"><span class="mw">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ao mh mx my ab q fk mz na" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="nb"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div><div class="ab q lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma"><div class="nc k j i d"></div><div class="h k"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerBookmarkButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fae1ac8d7ceca&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&source=---header_actions--ae1ac8d7ceca---------------------bookmark_footer------------------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du nd" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="fd ne cn"><div class="l ae"><div class="ab cb"><div class="nf ng nh ni nj fu ci bh"><div class="ab"><div class="bm" aria-hidden="false"><div><div class="bm" aria-hidden="false"><button aria-label="Listen" data-testid="audioPlayButton" class="af fk ah ai aj ak al nk an ao ap ex nl nm na nn no np nq nr s ns nt nu nv nw nx ny u nz oa ob"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0m9-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.376 10.416-4.599 3.066a.5.5 0 0 1-.777-.416V8.934a.5.5 0 0 1 .777-.416l4.599 3.066a.5.5 0 0 1 0 .832" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Listen</p></div></button></div></div></div></div></div></div></div></div><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="headerSocialShareButton" class="af fk ah ai aj ak al nk an ao ap ex nl nm na nn no np nq nr s ns nt nu nv nw nx ny u nz oa ob"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Share</p></div></button></div></div></div></div></div></div></div></div></div><p id="9531" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">At Adobe, we have redefined the e-commerce storefront to help merchants streamline development workflows and accelerate time-to-market through a fully composable architecture powered by <a class="af hb" href="https://www.aem.live/" rel="noopener ugc nofollow" target="_blank">Edge Delivery Services</a> and our plug-and-play micro-frontends: <a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/" rel="noopener ugc nofollow" target="_blank">Commerce Drop-in Components</a>.</p><p id="7338" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">The storefront has evolved dramatically over the past decade. From mobile-first to offline-first design to social media integrations and headless omnichannel experiences, businesses have faced challenges in efficiency, scalability, and ever-changing customer expectations. Traditional storefront solutions, often constrained by monolithic architectures rapidly becoming outdated, have faced challenges in keeping up with modern demands.</p><p id="85bf" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">Once considered cutting-edge, single-page applications (SPAs) have fallen short with high adoption costs and a fragmented developer experience of gluing different tech stacks between content management systems and commerce platforms.</p><h1 id="2536" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Hello, composable storefront</h1><p id="4ced" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Developers like me live our day-to-day saturated with buzzwords and cheesy marketing phrases. We all roll our eyes at them. I know I do. But then, one day, you find yourself writing about “composable storefront.” Granted, the term can be considered another vague, trendy term for those unfamiliar. However, it also represents a shift in how e-commerce storefronts are designed and delivered. It advocates for reusable, interchangeable building blocks to create custom solutions. Their principles are rooted in practical architectural choices like micro-frontends, API-first design, and headless commerce.</p><p id="840a" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">Adobe Commerce drop-in components are full-featured, domain-specific shopping components designed for seamless integrations through predictable APIs. They include functional user interfaces for pages such as product details, shopping carts, checkout flows, user authentication, user accounts, and more.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf qg"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*f8AlON9dCnR1p9XcfyzbyQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*f8AlON9dCnR1p9XcfyzbyQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*f8AlON9dCnR1p9XcfyzbyQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*f8AlON9dCnR1p9XcfyzbyQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*f8AlON9dCnR1p9XcfyzbyQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*f8AlON9dCnR1p9XcfyzbyQ.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*f8AlON9dCnR1p9XcfyzbyQ.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*f8AlON9dCnR1p9XcfyzbyQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*f8AlON9dCnR1p9XcfyzbyQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*f8AlON9dCnR1p9XcfyzbyQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*f8AlON9dCnR1p9XcfyzbyQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*f8AlON9dCnR1p9XcfyzbyQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*f8AlON9dCnR1p9XcfyzbyQ.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*f8AlON9dCnR1p9XcfyzbyQ.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="570" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><p id="bc2b" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">Drop-in components are released as modular JavaScript libraries via <strong class="oe io">NPM</strong> following semantic versioning to ensure compatibility and stability. They are web framework agnostic and can be integrated into any website using standard JavaScript and CSS.</p><h1 id="38a1" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Long live the content</h1><p id="4b6a" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">“Content is King”. It was true in 1996 when Bill Gates coined the term, and it’s still true today. In graphic design, content-first design prioritizes content when structuring and designing a website or application. Instead of shaping content around a pre-existing design, the design is created to support the content–you will rarely find conversion rate success in a storefront using a cookie-cutter design template selected at random. Businesses must understand their identity and build a tailored storefront that tells a story aligned with their brand and market perception. To make this possible, content must determine the technology and features, not vice versa.</p><p id="86d0" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">The <a class="af hb" href="https://www.aem.live/docs/authoring" rel="noopener ugc nofollow" target="_blank">document-based authoring of AEM with Edge Delivery Services</a> goes beyond conventional content management by putting content at the center of the development cycle. A content block-driven approach in Edge Delivery Services provides content authors with a CMS that gets out of the way by removing complexities, empowering authors to create and deliver performant and personalized web pages to their users.</p><ul class=""><li id="aa56" class="oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow qt qu qv bk">Edge Delivery Services simplifies development by using vanilla JavaScript for customizations and integrations, eliminating the need for specialized frameworks or tooling, lowering the barrier for developers to contribute, reducing dependencies, and streamlining maintenance over time.</li><li id="205b" class="oc od in oe b of qw oh oi oj qx ol om gm qy oo op gp qz or os gs ra ou ov ow qt qu qv bk">Content velocity is critical for businesses aiming to stay relevant and deliver dynamic user experiences. Document-based authoring plays nice with SharePoint and Google Drive documents, providing rapid content creation, editing, and deployment tools. Its intuitive interface allows content authors to focus on crafting engaging experiences without relying heavily on technical teams, fostering greater collaboration between marketers and developers. Additionally, content from Edge Delivery Services is <strong class="oe io">reusable across channels</strong> and can be <a class="af hb" href="https://www.aem.live/developer/spreadsheets" rel="noopener ugc nofollow" target="_blank">delivered as HTML, Markdown, or JSON files</a>.</li><li id="7b72" class="oc od in oe b of qw oh oi oj qx ol om gm qy oo op gp qz or os gs ra ou ov ow qt qu qv bk">AEM with Edge Delivery Services prioritizes performance by optimizing content delivery. It ensures faster page loads and seamless interactions, even for dynamic and personalized experiences. Its capabilities allow businesses to serve lightweight, highly optimized pages that rank better in search engines and deliver superior user experiences.</li></ul><h1 id="5a0d" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Boilerplate from zero to shoppable</h1><p id="e4d9" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">To help developers hit the ground running, we built the <a class="af hb" href="https://github.com/hlxsites/aem-boilerplate-commerce" rel="noopener ugc nofollow" target="_blank">Edge Delivery Services for Commerce Boilerplate</a>. This comprehensive template focuses on function over form. It offers a pre-integrated and functional end-to-end storefront, allowing developers to run an unopinionated, plain-by-design storefront in minutes that they can use as ground zero for your project.</p><p id="bed4" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">In e-commerce, storefronts are usually structured with core pages for the shopping experience. These pages support key actions in the shopping funnel, such as browsing products, managing the cart, and completing and following up on purchases. The Edge Delivery Services for Commerce Boilerplate is natively integrated with these core pages, where the author manages the sitemap, content, and page structure. Commerce Blocks are powered by Commerce drop-in components, enabling developers to meet their unique use cases by configuring and restructuring the composition layer as needed and even replacing specific containers with third-party or custom-built user interfaces.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf rb"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*24DlKKKj7trpP56Maefu6A.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*24DlKKKj7trpP56Maefu6A.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*24DlKKKj7trpP56Maefu6A.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*24DlKKKj7trpP56Maefu6A.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*24DlKKKj7trpP56Maefu6A.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*24DlKKKj7trpP56Maefu6A.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*24DlKKKj7trpP56Maefu6A.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*24DlKKKj7trpP56Maefu6A.png 640w, https://miro.medium.com/v2/resize:fit:720/1*24DlKKKj7trpP56Maefu6A.png 720w, https://miro.medium.com/v2/resize:fit:750/1*24DlKKKj7trpP56Maefu6A.png 750w, https://miro.medium.com/v2/resize:fit:786/1*24DlKKKj7trpP56Maefu6A.png 786w, https://miro.medium.com/v2/resize:fit:828/1*24DlKKKj7trpP56Maefu6A.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*24DlKKKj7trpP56Maefu6A.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*24DlKKKj7trpP56Maefu6A.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="246" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><p id="abd1" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">The Boilerplate is composed of the following drop-ins:</p><h2 id="8180" class="rc oy in bf oz gi rd dy gj gk re ea gl gm rf gn go gp rg gq gr gs rh gt gu ri bk"><a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/dropins/user-auth/" rel="noopener ugc nofollow" target="_blank">Auth Drop-in Component</a></h2><p id="9570" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Handles secure user authentication, including sign-ups, log-ins, password resets, and log-outs. It integrates seamlessly across the storefront to support all authentication views.</p><h2 id="0a8e" class="rc oy in bf oz gi rd dy gj gk re ea gl gm rf gn go gp rg gq gr gs rh gt gu ri bk"><a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/dropins/product-details/" rel="noopener ugc nofollow" target="_blank">PDP Drop-in Component</a></h2><p id="e0ae" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Powers the Product Details Page (PDP) by displaying comprehensive product details, such as descriptions, attributes, pricing, options, and images.</p><h2 id="d23a" class="rc oy in bf oz gi rd dy gj gk re ea gl gm rf gn go gp rg gq gr gs rh gt gu ri bk"><a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/dropins/cart/" rel="noopener ugc nofollow" target="_blank">Cart Drop-in Component</a></h2><p id="3290" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Manages cart functionality, including viewing, updating, and merging carts. It supports mini-carts, pricing, estimated shipping/taxes, and order summaries. This drop-in integrates across multiple pages, including the PDP, Cart Page, and Checkout Page.</p><h2 id="1986" class="rc oy in bf oz gi rd dy gj gk re ea gl gm rf gn go gp rg gq gr gs rh gt gu ri bk"><a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/dropins/checkout/" rel="noopener ugc nofollow" target="_blank">Checkout Drop-in Component</a></h2><p id="9556" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Streamlines the purchase process with customizable controls for billing, shipping, payment methods, and order placement, powering the Checkout Page for a smooth transaction flow.</p><h2 id="c946" class="rc oy in bf oz gi rd dy gj gk re ea gl gm rf gn go gp rg gq gr gs rh gt gu ri bk"><a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/dropins/order/" rel="noopener ugc nofollow" target="_blank">Orders Drop-in Component</a></h2><p id="4524" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Provides post-purchase functionality such as order search, shipping status tracking, customer details, and returns. It integrates with Order Confirmation, Order Detail, and Guest Order Status Pages.</p><h2 id="7e39" class="rc oy in bf oz gi rd dy gj gk re ea gl gm rf gn go gp rg gq gr gs rh gt gu ri bk"><a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/dropins/user-account/" rel="noopener ugc nofollow" target="_blank">Account Drop-in Component</a></h2><p id="4fd3" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Delivers account management capabilities, including customer details, addresses, payment methods, and order histories. It integrates with Account Pages to create a unified user profile experience.</p><p id="0788" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">The composable architecture of Edge Delivery Services combined with Commerce Drop-in Components provides developers with a solid foundation for building storefronts that scale. Whether enhancing the product pages, refining the checkout process, or delivering a custom account experience, the Boilerplate provides the essential tools to create custom experiences.</p><h1 id="d210" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Getting started</h1><p id="59a2" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">To get started with the Edge Delivery Services for Commerce Boilerplate, follow the steps in the <a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/get-started/" rel="noopener ugc nofollow" target="_blank">official documentation</a>.</p><p id="c680" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk"><em class="rj">Note: Adobe Commerce is highly customizable, with most customers using extensions. You can use the default Boilerplate’s Commerce environment as a playground. Still, to use your own Commerce instance, you must ensure all the necessary data is accessible via APIs for a headless integration. For more details about requirements, review the </em><a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/discovery/architecture/" rel="noopener ugc nofollow" target="_blank"><em class="rj">Discovery and Preparation Blueprint documentation</em></a><em class="rj">.</em></p><p id="7c88" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">Once you’ve set up the project, run <code class="cx rk rl rm rn b">npm install </code>to install all dependencies, and <code class="cx rk rl rm rn b">npm dev</code> to run your local development environment.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf ro"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*ZioT8HnzScPOi4QVxEQeyg.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*ZioT8HnzScPOi4QVxEQeyg.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*ZioT8HnzScPOi4QVxEQeyg.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*ZioT8HnzScPOi4QVxEQeyg.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*ZioT8HnzScPOi4QVxEQeyg.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*ZioT8HnzScPOi4QVxEQeyg.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*ZioT8HnzScPOi4QVxEQeyg.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*ZioT8HnzScPOi4QVxEQeyg.png 640w, https://miro.medium.com/v2/resize:fit:720/1*ZioT8HnzScPOi4QVxEQeyg.png 720w, https://miro.medium.com/v2/resize:fit:750/1*ZioT8HnzScPOi4QVxEQeyg.png 750w, https://miro.medium.com/v2/resize:fit:786/1*ZioT8HnzScPOi4QVxEQeyg.png 786w, https://miro.medium.com/v2/resize:fit:828/1*ZioT8HnzScPOi4QVxEQeyg.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*ZioT8HnzScPOi4QVxEQeyg.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*ZioT8HnzScPOi4QVxEQeyg.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="781" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><p id="6e02" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">At this point, you should see your brand-new storefront loaded on your favorite web browser. Go on, click around, explore, and buy something nice. As you have probably noticed, I wasn’t kidding when I said the Boilerplate was unopinionated and plain. It’s supposed to be underwhelming at first sight. Here is where you step in to transform this simple, unopinionated template into a brilliant storefront.</p><h1 id="6f02" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Make it your own</h1><p id="ed61" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">E-commerce sites share common characteristics but have unique identities shaped by their brand and target audience. Designing a customizable, run-time multi-tenant micro-frontend solution that is upgradable over time was a complex challenge the Adobe Commerce team had to solve.</p><p id="14ed" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">We addressed this by building the drop-in components around consistent design patterns, resulting in a predictable development experience: learn one, and you can work with them all.</p><p id="cef7" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">These conventions prioritize flexibility, scalability, and ease of customization, facilitating developers to build unique experiences without starting from scratch. By leveraging modular layouts, reusable containers, extensible slots, and streamlined data communication through the event bus, drop-in components balance standardization and the freedom to create.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf rp"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*RBgDlrue44YhjU9K56mC1Q.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*RBgDlrue44YhjU9K56mC1Q.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*RBgDlrue44YhjU9K56mC1Q.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*RBgDlrue44YhjU9K56mC1Q.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*RBgDlrue44YhjU9K56mC1Q.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*RBgDlrue44YhjU9K56mC1Q.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*RBgDlrue44YhjU9K56mC1Q.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*RBgDlrue44YhjU9K56mC1Q.png 640w, https://miro.medium.com/v2/resize:fit:720/1*RBgDlrue44YhjU9K56mC1Q.png 720w, https://miro.medium.com/v2/resize:fit:750/1*RBgDlrue44YhjU9K56mC1Q.png 750w, https://miro.medium.com/v2/resize:fit:786/1*RBgDlrue44YhjU9K56mC1Q.png 786w, https://miro.medium.com/v2/resize:fit:828/1*RBgDlrue44YhjU9K56mC1Q.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*RBgDlrue44YhjU9K56mC1Q.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*RBgDlrue44YhjU9K56mC1Q.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="268" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><h1 id="b4b3" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Look and feel</h1><p id="1dfb" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">We designed every Commerce drop-in component using a standard base design system that consists of CSS tokens for colors, typography, spacing, shape styles, and a grid system.</p><p id="4f5b" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">Developers can customize the appearance of drop-in components by overriding or extending the built-in CSS classes. The DOM follows a consistent naming convention across all drop-in components, adhering to the <a class="af hb" href="https://getbem.com/" rel="noopener ugc nofollow" target="_blank">block-element-modifier (BEM)</a> methodology to enhance clarity, ensure predictability, and reduce the likelihood of style conflicts. Shared components used across multiple drop-in components (e.g., buttons, images) use the prefix “dropin,” following the format <code class="cx rk rl rm rn b">.dropin-<component>__element — modifier</code>. On the other hand, drop-in-specific components are prefixed with the name of the drop-in component, such as <code class="cx rk rl rm rn b">.<dropin-name>-<component>__<element> — <modifier></code>. For example, the <code class="cx rk rl rm rn b">.dropin-button </code>class applies styles to all buttons across the storefront, while the <code class="cx rk rl rm rn b">.auth-sign-in-form</code> styles apply the sign-in form from the authentication drop-in component.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf rq"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*9Crm_HFiFvsYx-n0589IdQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*9Crm_HFiFvsYx-n0589IdQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*9Crm_HFiFvsYx-n0589IdQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*9Crm_HFiFvsYx-n0589IdQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*9Crm_HFiFvsYx-n0589IdQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*9Crm_HFiFvsYx-n0589IdQ.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*9Crm_HFiFvsYx-n0589IdQ.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*9Crm_HFiFvsYx-n0589IdQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*9Crm_HFiFvsYx-n0589IdQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*9Crm_HFiFvsYx-n0589IdQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*9Crm_HFiFvsYx-n0589IdQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*9Crm_HFiFvsYx-n0589IdQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*9Crm_HFiFvsYx-n0589IdQ.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*9Crm_HFiFvsYx-n0589IdQ.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="610" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><h1 id="ecca" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Restructuring layouts</h1><p id="284d" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">In Edge Delivery Services, <a class="af hb" href="https://www.aem.live/docs/authoring" rel="noopener ugc nofollow" target="_blank">authors manage pages directly from the content source</a>, including headings, images, videos, links, sections, and blocks. Blocks provide authors with pre-built, structured UI components, enabling them to design pages with sections that serve different functionalities — for example, heading blocks, hero blocks, product recommendation blocks, tiles blocks, etc.</p><p id="5098" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">We pre-integrated Commerce drop-in components into these blocks, which are readily available in the Boilerplate. For instance, in the Boilerplate environment, the PDP (Product Detail Page) is authored in <code class="cx rk rl rm rn b">products/default.docx</code> and includes the following blocks:</p><ol class=""><li id="70c1" class="oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow rr qu qv bk"><strong class="oe io">Product Details</strong></li><li id="8ea8" class="oc od in oe b of qw oh oi oj qx ol om gm qy oo op gp qz or os gs ra ou ov ow rr qu qv bk"><strong class="oe io">Content Enrichment</strong></li><li id="71e3" class="oc od in oe b of qw oh oi oj qx ol om gm qy oo op gp qz or os gs ra ou ov ow rr qu qv bk"><strong class="oe io">Product Recommendations</strong></li></ol></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf rq"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*AC458S3IbJ4RhCm8k1kVeQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*AC458S3IbJ4RhCm8k1kVeQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*AC458S3IbJ4RhCm8k1kVeQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*AC458S3IbJ4RhCm8k1kVeQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*AC458S3IbJ4RhCm8k1kVeQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*AC458S3IbJ4RhCm8k1kVeQ.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*AC458S3IbJ4RhCm8k1kVeQ.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*AC458S3IbJ4RhCm8k1kVeQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*AC458S3IbJ4RhCm8k1kVeQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*AC458S3IbJ4RhCm8k1kVeQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*AC458S3IbJ4RhCm8k1kVeQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*AC458S3IbJ4RhCm8k1kVeQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*AC458S3IbJ4RhCm8k1kVeQ.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*AC458S3IbJ4RhCm8k1kVeQ.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="610" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><p id="d648" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">In the image above, each block (represented as a table) corresponds to a folder within the <code class="cx rk rl rm rn b">./blocks/</code> directory, with folder names written in kebab-case (converting spaces and capitalization into lowercase and hyphens). For example, the “Product Details” block referenced in the table is in the <code class="cx rk rl rm rn b">./blocks/product-details/</code> <a class="af hb" href="https://github.com/hlxsites/aem-boilerplate-commerce/tree/develop/blocks/product-details" rel="noopener ugc nofollow" target="_blank">directory</a>. Each block directory contains two required files matching its name:</p><ul class=""><li id="30e1" class="oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow qt qu qv bk">A CSS file for the block’s unique styles: <code class="cx rk rl rm rn b">./blocks/product-details/product-details.css</code></li><li id="5874" class="oc od in oe b of qw oh oi oj qx ol om gm qy oo op gp qz or os gs ra ou ov ow qt qu qv bk">A JavaScript file that transforms the block’s markup into the necessary HTML structure: <code class="cx rk rl rm rn b">./blocks/product-details/product-details.js</code></li></ul><p id="dd42" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">The <strong class="oe io">Product Details</strong> block encapsulates the entire PDP layout. These layouts are fully composable, customizable, and styled based on their respective CSS and JavaScript files. If needed, developers can re-arrange and style all template sections and replace pre-built components with custom UI.</p><h1 id="ef18" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Containers</h1><p id="8097" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Drop-in components leverage Containers as modular UI views that structure sections within the layout. Each container delivers domain-specific Commerce functionality to the storefront, enabling flexible composition and customization. In the case of the PDP, there are Containers for each section of the layout, including the gallery, price, product description, configuration options, and more. This structure ensures that each section operates as an independent, composable unit while adhering to the overarching layout.</p><p id="77df" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">By breaking the layout into containers, developers can modify individual sections without affecting the design. For example, you can replace the gallery container with a custom image carousel or extend the product configuration container to include new options.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf rs"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*kijgFgcPy2_JRnFopa5u5A.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*kijgFgcPy2_JRnFopa5u5A.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*kijgFgcPy2_JRnFopa5u5A.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*kijgFgcPy2_JRnFopa5u5A.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*kijgFgcPy2_JRnFopa5u5A.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*kijgFgcPy2_JRnFopa5u5A.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*kijgFgcPy2_JRnFopa5u5A.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*kijgFgcPy2_JRnFopa5u5A.png 640w, https://miro.medium.com/v2/resize:fit:720/1*kijgFgcPy2_JRnFopa5u5A.png 720w, https://miro.medium.com/v2/resize:fit:750/1*kijgFgcPy2_JRnFopa5u5A.png 750w, https://miro.medium.com/v2/resize:fit:786/1*kijgFgcPy2_JRnFopa5u5A.png 786w, https://miro.medium.com/v2/resize:fit:828/1*kijgFgcPy2_JRnFopa5u5A.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*kijgFgcPy2_JRnFopa5u5A.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*kijgFgcPy2_JRnFopa5u5A.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="1014" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><h1 id="e487" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Customizing Containers with Slots</h1><p id="694f" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Developers can perform granular customizations to the layout using predefined <a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/dropins/all/extending/" rel="noopener ugc nofollow" target="_blank">slot extension points</a> within drop-in containers. These slots provide API methods and, in some cases, extra context data to inject custom HTML elements into specific areas of the UI without rebuilding the entire UI.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf rt"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*SGtcFoR3-U7CLgPPZUH1Xg.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*SGtcFoR3-U7CLgPPZUH1Xg.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*SGtcFoR3-U7CLgPPZUH1Xg.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*SGtcFoR3-U7CLgPPZUH1Xg.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*SGtcFoR3-U7CLgPPZUH1Xg.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*SGtcFoR3-U7CLgPPZUH1Xg.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*SGtcFoR3-U7CLgPPZUH1Xg.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*SGtcFoR3-U7CLgPPZUH1Xg.png 640w, https://miro.medium.com/v2/resize:fit:720/1*SGtcFoR3-U7CLgPPZUH1Xg.png 720w, https://miro.medium.com/v2/resize:fit:750/1*SGtcFoR3-U7CLgPPZUH1Xg.png 750w, https://miro.medium.com/v2/resize:fit:786/1*SGtcFoR3-U7CLgPPZUH1Xg.png 786w, https://miro.medium.com/v2/resize:fit:828/1*SGtcFoR3-U7CLgPPZUH1Xg.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*SGtcFoR3-U7CLgPPZUH1Xg.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*SGtcFoR3-U7CLgPPZUH1Xg.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="513" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><p id="e89d" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">For example, in the product details page (PDP) drop-in component, the <strong class="oe io">ProductOption</strong> container includes a slot named <strong class="oe io">Swatches</strong>. Developers can utilize this slot to add a “<strong class="oe io">Size Chart</strong>” link below the product size options.</p><pre class="qh qi qj qk ql ru rn rv bp rw bb bk"><span id="9cbe" class="rx oy in rn b bg ry rz l sa sb">pdpRenderer.render(ProductOptions, {<br/> slots: {<br/> Swatches(ctx) {<br/> // get slot element for "size" attribute<br/> const size = ctx.getSlotElement('product-swatch - size');<br/> // add link to Sizes<br/> if (size) {<br/> // create link<br/> const link = document.createElement('a');<br/> link.textContent = 'Size Chart';<br/> // set link href to size chart page with product SKU<br/> link.href = `/size-chart?product=${ctx.data.sku}`;<br/> // append link go size<br/> size.appendChild(link);<br/> }<br/> },<br/> },<br/>})($options);</span></pre><p id="7e43" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">In this script, the Swatches slot is accessed through its API, enabling the dynamic addition of a “Size Chart” link tailored to the product’s SKU. This approach empowers developers to enrich the user interface precisely where needed, offering additional functionality while maintaining a reusable and upgradable codebase.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf rs"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*Z5JvZ7kHW5sZa6x4B13ttg.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*Z5JvZ7kHW5sZa6x4B13ttg.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*Z5JvZ7kHW5sZa6x4B13ttg.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*Z5JvZ7kHW5sZa6x4B13ttg.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*Z5JvZ7kHW5sZa6x4B13ttg.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*Z5JvZ7kHW5sZa6x4B13ttg.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*Z5JvZ7kHW5sZa6x4B13ttg.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*Z5JvZ7kHW5sZa6x4B13ttg.png 640w, https://miro.medium.com/v2/resize:fit:720/1*Z5JvZ7kHW5sZa6x4B13ttg.png 720w, https://miro.medium.com/v2/resize:fit:750/1*Z5JvZ7kHW5sZa6x4B13ttg.png 750w, https://miro.medium.com/v2/resize:fit:786/1*Z5JvZ7kHW5sZa6x4B13ttg.png 786w, https://miro.medium.com/v2/resize:fit:828/1*Z5JvZ7kHW5sZa6x4B13ttg.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*Z5JvZ7kHW5sZa6x4B13ttg.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*Z5JvZ7kHW5sZa6x4B13ttg.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="826" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><h1 id="30ad" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">Data synchronization across drop-in components</h1><p id="a21a" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Drop-in components are micro-frontends housed in independent and interchangeable containers, but how do they communicate effectively? Creating a seamless user experience from modular components requires robust data synchronization. To ensure that all drop-in components, regardless of their specific functionality, remain synchronized with each other and the overall storefront, we created a centralized event bus that facilitates real-time communication and state management.</p><p id="34fc" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">For instance, when a user selects an option on the PDP, an event containing the updated product data is emitted to the event bus. Other containers on the PDP that are subscribed to this event are automatically updated to reflect the new information. Similarly, when the user adds the product to their cart, the cart drop-in component instantly updates by subscribing to the relevant cart data event. Drop-in components are interconnected via the event bus by design, enabling developers to subscribe to these events and leverage data changes to create custom features and enhancements.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf sc"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*WK1dcVovFpoQPNT_fwnxsQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*WK1dcVovFpoQPNT_fwnxsQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*WK1dcVovFpoQPNT_fwnxsQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*WK1dcVovFpoQPNT_fwnxsQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*WK1dcVovFpoQPNT_fwnxsQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*WK1dcVovFpoQPNT_fwnxsQ.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*WK1dcVovFpoQPNT_fwnxsQ.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*WK1dcVovFpoQPNT_fwnxsQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*WK1dcVovFpoQPNT_fwnxsQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*WK1dcVovFpoQPNT_fwnxsQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*WK1dcVovFpoQPNT_fwnxsQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*WK1dcVovFpoQPNT_fwnxsQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*WK1dcVovFpoQPNT_fwnxsQ.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*WK1dcVovFpoQPNT_fwnxsQ.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="667" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><h1 id="1d4b" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">The case for server-side rendering</h1><p id="4bd0" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">Delivering fast, accessible, high-quality content is non-negotiable in e-commerce. Although we build websites for humans, some web crawlers have limited support for client-side rendering, which can impact SEO and the discoverability of product pages.</p><p id="ae4b" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">Product Detail Pages (PDPs) in Edge Delivery Services for Commerce rely on folder-mapped pages — virtual pages created dynamically. A template page is used for all PDP paths requested, i.e., <code class="cx rk rl rm rn b">/products/*</code> Essential metadata, including the title, description, keywords, OpenGraph tags, and JSON-LD product schema, is rendered server-side to ensure optimal compatibility with social media sharing while the rest of the page loads client-side for dynamic functionality.</p><p id="b506" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">To improve SEO and deliver pages faster to users, Edge Delivery Services employs a serverless function to monitor product updates in Catalog Service. When detecting changes on a product, this function triggers the Edge Delivery Services preview API, which generates a fresh, static HTML version of the product page using the “bring-your-own-markup” render service. This system ensures that templates align with your functionality needs. This hybrid approach ensures that pages are fast, up-to-date, and optimized for users and search engines.</p></div></div><div class="py"><div class="ab cb"><div class="nf pz ng qa nh qb cf qc cg qd ci bh"><figure class="qh qi qj qk ql py qm qn paragraph-image"><div role="button" tabindex="0" class="qo qp fj qq bh qr"><div class="qe qf sd"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*7ITAVudn77Me1iw0znrV-A.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*7ITAVudn77Me1iw0znrV-A.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*7ITAVudn77Me1iw0znrV-A.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*7ITAVudn77Me1iw0znrV-A.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*7ITAVudn77Me1iw0znrV-A.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*7ITAVudn77Me1iw0znrV-A.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*7ITAVudn77Me1iw0znrV-A.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*7ITAVudn77Me1iw0znrV-A.png 640w, https://miro.medium.com/v2/resize:fit:720/1*7ITAVudn77Me1iw0znrV-A.png 720w, https://miro.medium.com/v2/resize:fit:750/1*7ITAVudn77Me1iw0znrV-A.png 750w, https://miro.medium.com/v2/resize:fit:786/1*7ITAVudn77Me1iw0znrV-A.png 786w, https://miro.medium.com/v2/resize:fit:828/1*7ITAVudn77Me1iw0znrV-A.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*7ITAVudn77Me1iw0znrV-A.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*7ITAVudn77Me1iw0znrV-A.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh fu qs c" width="1000" height="814" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh hu hv hw hx"><h1 id="79fd" class="ox oy in bf oz pa pb pc gj pd pe pf gl pg ph pi pj pk pl pm pn po pp pq pr ps bk">The storefront journey has only just begun</h1><p id="fb3d" class="pw-post-body-paragraph oc od in oe b of pt oh oi oj pu ol om gm pv oo op gp pw or os gs px ou ov ow ho bk">We have reimagined what a modern e-commerce storefront can be, and the Edge Delivery Services for Commerce Boilerplate manifests this vision. It offers developers a streamlined, composable foundation to create high-performance storefronts while addressing the inefficiencies of traditional architectures and bridging the gaps between content management and the commerce platform.</p><p id="8e22" class="pw-post-body-paragraph oc od in oe b of og oh oi oj ok ol om gm on oo op gp oq or os gs ot ou ov ow ho bk">We are just scratching the surface of what’s possible, unlocking a future where every storefront is as dynamic, scalable, and unique as the businesses it represents. <a class="af hb" href="https://experienceleague.adobe.com/developer/commerce/storefront/" rel="noopener ugc nofollow" target="_blank">Give it a try</a> and join us in rethinking the modern storefront developer experience. Have questions or want to connect with others? <a class="af hb" href="https://discordapp.com/channels/1131492224371277874/1220042081209421945" rel="noopener ugc nofollow" target="_blank">Join our Discord channel</a> and be part of the conversation.</p></div></div></div></div></section></div></div></article></div><div class="ab cb"><div class="ci bh hu hv hw hx"><div class="se sf ab kl"><div class="sg ab"><a class="sh ay am ao" href="https://medium.com/tag/adobe-commerce?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="si fj cx sj hz sk sl bf b bg z bk fx">Adobe Commerce</div></a></div><div class="sg ab"><a class="sh ay am ao" href="https://medium.com/tag/aem-developer?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="si fj cx sj hz sk sl bf b bg z bk fx">Aem Developer</div></a></div><div class="sg ab"><a class="sh ay am ao" href="https://medium.com/tag/edge-delivery-services?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="si fj cx sj hz sk sl bf b bg z bk fx">Edge Delivery Services</div></a></div><div class="sg ab"><a class="sh ay am ao" href="https://medium.com/tag/composable-commerce?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="si fj cx sj hz sk sl bf b bg z bk fx">Composable Commerce</div></a></div><div class="sg ab"><a class="sh ay am ao" href="https://medium.com/tag/adobe-experience-cloud?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="si fj cx sj hz sk sl bf b bg z bk fx">Adobe Experience Cloud</div></a></div></div></div></div><div class="l"></div><footer class="sm sn so sp sq ab q sr kd c"><div class="l ae"><div class="ab cb"><div class="ci bh hu hv hw hx"><div class="ab cp ss"><div class="ab q mc"><div class="st l"><span class="l su sv sw e d"><div class="ab q mc md"><div class="pw-multi-vote-icon fj kn me mf mg"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fadobetech%2Fae1ac8d7ceca&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&user=Carlos+A.+Cabrera&userId=ca17853191d5&source=---footer_actions--ae1ac8d7ceca---------------------clap_footer------------------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="mh ao mi mj mk ml am mm mn mo mg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l mp mq mr ms mt mu mv"><p class="bf b dv z du"><span class="mw">--</span></p></div></div></span><span class="l h g f sx sy"><div class="ab q mc md"><div class="pw-multi-vote-icon fj kn me mf mg"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fadobetech%2Fae1ac8d7ceca&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&user=Carlos+A.+Cabrera&userId=ca17853191d5&source=---footer_actions--ae1ac8d7ceca---------------------clap_footer------------------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="mh ao mi mj mk ml am mm mn mo mg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l mp mq mr ms mt mu mv"><p class="bf b dv z du"><span class="mw">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ao mh mx my ab q fk mz na" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="nb"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div></div><div class="ab q"><div class="sz l ki"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerBookmarkButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fae1ac8d7ceca&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&source=---footer_actions--ae1ac8d7ceca---------------------bookmark_footer------------------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du nd" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="sz l ki"><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="footerSocialShareButton" class="af fk ah ai aj ak al nk an ao ap ex nl nm na nn"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg></button></div></div></div></div></div></div></div></div></div></footer><div class="ta l"><div class="ab cb"><div class="ci bh hu hv hw hx"><div class="tb l"><div class="ab tc td te kk kj"><div class="tf tg th ti tj tk tl tm tn to ab cp"><div class="h k"><div class="bm"><a href="https://blog.developer.adobe.com/?source=post_page---post_publication_info--ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="fj"><img alt="Adobe Tech Blog" class="hj ju jv cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*riyFijvwTfGcWNf1guRNtg.png" width="48" height="48" loading="lazy"/><div class="hj l jv ju fs n fr hm"></div></div></a></div></div><div class="j i d"><div class="bm"><a href="https://blog.developer.adobe.com/?source=post_page---post_publication_info--ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="fj"><img alt="Adobe Tech Blog" class="hj tq tp cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*riyFijvwTfGcWNf1guRNtg.png" width="64" height="64" loading="lazy"/><div class="hj l tp tq fs n fr hm"></div></div></a></div></div><div class="j i d tr ki"><div class="ab"><span><a class="bf b bg z ts si tt tu tv tw tx ev ew ty tz ua fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Fadobetech&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&collection=Adobe+Tech+Blog&collectionId=9342990108af&source=post_page---post_publication_info--ae1ac8d7ceca---------------------follow_profile------------------" rel="noopener follow">Follow</a></span></div></div></div><div class="ab co ub"><div class="uc ud ue qa pz l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://blog.developer.adobe.com/?source=post_page---post_publication_info--ae1ac8d7ceca---------------------------------------" rel="noopener follow"><h2 class="pw-author-name bf gh ug uh ui uj uk ul gm gn go gp gq gr gs gt gu bk"><span class="ho uf">Published in <!-- -->Adobe Tech Blog</span></h2></a><div class="sg ab jt"><div class="l ki"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar kh" rel="noopener follow" href="/followers?source=post_page---post_publication_info--ae1ac8d7ceca---------------------------------------">7.8K Followers</a></span></div><div class="bf b bg z du ab km"><span class="gx l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar kh" rel="noopener follow" href="/how-to-market-and-monetize-adobe-express-add-ons-a510e71c2c92?source=post_page---post_publication_info--ae1ac8d7ceca---------------------------------------">Last published <span>Feb 7, 2025</span></a></div></div><div class="hn l"><p class="bf b bg z bk"><span class="ho">News, updates, and thoughts related to Adobe, developers, and technology.</span></p></div></div></div><div class="h k"><div class="ab"><span><a class="bf b bg z ts si tt tu tv tw tx ev ew ty tz ua fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Fadobetech&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&collection=Adobe+Tech+Blog&collectionId=9342990108af&source=post_page---post_publication_info--ae1ac8d7ceca---------------------follow_profile------------------" rel="noopener follow">Follow</a></span></div></div></div></div><div class="ab tc td te kk kj"><div class="tf tg th ti tj tk tl tm tn to ab cp"><div class="h k"><a tabindex="0" href="https://medium.com/@fnhipster?source=post_page---post_author_info--ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="l fj"><img alt="Carlos A. Cabrera" class="l fd by jv ju cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*lZnyeKF5mIaH9zx73aOJaQ.gif" width="48" height="48" loading="lazy"/><div class="fr by l jv ju fs n ay hm"></div></div></a></div><div class="j i d"><a tabindex="0" href="https://medium.com/@fnhipster?source=post_page---post_author_info--ae1ac8d7ceca---------------------------------------" rel="noopener follow"><div class="l fj"><img alt="Carlos A. Cabrera" class="l fd by tp tq cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*lZnyeKF5mIaH9zx73aOJaQ.gif" width="64" height="64" loading="lazy"/><div class="fr by l tp tq fs n ay hm"></div></div></a></div><div class="j i d tr ki"><div class="ab"><span><a class="bf b bg z ts si tt tu tv tw tx ev ew ty tz ua fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fca17853191d5&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&user=Carlos+A.+Cabrera&userId=ca17853191d5&source=post_page-ca17853191d5--post_author_info--ae1ac8d7ceca---------------------follow_profile------------------" rel="noopener follow">Follow</a></span></div></div></div><div class="ab co ub"><div class="uc ud ue qa pz l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://medium.com/@fnhipster?source=post_page---post_author_info--ae1ac8d7ceca---------------------------------------" rel="noopener follow"><h2 class="pw-author-name bf gh ug uh ui uj uk ul gm gn go gp gq gr gs gt gu bk"><span class="ho uf">Written by <!-- -->Carlos A. Cabrera</span></h2></a><div class="sg ab jt"><div class="l ki"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar kh" href="https://medium.com/@fnhipster/followers?source=post_page---post_author_info--ae1ac8d7ceca---------------------------------------" rel="noopener follow">10 Followers</a></span></div><div class="bf b bg z du ab km"><span class="gx l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar kh" href="https://medium.com/@fnhipster/following?source=post_page---post_author_info--ae1ac8d7ceca---------------------------------------" rel="noopener follow">3 Following</a></div></div><div class="hn l"><p class="bf b bg z bk"><a class="af ag ah ai aj ak al am an ao ap aq ar hb ih" href="https://fnhipster.com" rel="noopener ugc nofollow">https://fnhipster.com</a></p></div></div></div><div class="h k"><div class="ab"><span><a class="bf b bg z ts si tt tu tv tw tx ev ew ty tz ua fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fca17853191d5&operation=register&redirect=https%3A%2F%2Fblog.developer.adobe.com%2Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca&user=Carlos+A.+Cabrera&userId=ca17853191d5&source=post_page-ca17853191d5--post_author_info--ae1ac8d7ceca---------------------follow_profile------------------" rel="noopener follow">Follow</a></span></div></div></div></div></div></div><div class="um l"><div class="un bh r ta"></div><div class="ab cb"><div class="ci bh hu hv hw hx"><div class="ab q cp"><h2 class="bf gh pa pc gj pd pf gl pg pi pj pk pm pn po pq pr bk">No responses yet</h2><div class="ab uo"><div><div class="bm" aria-hidden="false"><a class="up uq" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--ae1ac8d7ceca---------------------------------------" rel="noopener follow" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"><path fill-rule="evenodd" d="M11.987 5.036a.754.754 0 0 1 .914-.01c.972.721 1.767 1.218 2.6 1.543.828.322 1.719.485 2.887.505a.755.755 0 0 1 .741.757c-.018 3.623-.43 6.256-1.449 8.21-1.034 1.984-2.662 3.209-4.966 4.083a.75.75 0 0 1-.537-.003c-2.243-.874-3.858-2.095-4.897-4.074-1.024-1.951-1.457-4.583-1.476-8.216a.755.755 0 0 1 .741-.757c1.195-.02 2.1-.182 2.923-.503.827-.322 1.6-.815 2.519-1.535m.468.903c-.897.69-1.717 1.21-2.623 1.564-.898.35-1.856.527-3.026.565.037 3.45.469 5.817 1.36 7.515.884 1.684 2.25 2.762 4.284 3.571 2.092-.81 3.465-1.89 4.344-3.575.886-1.698 1.299-4.065 1.334-7.512-1.149-.039-2.091-.217-2.99-.567-.906-.353-1.745-.873-2.683-1.561m-.009 9.155a2.672 2.672 0 1 0 0-5.344 2.672 2.672 0 0 0 0 5.344m0 1a3.672 3.672 0 1 0 0-7.344 3.672 3.672 0 0 0 0 7.344m-1.813-3.777.525-.526.916.917 1.623-1.625.526.526-2.149 2.152z" clip-rule="evenodd"></path></svg></a></div></div></div></div><div class="ur us ut uu uv l"></div></div></div></div><div class="uw ux uy uz va l bx"><div class="h k j"><div class="un bh vb vc"></div><div class="ab cb"><div class="ci bh hu hv hw hx"><div class="vd ab mc kl"><div class="ve vf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://help.medium.com/hc/en-us?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="ve vf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.statuspage.io/?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="ve vf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/about?autoplay=1&source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b dv z du">About</p></a></div><div class="ve vf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Careers</p></a></div><div class="ve vf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="mailto:pressinquiries@medium.com" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="ve vf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.medium.com/?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="ve vf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="ve vf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="ve vf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://speechify.com/medium?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="ve l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/business?source=post_page-----ae1ac8d7ceca---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Teams</p></a></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20250314-225528-a231c18eac"</script><script>window.__GRAPHQL_URI__ = "https://blog.developer.adobe.com/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"This request is not using the cache middleware worker","group":"disabled","tags":["group-edgeCachePosts","post-ae1ac8d7ceca","user-ca17853191d5","collection-9342990108af"],"serverVariantState":"","middlewareEnabled":false,"cacheStatus":"DYNAMIC","shouldUseCache":false,"vary":[],"pubFeaturingPostPageLabelEnabled":false,"shouldFollowPostQueryEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":false,"routingEntity":{"type":"COLLECTION","id":"9342990108af","explicit":true},"viewerIsBot":false},"debug":{"requestId":"d7bd87dc-e400-49e1-ae4a-665168cead50","requestTag":"","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-e10031594a65562e582a0bf5c8bb99fa-3831da5d0a3b818b-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fblog.developer.adobe.com\u002Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca","host":"blog.developer.adobe.com","hostname":"blog.developer.adobe.com","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null},"queryString":"?source=collection_home---7------3-----------------------"},"config":{"nodeEnv":"production","version":"main-20250314-225528-a231c18eac","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20250314-225528-a231c18eac","commit":"a231c18eaccbfcbc623e6b02240a50aa5b1080f4"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","variantFlags":[{"__typename":"VariantFlag","name":"enable_new_manage_membership_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses_input","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_simplified_digest_v2_b","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_trial_membership","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_user_follows","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_topic_portals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sharer_validate_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"num_post_bottom_responses_to_show","valueType":{"__typename":"VariantFlagString","value":"3"}},{"__typename":"VariantFlag","name":"enable_author_cards","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_all_recs_surfaces","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_starspace","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members_username_selection","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_automod","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_avatar_upload","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tribute_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"get_highlights_from_engagement","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_verified_book_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_susi_redesign_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_entities_to_follow_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rito_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_update_explore_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_home_post_menu","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_cancellation_discount_v1_1","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pub_featuring_notifications","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"glyph_font_set","valueType":{"__typename":"VariantFlagString","value":"m2-unbound-source-serif-pro"}},{"__typename":"VariantFlag","name":"ios_remove_twitter_onboarding_step","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"textshots_userid","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"android_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_abandoned_cart_promotion_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_apple_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_updated_pub_recs_ui","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"can_send_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sprig","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_iceland_forced_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"onboarding_tags_from_top_views","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_access","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_footer_app_buttons","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_intrinsic_automatic_actions","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ranker_v10","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_maim_the_meter","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_see_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_programming","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_eventstats_event_processing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_archive_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_post_referrers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_apple_sign_in","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_c","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_branch_io","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_deviant_get_variant_flag_from_medium2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_susi_redesign_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"disable_partner_program_enrollment","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pill_based_home_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_group_gifting","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"skip_fs_cache_user_vals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_publish_permission_check","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_seamless_social_sharing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tipping_v0_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_yearly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"rex_generator_max_candidates","valueType":{"__typename":"VariantFlagNumber","value":1000}},{"__typename":"VariantFlag","name":"enable_tag_recs","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recaptcha_enterprise","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_homepage_featured_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_boost_experiment","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_legacy_feed_in_iceland","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_newsletter_lo_flow_custom_domains","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pub_featuring","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"mobile_custom_app_icon","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_programming_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_aggregator_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_configure_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_country_expansion","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_update_topic_portals_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"signup_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"enable_lite_server_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_winback_promotion_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_google_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pub_featuring_stats","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sharer_create_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_display_paywall_after_onboarding","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_abandoned_paywall_email_experiment","valueType":{"__typename":"VariantFlagString","value":"experiment"}},{"__typename":"VariantFlag","name":"available_annual_plan","valueType":{"__typename":"VariantFlagString","value":"2c754bcc2995"}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_first_story","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pre_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_boost_nia_v01","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_verified_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_aurora_pub_follower_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_conversion_model_v2","valueType":{"__typename":"VariantFlagString","value":"group_2"}},{"__typename":"VariantFlag","name":"android_dense_post_preview","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"android_rating_prompt_stories_read_threshold","valueType":{"__typename":"VariantFlagNumber","value":2}},{"__typename":"VariantFlag","name":"disable_rex_pub_featuring_recirc","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_google_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_google_one_tap","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_reading_history","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_signup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_editor_new_publishing_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_verifications_service","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"signin_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"enable_lite_response_markup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_miro_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_cancellation_discount_v1_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recirc_model","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_medium2_kbfd","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_trust_service_recaptcha","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_iceland_nux","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_import","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_homepage","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lo_homepage","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_tick_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tipping_v0_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_custom_moc_preview_for_google_referrer","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_hybrid_ranking_model","valueType":{"__typename":"VariantFlagString","value":"experiment"}},{"__typename":"VariantFlag","name":"available_annual_premium_plan","valueType":{"__typename":"VariantFlagString","value":"4a442ace1476"}},{"__typename":"VariantFlag","name":"enable_pub_featuring_post_page_label","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_in_app_free_trial","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_engagement_service_publish_response","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"goliath_externalsearch_enable_comment_deindexation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_test_auth","valueType":{"__typename":"VariantFlagString","value":"disallow"}},{"__typename":"VariantFlag","name":"enable_lite_continue_this_thread","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_social_share_sheet","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_widget","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_bg_post_post","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_inline_comments","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_medium_com_canonical_urls","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_new_push_notification_endpoint","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"coronavirus_topic_recirc","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_cache_less_following_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"reengagement_notification_duration","valueType":{"__typename":"VariantFlagNumber","value":3}},{"__typename":"VariantFlag","name":"enable_braintree_integration","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_autorefresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ml_rank_rex_anno","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"reader_fair_distribution_non_qp","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_syntax_highlight","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"browsable_stream_config_bucket","valueType":{"__typename":"VariantFlagString","value":"curated-topics"}},{"__typename":"VariantFlag","name":"enable_publication_hierarchy_v2_web_multivariate","valueType":{"__typename":"VariantFlagString","value":"publication_hierarchy"}},{"__typename":"VariantFlag","name":"android_enable_image_sharer","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_two_hour_refresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_easy_resubscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_lock_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_paypal","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_new_stripe_customers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recommended_publishers_query","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_aspirational_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_marketing_emails","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_monthly_plan","valueType":{"__typename":"VariantFlagString","value":"60e220181034"}},{"__typename":"VariantFlag","name":"enable_creator_welcome_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_members_only_audio","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_apple_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_author_cards_byline","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_conversion_ranker_v2","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_auto_follow_on_subscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_aspiriational","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses_native","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_monthly_premium_plan","valueType":{"__typename":"VariantFlagString","value":"12a660186432"}},{"__typename":"VariantFlag","name":"can_receive_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_switch_plan_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"redefined_top_posts","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_deprecate_legacy_providers_v3","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_diversification_rex","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_monthly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"enable_braintree_client","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_premium_tier_badge","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_lists_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_abandoned_paywall_promotion_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_app_flirty_thirty","valueType":{"__typename":"VariantFlagBoolean","value":true}}],"viewer":null,"collectionByDomainOrSlug({\"domainOrSlug\":\"blog.developer.adobe.com\"})":{"__ref":"Collection:9342990108af"},"postResult({\"id\":\"ae1ac8d7ceca\"})":{"__ref":"Post:ae1ac8d7ceca"}},"ImageMetadata:1*y6TtdKlSFBCCH2t385XObA.png":{"__typename":"ImageMetadata","id":"1*y6TtdKlSFBCCH2t385XObA.png"},"Collection:9342990108af":{"__typename":"Collection","id":"9342990108af","favicon":{"__ref":"ImageMetadata:1*y6TtdKlSFBCCH2t385XObA.png"},"customStyleSheet":null,"colorPalette":{"__typename":"ColorPalette","highlightSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FFF5F2F1","point":0},{"__typename":"ColorPoint","color":"#FFF3F0EF","point":0.1},{"__typename":"ColorPoint","color":"#FFF1EEEE","point":0.2},{"__typename":"ColorPoint","color":"#FFEFECEC","point":0.3},{"__typename":"ColorPoint","color":"#FFEDEAEA","point":0.4},{"__typename":"ColorPoint","color":"#FFEBE8E8","point":0.5},{"__typename":"ColorPoint","color":"#FFE9E7E6","point":0.6},{"__typename":"ColorPoint","color":"#FFE7E5E4","point":0.7},{"__typename":"ColorPoint","color":"#FFE5E3E2","point":0.8},{"__typename":"ColorPoint","color":"#FFE3E1E0","point":0.9},{"__typename":"ColorPoint","color":"#FFE1DFDF","point":1}]},"defaultBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FF858484","point":0},{"__typename":"ColorPoint","color":"#FF7C7B7B","point":0.1},{"__typename":"ColorPoint","color":"#FF727271","point":0.2},{"__typename":"ColorPoint","color":"#FF696868","point":0.3},{"__typename":"ColorPoint","color":"#FF5F5E5E","point":0.4},{"__typename":"ColorPoint","color":"#FF555454","point":0.5},{"__typename":"ColorPoint","color":"#FF4A4949","point":0.6},{"__typename":"ColorPoint","color":"#FF3F3E3E","point":0.7},{"__typename":"ColorPoint","color":"#FF343333","point":0.8},{"__typename":"ColorPoint","color":"#FF272727","point":0.9},{"__typename":"ColorPoint","color":"#FF1A1A1A","point":1}]},"tintBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FF2C2C2C","colorPoints":[{"__typename":"ColorPoint","color":"#FF2C2C2C","point":0},{"__typename":"ColorPoint","color":"#FF474747","point":0.1},{"__typename":"ColorPoint","color":"#FF605F5F","point":0.2},{"__typename":"ColorPoint","color":"#FF777675","point":0.3},{"__typename":"ColorPoint","color":"#FF8C8B8B","point":0.4},{"__typename":"ColorPoint","color":"#FFA1A09F","point":0.5},{"__typename":"ColorPoint","color":"#FFB5B4B3","point":0.6},{"__typename":"ColorPoint","color":"#FFC9C7C7","point":0.7},{"__typename":"ColorPoint","color":"#FFDCDAD9","point":0.8},{"__typename":"ColorPoint","color":"#FFEFECEC","point":0.9},{"__typename":"ColorPoint","color":"#FFFFFEFE","point":1}]}},"domain":"blog.developer.adobe.com","slug":"adobetech","googleAnalyticsId":null,"name":"Adobe Tech Blog","avatar":{"__ref":"ImageMetadata:1*riyFijvwTfGcWNf1guRNtg.png"},"description":"News, updates, and thoughts related to Adobe, developers, and technology.","subscriberCount":7850,"latestPostsConnection({\"paging\":{\"limit\":1}})":{"__typename":"PostConnection","posts":[{"__ref":"Post:a510e71c2c92"}]},"isAuroraVisible":false,"tintColor":"#FF2C2C2C","newsletterV3":{"__ref":"NewsletterV3:9bfd5e345380"},"viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:9342990108af-viewerId:lo_fa8f4b0341c5"},"twitterUsername":"adobedevs","facebookPageId":null,"logo":{"__ref":"ImageMetadata:"}},"ImageMetadata:1*riyFijvwTfGcWNf1guRNtg.png":{"__typename":"ImageMetadata","id":"1*riyFijvwTfGcWNf1guRNtg.png"},"User:6ade52b64fb3":{"__typename":"User","id":"6ade52b64fb3","customDomainState":null,"hasSubdomain":false,"username":"plugisto"},"Post:a510e71c2c92":{"__typename":"Post","id":"a510e71c2c92","firstPublishedAt":1738950374092,"creator":{"__ref":"User:6ade52b64fb3"},"collection":{"__ref":"Collection:9342990108af"},"isSeries":false,"mediumUrl":"https:\u002F\u002Fblog.developer.adobe.com\u002Fhow-to-market-and-monetize-adobe-express-add-ons-a510e71c2c92","sequence":null,"uniqueSlug":"how-to-market-and-monetize-adobe-express-add-ons-a510e71c2c92"},"NewsletterV3:9bfd5e345380":{"__typename":"NewsletterV3","id":"9bfd5e345380"},"LinkedAccounts:ca17853191d5":{"__typename":"LinkedAccounts","mastodon":null,"id":"ca17853191d5"},"User:ca17853191d5":{"__typename":"User","id":"ca17853191d5","linkedAccounts":{"__ref":"LinkedAccounts:ca17853191d5"},"isSuspended":false,"name":"Carlos A. Cabrera","imageId":"1*lZnyeKF5mIaH9zx73aOJaQ.gif","customDomainState":null,"hasSubdomain":false,"username":"fnhipster","verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":10,"followingCount":2,"collectionFollowingCount":1},"bio":"https:\u002F\u002Ffnhipster.com","membership":null,"allowNotes":true,"viewerEdge":{"__ref":"UserViewerEdge:userId:ca17853191d5-viewerId:lo_fa8f4b0341c5"},"twitterScreenName":""},"Paragraph:8e25d5c2b334_0":{"__typename":"Paragraph","id":"8e25d5c2b334_0","name":"b585","type":"H3","href":null,"layout":null,"metadata":null,"text":"Edge Delivery Services for Commerce: A New Storefront Has Dropped","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_1":{"__typename":"Paragraph","id":"8e25d5c2b334_1","name":"9531","type":"P","href":null,"layout":null,"metadata":null,"text":"At Adobe, we have redefined the e-commerce storefront to help merchants streamline development workflows and accelerate time-to-market through a fully composable architecture powered by Edge Delivery Services and our plug-and-play micro-frontends: Commerce Drop-in Components.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":186,"end":208,"href":"https:\u002F\u002Fwww.aem.live\u002F","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":248,"end":275,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_2":{"__typename":"Paragraph","id":"8e25d5c2b334_2","name":"7338","type":"P","href":null,"layout":null,"metadata":null,"text":"The storefront has evolved dramatically over the past decade. From mobile-first to offline-first design to social media integrations and headless omnichannel experiences, businesses have faced challenges in efficiency, scalability, and ever-changing customer expectations. Traditional storefront solutions, often constrained by monolithic architectures rapidly becoming outdated, have faced challenges in keeping up with modern demands.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_3":{"__typename":"Paragraph","id":"8e25d5c2b334_3","name":"85bf","type":"P","href":null,"layout":null,"metadata":null,"text":"Once considered cutting-edge, single-page applications (SPAs) have fallen short with high adoption costs and a fragmented developer experience of gluing different tech stacks between content management systems and commerce platforms.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_4":{"__typename":"Paragraph","id":"8e25d5c2b334_4","name":"2536","type":"H3","href":null,"layout":null,"metadata":null,"text":"Hello, composable storefront","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_5":{"__typename":"Paragraph","id":"8e25d5c2b334_5","name":"4ced","type":"P","href":null,"layout":null,"metadata":null,"text":"Developers like me live our day-to-day saturated with buzzwords and cheesy marketing phrases. We all roll our eyes at them. I know I do. But then, one day, you find yourself writing about “composable storefront.” Granted, the term can be considered another vague, trendy term for those unfamiliar. However, it also represents a shift in how e-commerce storefronts are designed and delivered. It advocates for reusable, interchangeable building blocks to create custom solutions. Their principles are rooted in practical architectural choices like micro-frontends, API-first design, and headless commerce.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_6":{"__typename":"Paragraph","id":"8e25d5c2b334_6","name":"840a","type":"P","href":null,"layout":null,"metadata":null,"text":"Adobe Commerce drop-in components are full-featured, domain-specific shopping components designed for seamless integrations through predictable APIs. They include functional user interfaces for pages such as product details, shopping carts, checkout flows, user authentication, user accounts, and more.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*f8AlON9dCnR1p9XcfyzbyQ.png":{"__typename":"ImageMetadata","id":"1*f8AlON9dCnR1p9XcfyzbyQ.png","originalHeight":1539,"originalWidth":2700,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_7":{"__typename":"Paragraph","id":"8e25d5c2b334_7","name":"57bb","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*f8AlON9dCnR1p9XcfyzbyQ.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_8":{"__typename":"Paragraph","id":"8e25d5c2b334_8","name":"bc2b","type":"P","href":null,"layout":null,"metadata":null,"text":"Drop-in components are released as modular JavaScript libraries via NPM following semantic versioning to ensure compatibility and stability. They are web framework agnostic and can be integrated into any website using standard JavaScript and CSS.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":68,"end":71,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_9":{"__typename":"Paragraph","id":"8e25d5c2b334_9","name":"38a1","type":"H3","href":null,"layout":null,"metadata":null,"text":"Long live the content","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_10":{"__typename":"Paragraph","id":"8e25d5c2b334_10","name":"4b6a","type":"P","href":null,"layout":null,"metadata":null,"text":"“Content is King”. It was true in 1996 when Bill Gates coined the term, and it’s still true today. In graphic design, content-first design prioritizes content when structuring and designing a website or application. Instead of shaping content around a pre-existing design, the design is created to support the content–you will rarely find conversion rate success in a storefront using a cookie-cutter design template selected at random. Businesses must understand their identity and build a tailored storefront that tells a story aligned with their brand and market perception. To make this possible, content must determine the technology and features, not vice versa.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_11":{"__typename":"Paragraph","id":"8e25d5c2b334_11","name":"86d0","type":"P","href":null,"layout":null,"metadata":null,"text":"The document-based authoring of AEM with Edge Delivery Services goes beyond conventional content management by putting content at the center of the development cycle. A content block-driven approach in Edge Delivery Services provides content authors with a CMS that gets out of the way by removing complexities, empowering authors to create and deliver performant and personalized web pages to their users.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":4,"end":63,"href":"https:\u002F\u002Fwww.aem.live\u002Fdocs\u002Fauthoring","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_12":{"__typename":"Paragraph","id":"8e25d5c2b334_12","name":"aa56","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Edge Delivery Services simplifies development by using vanilla JavaScript for customizations and integrations, eliminating the need for specialized frameworks or tooling, lowering the barrier for developers to contribute, reducing dependencies, and streamlining maintenance over time.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_13":{"__typename":"Paragraph","id":"8e25d5c2b334_13","name":"205b","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Content velocity is critical for businesses aiming to stay relevant and deliver dynamic user experiences. Document-based authoring plays nice with SharePoint and Google Drive documents, providing rapid content creation, editing, and deployment tools. Its intuitive interface allows content authors to focus on crafting engaging experiences without relying heavily on technical teams, fostering greater collaboration between marketers and developers. Additionally, content from Edge Delivery Services is reusable across channels and can be delivered as HTML, Markdown, or JSON files.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":539,"end":581,"href":"https:\u002F\u002Fwww.aem.live\u002Fdeveloper\u002Fspreadsheets","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":503,"end":527,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_14":{"__typename":"Paragraph","id":"8e25d5c2b334_14","name":"7b72","type":"ULI","href":null,"layout":null,"metadata":null,"text":"AEM with Edge Delivery Services prioritizes performance by optimizing content delivery. It ensures faster page loads and seamless interactions, even for dynamic and personalized experiences. Its capabilities allow businesses to serve lightweight, highly optimized pages that rank better in search engines and deliver superior user experiences.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_15":{"__typename":"Paragraph","id":"8e25d5c2b334_15","name":"5a0d","type":"H3","href":null,"layout":null,"metadata":null,"text":"Boilerplate from zero to shoppable","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_16":{"__typename":"Paragraph","id":"8e25d5c2b334_16","name":"e4d9","type":"P","href":null,"layout":null,"metadata":null,"text":"To help developers hit the ground running, we built the Edge Delivery Services for Commerce Boilerplate. This comprehensive template focuses on function over form. It offers a pre-integrated and functional end-to-end storefront, allowing developers to run an unopinionated, plain-by-design storefront in minutes that they can use as ground zero for your project.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":56,"end":103,"href":"https:\u002F\u002Fgithub.com\u002Fhlxsites\u002Faem-boilerplate-commerce","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_17":{"__typename":"Paragraph","id":"8e25d5c2b334_17","name":"bed4","type":"P","href":null,"layout":null,"metadata":null,"text":"In e-commerce, storefronts are usually structured with core pages for the shopping experience. These pages support key actions in the shopping funnel, such as browsing products, managing the cart, and completing and following up on purchases. The Edge Delivery Services for Commerce Boilerplate is natively integrated with these core pages, where the author manages the sitemap, content, and page structure. Commerce Blocks are powered by Commerce drop-in components, enabling developers to meet their unique use cases by configuring and restructuring the composition layer as needed and even replacing specific containers with third-party or custom-built user interfaces.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*24DlKKKj7trpP56Maefu6A.png":{"__typename":"ImageMetadata","id":"1*24DlKKKj7trpP56Maefu6A.png","originalHeight":1783,"originalWidth":7258,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_18":{"__typename":"Paragraph","id":"8e25d5c2b334_18","name":"da98","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*24DlKKKj7trpP56Maefu6A.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_19":{"__typename":"Paragraph","id":"8e25d5c2b334_19","name":"abd1","type":"P","href":null,"layout":null,"metadata":null,"text":"The Boilerplate is composed of the following drop-ins:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_20":{"__typename":"Paragraph","id":"8e25d5c2b334_20","name":"8180","type":"H4","href":null,"layout":null,"metadata":null,"text":"Auth Drop-in Component","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":22,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002Fdropins\u002Fuser-auth\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_21":{"__typename":"Paragraph","id":"8e25d5c2b334_21","name":"9570","type":"P","href":null,"layout":null,"metadata":null,"text":"Handles secure user authentication, including sign-ups, log-ins, password resets, and log-outs. It integrates seamlessly across the storefront to support all authentication views.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_22":{"__typename":"Paragraph","id":"8e25d5c2b334_22","name":"0a8e","type":"H4","href":null,"layout":null,"metadata":null,"text":"PDP Drop-in Component","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":21,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002Fdropins\u002Fproduct-details\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_23":{"__typename":"Paragraph","id":"8e25d5c2b334_23","name":"e0ae","type":"P","href":null,"layout":null,"metadata":null,"text":"Powers the Product Details Page (PDP) by displaying comprehensive product details, such as descriptions, attributes, pricing, options, and images.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_24":{"__typename":"Paragraph","id":"8e25d5c2b334_24","name":"d23a","type":"H4","href":null,"layout":null,"metadata":null,"text":"Cart Drop-in Component","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":22,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002Fdropins\u002Fcart\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_25":{"__typename":"Paragraph","id":"8e25d5c2b334_25","name":"3290","type":"P","href":null,"layout":null,"metadata":null,"text":"Manages cart functionality, including viewing, updating, and merging carts. It supports mini-carts, pricing, estimated shipping\u002Ftaxes, and order summaries. This drop-in integrates across multiple pages, including the PDP, Cart Page, and Checkout Page.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_26":{"__typename":"Paragraph","id":"8e25d5c2b334_26","name":"1986","type":"H4","href":null,"layout":null,"metadata":null,"text":"Checkout Drop-in Component","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":26,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002Fdropins\u002Fcheckout\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_27":{"__typename":"Paragraph","id":"8e25d5c2b334_27","name":"9556","type":"P","href":null,"layout":null,"metadata":null,"text":"Streamlines the purchase process with customizable controls for billing, shipping, payment methods, and order placement, powering the Checkout Page for a smooth transaction flow.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_28":{"__typename":"Paragraph","id":"8e25d5c2b334_28","name":"c946","type":"H4","href":null,"layout":null,"metadata":null,"text":"Orders Drop-in Component","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":24,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002Fdropins\u002Forder\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_29":{"__typename":"Paragraph","id":"8e25d5c2b334_29","name":"4524","type":"P","href":null,"layout":null,"metadata":null,"text":"Provides post-purchase functionality such as order search, shipping status tracking, customer details, and returns. It integrates with Order Confirmation, Order Detail, and Guest Order Status Pages.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_30":{"__typename":"Paragraph","id":"8e25d5c2b334_30","name":"7e39","type":"H4","href":null,"layout":null,"metadata":null,"text":"Account Drop-in Component","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":25,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002Fdropins\u002Fuser-account\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_31":{"__typename":"Paragraph","id":"8e25d5c2b334_31","name":"4fd3","type":"P","href":null,"layout":null,"metadata":null,"text":"Delivers account management capabilities, including customer details, addresses, payment methods, and order histories. It integrates with Account Pages to create a unified user profile experience.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_32":{"__typename":"Paragraph","id":"8e25d5c2b334_32","name":"0788","type":"P","href":null,"layout":null,"metadata":null,"text":"The composable architecture of Edge Delivery Services combined with Commerce Drop-in Components provides developers with a solid foundation for building storefronts that scale. Whether enhancing the product pages, refining the checkout process, or delivering a custom account experience, the Boilerplate provides the essential tools to create custom experiences.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_33":{"__typename":"Paragraph","id":"8e25d5c2b334_33","name":"d210","type":"H3","href":null,"layout":null,"metadata":null,"text":"Getting started","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_34":{"__typename":"Paragraph","id":"8e25d5c2b334_34","name":"59a2","type":"P","href":null,"layout":null,"metadata":null,"text":"To get started with the Edge Delivery Services for Commerce Boilerplate, follow the steps in the official documentation.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":97,"end":119,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002Fget-started\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_35":{"__typename":"Paragraph","id":"8e25d5c2b334_35","name":"c680","type":"P","href":null,"layout":null,"metadata":null,"text":"Note: Adobe Commerce is highly customizable, with most customers using extensions. You can use the default Boilerplate’s Commerce environment as a playground. Still, to use your own Commerce instance, you must ensure all the necessary data is accessible via APIs for a headless integration. For more details about requirements, review the Discovery and Preparation Blueprint documentation.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":339,"end":388,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002Fdiscovery\u002Farchitecture\u002F","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":389,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_36":{"__typename":"Paragraph","id":"8e25d5c2b334_36","name":"7c88","type":"P","href":null,"layout":null,"metadata":null,"text":"Once you’ve set up the project, run npm install to install all dependencies, and npm dev to run your local development environment.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":36,"end":48,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":81,"end":88,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*ZioT8HnzScPOi4QVxEQeyg.png":{"__typename":"ImageMetadata","id":"1*ZioT8HnzScPOi4QVxEQeyg.png","originalHeight":1121,"originalWidth":1436,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_37":{"__typename":"Paragraph","id":"8e25d5c2b334_37","name":"a6ce","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*ZioT8HnzScPOi4QVxEQeyg.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_38":{"__typename":"Paragraph","id":"8e25d5c2b334_38","name":"6e02","type":"P","href":null,"layout":null,"metadata":null,"text":"At this point, you should see your brand-new storefront loaded on your favorite web browser. Go on, click around, explore, and buy something nice. As you have probably noticed, I wasn’t kidding when I said the Boilerplate was unopinionated and plain. It’s supposed to be underwhelming at first sight. Here is where you step in to transform this simple, unopinionated template into a brilliant storefront.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_39":{"__typename":"Paragraph","id":"8e25d5c2b334_39","name":"6f02","type":"H3","href":null,"layout":null,"metadata":null,"text":"Make it your own","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_40":{"__typename":"Paragraph","id":"8e25d5c2b334_40","name":"ed61","type":"P","href":null,"layout":null,"metadata":null,"text":"E-commerce sites share common characteristics but have unique identities shaped by their brand and target audience. Designing a customizable, run-time multi-tenant micro-frontend solution that is upgradable over time was a complex challenge the Adobe Commerce team had to solve.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_41":{"__typename":"Paragraph","id":"8e25d5c2b334_41","name":"14ed","type":"P","href":null,"layout":null,"metadata":null,"text":"We addressed this by building the drop-in components around consistent design patterns, resulting in a predictable development experience: learn one, and you can work with them all.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_42":{"__typename":"Paragraph","id":"8e25d5c2b334_42","name":"cef7","type":"P","href":null,"layout":null,"metadata":null,"text":"These conventions prioritize flexibility, scalability, and ease of customization, facilitating developers to build unique experiences without starting from scratch. By leveraging modular layouts, reusable containers, extensible slots, and streamlined data communication through the event bus, drop-in components balance standardization and the freedom to create.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*RBgDlrue44YhjU9K56mC1Q.png":{"__typename":"ImageMetadata","id":"1*RBgDlrue44YhjU9K56mC1Q.png","originalHeight":1312,"originalWidth":4898,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_43":{"__typename":"Paragraph","id":"8e25d5c2b334_43","name":"7a06","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*RBgDlrue44YhjU9K56mC1Q.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_44":{"__typename":"Paragraph","id":"8e25d5c2b334_44","name":"b4b3","type":"H3","href":null,"layout":null,"metadata":null,"text":"Look and feel","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_45":{"__typename":"Paragraph","id":"8e25d5c2b334_45","name":"1dfb","type":"P","href":null,"layout":null,"metadata":null,"text":"We designed every Commerce drop-in component using a standard base design system that consists of CSS tokens for colors, typography, spacing, shape styles, and a grid system.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_46":{"__typename":"Paragraph","id":"8e25d5c2b334_46","name":"4f5b","type":"P","href":null,"layout":null,"metadata":null,"text":"Developers can customize the appearance of drop-in components by overriding or extending the built-in CSS classes. The DOM follows a consistent naming convention across all drop-in components, adhering to the block-element-modifier (BEM) methodology to enhance clarity, ensure predictability, and reduce the likelihood of style conflicts. Shared components used across multiple drop-in components (e.g., buttons, images) use the prefix “dropin,” following the format .dropin-\u003Ccomponent\u003E__element — modifier. On the other hand, drop-in-specific components are prefixed with the name of the drop-in component, such as .\u003Cdropin-name\u003E-\u003Ccomponent\u003E__\u003Celement\u003E — \u003Cmodifier\u003E. For example, the .dropin-button class applies styles to all buttons across the storefront, while the .auth-sign-in-form styles apply the sign-in form from the authentication drop-in component.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":467,"end":506,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":616,"end":666,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":685,"end":700,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":769,"end":787,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":209,"end":237,"href":"https:\u002F\u002Fgetbem.com\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*9Crm_HFiFvsYx-n0589IdQ.png":{"__typename":"ImageMetadata","id":"1*9Crm_HFiFvsYx-n0589IdQ.png","originalHeight":2242,"originalWidth":3680,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_47":{"__typename":"Paragraph","id":"8e25d5c2b334_47","name":"9487","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*9Crm_HFiFvsYx-n0589IdQ.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_48":{"__typename":"Paragraph","id":"8e25d5c2b334_48","name":"ecca","type":"H3","href":null,"layout":null,"metadata":null,"text":"Restructuring layouts","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_49":{"__typename":"Paragraph","id":"8e25d5c2b334_49","name":"284d","type":"P","href":null,"layout":null,"metadata":null,"text":"In Edge Delivery Services, authors manage pages directly from the content source, including headings, images, videos, links, sections, and blocks. Blocks provide authors with pre-built, structured UI components, enabling them to design pages with sections that serve different functionalities — for example, heading blocks, hero blocks, product recommendation blocks, tiles blocks, etc.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":27,"end":80,"href":"https:\u002F\u002Fwww.aem.live\u002Fdocs\u002Fauthoring","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_50":{"__typename":"Paragraph","id":"8e25d5c2b334_50","name":"5098","type":"P","href":null,"layout":null,"metadata":null,"text":"We pre-integrated Commerce drop-in components into these blocks, which are readily available in the Boilerplate. For instance, in the Boilerplate environment, the PDP (Product Detail Page) is authored in products\u002Fdefault.docx and includes the following blocks:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":204,"end":225,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_51":{"__typename":"Paragraph","id":"8e25d5c2b334_51","name":"70c1","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Product Details","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":15,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_52":{"__typename":"Paragraph","id":"8e25d5c2b334_52","name":"8ea8","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Content Enrichment","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":18,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_53":{"__typename":"Paragraph","id":"8e25d5c2b334_53","name":"71e3","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Product Recommendations","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":23,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*AC458S3IbJ4RhCm8k1kVeQ.png":{"__typename":"ImageMetadata","id":"1*AC458S3IbJ4RhCm8k1kVeQ.png","originalHeight":2242,"originalWidth":3680,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_54":{"__typename":"Paragraph","id":"8e25d5c2b334_54","name":"0b86","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*AC458S3IbJ4RhCm8k1kVeQ.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_55":{"__typename":"Paragraph","id":"8e25d5c2b334_55","name":"d648","type":"P","href":null,"layout":null,"metadata":null,"text":"In the image above, each block (represented as a table) corresponds to a folder within the .\u002Fblocks\u002F directory, with folder names written in kebab-case (converting spaces and capitalization into lowercase and hyphens). For example, the “Product Details” block referenced in the table is in the .\u002Fblocks\u002Fproduct-details\u002F directory. Each block directory contains two required files matching its name:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":91,"end":100,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":294,"end":319,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":320,"end":329,"href":"https:\u002F\u002Fgithub.com\u002Fhlxsites\u002Faem-boilerplate-commerce\u002Ftree\u002Fdevelop\u002Fblocks\u002Fproduct-details","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_56":{"__typename":"Paragraph","id":"8e25d5c2b334_56","name":"30e1","type":"ULI","href":null,"layout":null,"metadata":null,"text":"A CSS file for the block’s unique styles: .\u002Fblocks\u002Fproduct-details\u002Fproduct-details.css","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":42,"end":86,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_57":{"__typename":"Paragraph","id":"8e25d5c2b334_57","name":"5874","type":"ULI","href":null,"layout":null,"metadata":null,"text":"A JavaScript file that transforms the block’s markup into the necessary HTML structure: .\u002Fblocks\u002Fproduct-details\u002Fproduct-details.js","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":88,"end":131,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_58":{"__typename":"Paragraph","id":"8e25d5c2b334_58","name":"dd42","type":"P","href":null,"layout":null,"metadata":null,"text":"The Product Details block encapsulates the entire PDP layout. These layouts are fully composable, customizable, and styled based on their respective CSS and JavaScript files. If needed, developers can re-arrange and style all template sections and replace pre-built components with custom UI.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":4,"end":19,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_59":{"__typename":"Paragraph","id":"8e25d5c2b334_59","name":"ef18","type":"H3","href":null,"layout":null,"metadata":null,"text":"Containers","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_60":{"__typename":"Paragraph","id":"8e25d5c2b334_60","name":"8097","type":"P","href":null,"layout":null,"metadata":null,"text":"Drop-in components leverage Containers as modular UI views that structure sections within the layout. Each container delivers domain-specific Commerce functionality to the storefront, enabling flexible composition and customization. In the case of the PDP, there are Containers for each section of the layout, including the gallery, price, product description, configuration options, and more. This structure ensures that each section operates as an independent, composable unit while adhering to the overarching layout.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_61":{"__typename":"Paragraph","id":"8e25d5c2b334_61","name":"77df","type":"P","href":null,"layout":null,"metadata":null,"text":"By breaking the layout into containers, developers can modify individual sections without affecting the design. For example, you can replace the gallery container with a custom image carousel or extend the product configuration container to include new options.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*kijgFgcPy2_JRnFopa5u5A.png":{"__typename":"ImageMetadata","id":"1*kijgFgcPy2_JRnFopa5u5A.png","originalHeight":2794,"originalWidth":2756,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_62":{"__typename":"Paragraph","id":"8e25d5c2b334_62","name":"7983","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*kijgFgcPy2_JRnFopa5u5A.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_63":{"__typename":"Paragraph","id":"8e25d5c2b334_63","name":"e487","type":"H3","href":null,"layout":null,"metadata":null,"text":"Customizing Containers with Slots","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_64":{"__typename":"Paragraph","id":"8e25d5c2b334_64","name":"694f","type":"P","href":null,"layout":null,"metadata":null,"text":"Developers can perform granular customizations to the layout using predefined slot extension points within drop-in containers. These slots provide API methods and, in some cases, extra context data to inject custom HTML elements into specific areas of the UI without rebuilding the entire UI.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":78,"end":99,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002Fdropins\u002Fall\u002Fextending\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*SGtcFoR3-U7CLgPPZUH1Xg.png":{"__typename":"ImageMetadata","id":"1*SGtcFoR3-U7CLgPPZUH1Xg.png","originalHeight":2408,"originalWidth":4696,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_65":{"__typename":"Paragraph","id":"8e25d5c2b334_65","name":"721a","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*SGtcFoR3-U7CLgPPZUH1Xg.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_66":{"__typename":"Paragraph","id":"8e25d5c2b334_66","name":"e89d","type":"P","href":null,"layout":null,"metadata":null,"text":"For example, in the product details page (PDP) drop-in component, the ProductOption container includes a slot named Swatches. Developers can utilize this slot to add a “Size Chart” link below the product size options.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":70,"end":83,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":116,"end":124,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":169,"end":179,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_67":{"__typename":"Paragraph","id":"8e25d5c2b334_67","name":"9cbe","type":"PRE","href":null,"layout":null,"metadata":null,"text":"pdpRenderer.render(ProductOptions, {\n slots: {\n Swatches(ctx) {\n \u002F\u002F get slot element for \"size\" attribute\n const size = ctx.getSlotElement('product-swatch - size');\n \u002F\u002F add link to Sizes\n if (size) {\n \u002F\u002F create link\n const link = document.createElement('a');\n link.textContent = 'Size Chart';\n \u002F\u002F set link href to size chart page with product SKU\n link.href = `\u002Fsize-chart?product=${ctx.data.sku}`;\n \u002F\u002F append link go size\n size.appendChild(link);\n }\n },\n },\n})($options);","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"javascript"},"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_68":{"__typename":"Paragraph","id":"8e25d5c2b334_68","name":"7e43","type":"P","href":null,"layout":null,"metadata":null,"text":"In this script, the Swatches slot is accessed through its API, enabling the dynamic addition of a “Size Chart” link tailored to the product’s SKU. This approach empowers developers to enrich the user interface precisely where needed, offering additional functionality while maintaining a reusable and upgradable codebase.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*Z5JvZ7kHW5sZa6x4B13ttg.png":{"__typename":"ImageMetadata","id":"1*Z5JvZ7kHW5sZa6x4B13ttg.png","originalHeight":2274,"originalWidth":2756,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_69":{"__typename":"Paragraph","id":"8e25d5c2b334_69","name":"b177","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*Z5JvZ7kHW5sZa6x4B13ttg.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_70":{"__typename":"Paragraph","id":"8e25d5c2b334_70","name":"30ad","type":"H3","href":null,"layout":null,"metadata":null,"text":"Data synchronization across drop-in components","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_71":{"__typename":"Paragraph","id":"8e25d5c2b334_71","name":"a21a","type":"P","href":null,"layout":null,"metadata":null,"text":"Drop-in components are micro-frontends housed in independent and interchangeable containers, but how do they communicate effectively? Creating a seamless user experience from modular components requires robust data synchronization. To ensure that all drop-in components, regardless of their specific functionality, remain synchronized with each other and the overall storefront, we created a centralized event bus that facilitates real-time communication and state management.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_72":{"__typename":"Paragraph","id":"8e25d5c2b334_72","name":"34fc","type":"P","href":null,"layout":null,"metadata":null,"text":"For instance, when a user selects an option on the PDP, an event containing the updated product data is emitted to the event bus. Other containers on the PDP that are subscribed to this event are automatically updated to reflect the new information. Similarly, when the user adds the product to their cart, the cart drop-in component instantly updates by subscribing to the relevant cart data event. Drop-in components are interconnected via the event bus by design, enabling developers to subscribe to these events and leverage data changes to create custom features and enhancements.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*WK1dcVovFpoQPNT_fwnxsQ.png":{"__typename":"ImageMetadata","id":"1*WK1dcVovFpoQPNT_fwnxsQ.png","originalHeight":1680,"originalWidth":2520,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_73":{"__typename":"Paragraph","id":"8e25d5c2b334_73","name":"0c77","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*WK1dcVovFpoQPNT_fwnxsQ.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_74":{"__typename":"Paragraph","id":"8e25d5c2b334_74","name":"1d4b","type":"H3","href":null,"layout":null,"metadata":null,"text":"The case for server-side rendering","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_75":{"__typename":"Paragraph","id":"8e25d5c2b334_75","name":"4bd0","type":"P","href":null,"layout":null,"metadata":null,"text":"Delivering fast, accessible, high-quality content is non-negotiable in e-commerce. Although we build websites for humans, some web crawlers have limited support for client-side rendering, which can impact SEO and the discoverability of product pages.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_76":{"__typename":"Paragraph","id":"8e25d5c2b334_76","name":"ae4b","type":"P","href":null,"layout":null,"metadata":null,"text":"Product Detail Pages (PDPs) in Edge Delivery Services for Commerce rely on folder-mapped pages — virtual pages created dynamically. A template page is used for all PDP paths requested, i.e., \u002Fproducts\u002F* Essential metadata, including the title, description, keywords, OpenGraph tags, and JSON-LD product schema, is rendered server-side to ensure optimal compatibility with social media sharing while the rest of the page loads client-side for dynamic functionality.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":191,"end":202,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_77":{"__typename":"Paragraph","id":"8e25d5c2b334_77","name":"b506","type":"P","href":null,"layout":null,"metadata":null,"text":"To improve SEO and deliver pages faster to users, Edge Delivery Services employs a serverless function to monitor product updates in Catalog Service. When detecting changes on a product, this function triggers the Edge Delivery Services preview API, which generates a fresh, static HTML version of the product page using the “bring-your-own-markup” render service. This system ensures that templates align with your functionality needs. This hybrid approach ensures that pages are fast, up-to-date, and optimized for users and search engines.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*7ITAVudn77Me1iw0znrV-A.png":{"__typename":"ImageMetadata","id":"1*7ITAVudn77Me1iw0znrV-A.png","originalHeight":3124,"originalWidth":3840,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:8e25d5c2b334_78":{"__typename":"Paragraph","id":"8e25d5c2b334_78","name":"8c76","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*7ITAVudn77Me1iw0znrV-A.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_79":{"__typename":"Paragraph","id":"8e25d5c2b334_79","name":"79fd","type":"H3","href":null,"layout":null,"metadata":null,"text":"The storefront journey has only just begun","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_80":{"__typename":"Paragraph","id":"8e25d5c2b334_80","name":"fb3d","type":"P","href":null,"layout":null,"metadata":null,"text":"We have reimagined what a modern e-commerce storefront can be, and the Edge Delivery Services for Commerce Boilerplate manifests this vision. It offers developers a streamlined, composable foundation to create high-performance storefronts while addressing the inefficiencies of traditional architectures and bridging the gaps between content management and the commerce platform.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:8e25d5c2b334_81":{"__typename":"Paragraph","id":"8e25d5c2b334_81","name":"8e22","type":"P","href":null,"layout":null,"metadata":null,"text":"We are just scratching the surface of what’s possible, unlocking a future where every storefront is as dynamic, scalable, and unique as the businesses it represents. Give it a try and join us in rethinking the modern storefront developer experience. Have questions or want to connect with others? Join our Discord channel and be part of the conversation.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":166,"end":179,"href":"https:\u002F\u002Fexperienceleague.adobe.com\u002Fdeveloper\u002Fcommerce\u002Fstorefront\u002F","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":297,"end":321,"href":"https:\u002F\u002Fdiscordapp.com\u002Fchannels\u002F1131492224371277874\u002F1220042081209421945","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"CollectionViewerEdge:collectionId:9342990108af-viewerId:lo_fa8f4b0341c5":{"__typename":"CollectionViewerEdge","id":"collectionId:9342990108af-viewerId:lo_fa8f4b0341c5","isEditor":false,"isMuting":false},"UserViewerEdge:userId:ca17853191d5-viewerId:lo_fa8f4b0341c5":{"__typename":"UserViewerEdge","id":"userId:ca17853191d5-viewerId:lo_fa8f4b0341c5","isMuting":false},"ImageMetadata:":{"__typename":"ImageMetadata","id":"","originalWidth":0,"originalHeight":0},"PostViewerEdge:postId:ae1ac8d7ceca-viewerId:lo_fa8f4b0341c5":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:ae1ac8d7ceca-viewerId:lo_fa8f4b0341c5"},"Tag:adobe-commerce":{"__typename":"Tag","id":"adobe-commerce","displayTitle":"Adobe Commerce","normalizedTagSlug":"adobe-commerce"},"Tag:aem-developer":{"__typename":"Tag","id":"aem-developer","displayTitle":"Aem Developer","normalizedTagSlug":"aem-developer"},"Tag:edge-delivery-services":{"__typename":"Tag","id":"edge-delivery-services","displayTitle":"Edge Delivery Services","normalizedTagSlug":"edge-delivery-services"},"Tag:composable-commerce":{"__typename":"Tag","id":"composable-commerce","displayTitle":"Composable Commerce","normalizedTagSlug":"composable-commerce"},"Tag:adobe-experience-cloud":{"__typename":"Tag","id":"adobe-experience-cloud","displayTitle":"Adobe Experience Cloud","normalizedTagSlug":"adobe-experience-cloud"},"Post:ae1ac8d7ceca":{"__typename":"Post","id":"ae1ac8d7ceca","collection":{"__ref":"Collection:9342990108af"},"content({\"postMeteringOptions\":{\"referrer\":\"\"}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"961a","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:8e25d5c2b334_0"},{"__ref":"Paragraph:8e25d5c2b334_1"},{"__ref":"Paragraph:8e25d5c2b334_2"},{"__ref":"Paragraph:8e25d5c2b334_3"},{"__ref":"Paragraph:8e25d5c2b334_4"},{"__ref":"Paragraph:8e25d5c2b334_5"},{"__ref":"Paragraph:8e25d5c2b334_6"},{"__ref":"Paragraph:8e25d5c2b334_7"},{"__ref":"Paragraph:8e25d5c2b334_8"},{"__ref":"Paragraph:8e25d5c2b334_9"},{"__ref":"Paragraph:8e25d5c2b334_10"},{"__ref":"Paragraph:8e25d5c2b334_11"},{"__ref":"Paragraph:8e25d5c2b334_12"},{"__ref":"Paragraph:8e25d5c2b334_13"},{"__ref":"Paragraph:8e25d5c2b334_14"},{"__ref":"Paragraph:8e25d5c2b334_15"},{"__ref":"Paragraph:8e25d5c2b334_16"},{"__ref":"Paragraph:8e25d5c2b334_17"},{"__ref":"Paragraph:8e25d5c2b334_18"},{"__ref":"Paragraph:8e25d5c2b334_19"},{"__ref":"Paragraph:8e25d5c2b334_20"},{"__ref":"Paragraph:8e25d5c2b334_21"},{"__ref":"Paragraph:8e25d5c2b334_22"},{"__ref":"Paragraph:8e25d5c2b334_23"},{"__ref":"Paragraph:8e25d5c2b334_24"},{"__ref":"Paragraph:8e25d5c2b334_25"},{"__ref":"Paragraph:8e25d5c2b334_26"},{"__ref":"Paragraph:8e25d5c2b334_27"},{"__ref":"Paragraph:8e25d5c2b334_28"},{"__ref":"Paragraph:8e25d5c2b334_29"},{"__ref":"Paragraph:8e25d5c2b334_30"},{"__ref":"Paragraph:8e25d5c2b334_31"},{"__ref":"Paragraph:8e25d5c2b334_32"},{"__ref":"Paragraph:8e25d5c2b334_33"},{"__ref":"Paragraph:8e25d5c2b334_34"},{"__ref":"Paragraph:8e25d5c2b334_35"},{"__ref":"Paragraph:8e25d5c2b334_36"},{"__ref":"Paragraph:8e25d5c2b334_37"},{"__ref":"Paragraph:8e25d5c2b334_38"},{"__ref":"Paragraph:8e25d5c2b334_39"},{"__ref":"Paragraph:8e25d5c2b334_40"},{"__ref":"Paragraph:8e25d5c2b334_41"},{"__ref":"Paragraph:8e25d5c2b334_42"},{"__ref":"Paragraph:8e25d5c2b334_43"},{"__ref":"Paragraph:8e25d5c2b334_44"},{"__ref":"Paragraph:8e25d5c2b334_45"},{"__ref":"Paragraph:8e25d5c2b334_46"},{"__ref":"Paragraph:8e25d5c2b334_47"},{"__ref":"Paragraph:8e25d5c2b334_48"},{"__ref":"Paragraph:8e25d5c2b334_49"},{"__ref":"Paragraph:8e25d5c2b334_50"},{"__ref":"Paragraph:8e25d5c2b334_51"},{"__ref":"Paragraph:8e25d5c2b334_52"},{"__ref":"Paragraph:8e25d5c2b334_53"},{"__ref":"Paragraph:8e25d5c2b334_54"},{"__ref":"Paragraph:8e25d5c2b334_55"},{"__ref":"Paragraph:8e25d5c2b334_56"},{"__ref":"Paragraph:8e25d5c2b334_57"},{"__ref":"Paragraph:8e25d5c2b334_58"},{"__ref":"Paragraph:8e25d5c2b334_59"},{"__ref":"Paragraph:8e25d5c2b334_60"},{"__ref":"Paragraph:8e25d5c2b334_61"},{"__ref":"Paragraph:8e25d5c2b334_62"},{"__ref":"Paragraph:8e25d5c2b334_63"},{"__ref":"Paragraph:8e25d5c2b334_64"},{"__ref":"Paragraph:8e25d5c2b334_65"},{"__ref":"Paragraph:8e25d5c2b334_66"},{"__ref":"Paragraph:8e25d5c2b334_67"},{"__ref":"Paragraph:8e25d5c2b334_68"},{"__ref":"Paragraph:8e25d5c2b334_69"},{"__ref":"Paragraph:8e25d5c2b334_70"},{"__ref":"Paragraph:8e25d5c2b334_71"},{"__ref":"Paragraph:8e25d5c2b334_72"},{"__ref":"Paragraph:8e25d5c2b334_73"},{"__ref":"Paragraph:8e25d5c2b334_74"},{"__ref":"Paragraph:8e25d5c2b334_75"},{"__ref":"Paragraph:8e25d5c2b334_76"},{"__ref":"Paragraph:8e25d5c2b334_77"},{"__ref":"Paragraph:8e25d5c2b334_78"},{"__ref":"Paragraph:8e25d5c2b334_79"},{"__ref":"Paragraph:8e25d5c2b334_80"},{"__ref":"Paragraph:8e25d5c2b334_81"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:ca17853191d5"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fblog.developer.adobe.com\u002Fedge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca","primaryTopic":null,"topics":[{"__typename":"Topic","slug":"programming"}],"isLimitedState":false,"isPublished":true,"allowResponses":true,"responsesLocked":false,"visibility":"PUBLIC","latestPublishedVersion":"8e25d5c2b334","postResponses":{"__typename":"PostResponses","count":0},"responseDistribution":"NOT_DISTRIBUTED","clapCount":4,"title":"Edge Delivery Services for Commerce: A New Storefront Has Dropped","isSeries":false,"sequence":null,"uniqueSlug":"edge-delivery-services-for-commerce-a-new-storefront-has-dropped-ae1ac8d7ceca","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1736881534837,"readingTime":10.741509433962264,"previewContent":{"__typename":"PreviewContent","subtitle":"We have reimagined what a modern e-commerce storefront can be, & the Edge Delivery Services for Commerce Boilerplate manifests this vision."},"previewImage":{"__ref":"ImageMetadata:1*f8AlON9dCnR1p9XcfyzbyQ.png"},"isShortform":false,"seoTitle":"","firstPublishedAt":1736881534837,"updatedAt":1736886479333,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:ae1ac8d7ceca-viewerId:lo_fa8f4b0341c5"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:adobe-commerce"},{"__ref":"Tag:aem-developer"},{"__ref":"Tag:edge-delivery-services"},{"__ref":"Tag:composable-commerce"},{"__ref":"Tag:adobe-experience-cloud"}],"isFeaturedInPublishedPublication":false,"isNewsletter":false,"statusForCollection":"APPROVED","pendingCollection":null,"detectedLanguage":"en","wordCount":2502,"layerCake":0}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.5ee1c2b6.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.dd50a3ad.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.ad26244f.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.5bef8967.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8813.72e66ca8.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4505.6dfaf853.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9380.fb176dee.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.96ab20d7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.abfd7f83.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.a9b228ec.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4737.00f0adf3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7381.b3301e29.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6372.effe6236.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7938.44b4f478.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6240.4d348147.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6199.8b181aa5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.93a5863f.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3623.6aa9f0a7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.8aa8d357.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7979.15bcd496.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.a4a2f7ff.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8664.99e7dab0.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4378.f8a3d82e.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/144.7fa90e7d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3666.cdb15b43.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/1922.c7a92bf7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/1069.499eaa23.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3523.799cc9c9.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3515.502362cb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.ef32cc18.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8414.0d800846.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3974.1770f8f5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2527.1ca694e2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostResponsesContent.bf62b302.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/responses.editor.faa5021d.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'920b70e03ba6f93a',t:'MTc0MjAzNTczMy4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>