[{"data":1,"prerenderedAt":264},["ShallowReactive",2],{"$fi_SA3l8D9e4tuLzFLMXUroEj8Vi4FUp0B2g2TbBke08":3,"post-from-magento-to-pwas-what-actually-carries-over":74},{"site":4,"features":8,"stripe":10,"bridalfile":12,"navigation":13,"branding":51,"footer":54},{"id":5,"name":6,"domain":7},"7578a1b2-a8ec-462f-8980-d46ebefc76a2","Pwa Developer","pwadeveloper.uk",{"products":9,"bookings":9,"event_capacity":9},false,{"enabled":9,"test_mode":11},true,{"enabled":9},{"footer":14,"header":34},{"id":15,"name":16,"items":17},"4c83a83d-7d89-442d-8e4c-717e61d71c19","Footer Navigation",[18,22,26,30],{"id":19,"url":20,"label":21},"b8c9d0e1-f2a3-4b4c-5d6e-7f8a9b0c1d2e","/about","About",{"id":23,"url":24,"label":25},"c9d0e1f2-a3b4-4c5d-6e7f-8a9b0c1d2e3f","/blog","Blog",{"id":27,"url":28,"label":29},"d0e1f2a3-b4c5-4d6e-7f8a-9b0c1d2e3f4a","/contact","Contact",{"id":31,"url":32,"label":33},"e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b","/websites","Websites",{"id":35,"name":36,"items":37},"090e7007-6dd0-4416-8ce2-2680c446d2a9","Main Navigation",[38,40,42,44,49],{"id":39,"url":20,"label":21},"c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f",{"id":41,"url":32,"label":33},"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",{"id":43,"url":24,"label":25},"d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a",{"id":45,"url":46,"label":47,"target":48},"e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8a9b","https://www.youtube.com/@anothermagentodev9161","YouTube","_blank",{"id":50,"url":28,"label":29},"f6a7b8c9-d0e1-4f2a-3b4c-5d6e7f8a9b0c",{"logo":52,"logoDark":52,"favicon":52,"tagline":53},null,"Web Developer & Headless CMS — Hull, East Yorkshire",{"summary":55,"copyright":52,"address":56,"contact":60,"socialLinks":61,"openingHours":73},"Senior web developer in Hull, East Yorkshire. I built HD CMS — a headless platform powering 15+ live business websites. Bespoke sites from £20/month.",{"line1":52,"line2":52,"city":57,"state":58,"postalCode":52,"country":59},"Hull","East Yorkshire","United Kingdom",{"phone":52,"email":52},[62,65,69],{"url":46,"icon":63,"platform":64},"fa-brands fa-youtube","youtube",{"url":66,"icon":67,"platform":68},"https://github.com/adamcjackson1982","fa-brands fa-github","github",{"url":70,"icon":71,"platform":72},"https://www.linkedin.com/in/adamcjackson/","fa-brands fa-linkedin","linkedin",[],{"id":75,"slug":76,"title":77,"excerpt":78,"content":79,"featured_image":262,"published":11,"published_at":263},"1358d442-1aae-49b0-9334-720e4b93b4dd","from-magento-to-pwas-what-actually-carries-over","From Magento to PWAs: What Actually Carries Over","Fifteen years in Magento taught me things that still matter in modern JavaScript stacks — and things I had to completely unlearn.",{"type":80,"content":81},"doc",[82,88,92,99,108,116,124,132,137,145,153,161,169,174,178,182,187,191,245,250,254,258],{"type":83,"content":84},"paragraph",[85],{"text":86,"type":87},"I started working with Magento in 2009. Got certified. Built stores ranging from small catalogues to enterprise installations handling thousands of orders per day. For over a decade, that was my world.","text",{"type":83,"content":89},[90],{"text":91,"type":87},"Then I shifted to JavaScript-first stacks — Nuxt, Vue, headless architectures, PWAs. The transition wasn't as dramatic as I expected. Some skills translated directly. Others I had to completely rewire.",{"type":93,"attrs":94,"content":96},"heading",{"level":95},2,[97],{"text":98,"type":87},"What Transfers Directly",{"type":83,"content":100},[101,106],{"text":102,"type":87,"marks":103},"Data modelling.",[104],{"type":105},"bold",{"text":107,"type":87}," Magento's EAV (Entity-Attribute-Value) architecture is complex and often frustrating, but it teaches you to think carefully about how data relates. Product variants, configurable attributes, customer segments, pricing rules — these concepts exist in any commerce system. The implementation differs, but the mental models persist.",{"type":83,"content":109},[110,114],{"text":111,"type":87,"marks":112},"Understanding scale.",[113],{"type":105},{"text":115,"type":87}," Magento at scale forces you to think about caching, indexing, database optimisation, and queue processing. A slow Magento site teaches you exactly where performance bottlenecks hide. Those lessons apply regardless of the stack.",{"type":83,"content":117},[118,122],{"text":119,"type":87,"marks":120},"Edge case awareness.",[121],{"type":105},{"text":123,"type":87}," eCommerce has endless edge cases. Tax calculations across jurisdictions. Inventory sync timing. Payment gateway failures mid-checkout. Partial shipments. Returns that cross promotional boundaries. Years of handling these in Magento built an instinct for where things go wrong.",{"type":83,"content":125},[126,130],{"text":127,"type":87,"marks":128},"Complex state management.",[129],{"type":105},{"text":131,"type":87}," A Magento checkout manages cart state, customer data, shipping options, payment methods, applied promotions, and inventory reservations — all in a single flow. Managing complex state in a Vue or React app feels familiar after that.",{"type":93,"attrs":133,"content":134},{"level":95},[135],{"text":136,"type":87},"What Magento Didn't Prepare Me For",{"type":83,"content":138},[139,143],{"text":140,"type":87,"marks":141},"Frontend-first thinking.",[142],{"type":105},{"text":144,"type":87}," Magento's architecture is backend-dominant. The frontend was historically an afterthought — server-rendered templates, jQuery sprinkled on top. Modern PWAs invert this. The frontend is the application. The backend is an API. That mental shift took time.",{"type":83,"content":146},[147,151],{"text":148,"type":87,"marks":149},"Component-based UI.",[150],{"type":105},{"text":152,"type":87}," Magento's block/template system is hierarchical but not component-based in the modern sense. Learning to think in reusable, composable components required unlearning the Magento approach to UI architecture.",{"type":83,"content":154},[155,159],{"text":156,"type":87,"marks":157},"Client-side routing.",[158],{"type":105},{"text":160,"type":87}," Server-rendered applications handle routing on the backend. SPAs and PWAs handle it on the frontend. The implications for data fetching, state persistence, and navigation UX were all new territory.",{"type":83,"content":162},[163,167],{"text":164,"type":87,"marks":165},"Build tooling.",[166],{"type":105},{"text":168,"type":87}," Magento's frontend build process was always painful — Grunt, then Gulp, RequireJS, LESS compilation. Modern JavaScript tooling (Vite, esbuild, Webpack 5) is faster, more reliable, and more pleasant to work with. But it's a different ecosystem entirely.",{"type":93,"attrs":170,"content":171},{"level":95},[172],{"text":173,"type":87},"Why GraphQL Changed Everything",{"type":83,"content":175},[176],{"text":177,"type":87},"The shift to headless commerce and GraphQL was the real turning point. Instead of fighting Magento's rendering layer, I could treat it as a data source. Pull products, categories, and customer data via API. Build the frontend however made sense.",{"type":83,"content":179},[180],{"text":181,"type":87},"GraphQL's type system also brought discipline to frontend data handling. When your queries are typed and your responses are predictable, a whole category of bugs disappears.",{"type":93,"attrs":183,"content":184},{"level":95},[185],{"text":186,"type":87},"Advice for Backend-Heavy Developers Moving to PWAs",{"type":83,"content":188},[189],{"text":190,"type":87},"If you're coming from a similar background — years in PHP, Python, or another backend-dominant ecosystem — here's what I wish I'd known:",{"type":192,"content":193},"bulletList",[194,205,215,225,235],{"type":195,"content":196},"listItem",[197],{"type":83,"content":198},[199,203],{"text":200,"type":87,"marks":201},"Start with state management.",[202],{"type":105},{"text":204,"type":87}," Understanding how Vuex, Pinia, Redux, or similar tools work is more important than learning framework syntax. State flows differently in client-side applications.",{"type":195,"content":206},[207],{"type":83,"content":208},[209,213],{"text":210,"type":87,"marks":211},"Learn the browser APIs.",[212],{"type":105},{"text":214,"type":87}," Service workers, IndexedDB, Cache API, Web Storage — these are your new infrastructure. You're not just writing JavaScript; you're building on browser primitives.",{"type":195,"content":216},[217],{"type":83,"content":218},[219,223],{"text":220,"type":87,"marks":221},"Accept the tooling complexity.",[222],{"type":105},{"text":224,"type":87}," Modern JavaScript has a lot of tooling. It can feel overwhelming compared to simpler backend deployments. But the tooling exists because it solves real problems. Invest time in understanding why, not just how.",{"type":195,"content":226},[227],{"type":83,"content":228},[229,233],{"text":230,"type":87,"marks":231},"Don't abandon your backend instincts.",[232],{"type":105},{"text":234,"type":87}," API design, data validation, security considerations, error handling — these matter just as much in a headless architecture. Your backend experience is an asset, not baggage.",{"type":195,"content":236},[237],{"type":83,"content":238},[239,243],{"text":240,"type":87,"marks":241},"Build something real.",[242],{"type":105},{"text":244,"type":87}," Tutorials only get you so far. I learned more from building one production PWA than from months of documentation reading.",{"type":93,"attrs":246,"content":247},{"level":95},[248],{"text":249,"type":87},"The Transition Is Worth It",{"type":83,"content":251},[252],{"text":253,"type":87},"Moving from Magento to modern JavaScript stacks felt risky at the time. Magento was established, in demand, and I had deep expertise. Why walk away from that?",{"type":83,"content":255},[256],{"text":257,"type":87},"Because the web moved on. The skills that matter now — component architecture, API-first development, offline capabilities, performance optimisation at the edge — aren't skills Magento was teaching.",{"type":83,"content":259},[260],{"text":261,"type":87},"The transition took time, but the Magento years weren't wasted. They built foundations that still support everything I build today.","https://sktegczfmabucrnpgrvp.supabase.co/storage/v1/object/public/media/7578a1b2-a8ec-462f-8980-d46ebefc76a2/2025/12/1767022899570-blog-hero-magento-pwa.svg","2025-12-29T12:00:00+00:00",1774075395602]