Needless to say, the web moves very fast. In the time since I customized solutions to these issues, a lot of them either became part of a standard (like srcset) or part of the CMS. I also discovered tools like Vue.js and I was itching to get away from jQuery and its myriad dependencies on my small website.
The biggest migration was moving the monolithic store integration over to a plugin structure, as well as upgrading both Stripe and PayPal. Stripe had come out with a new Checkout system that allows customers to use digital wallets like Apple Pay and Google Pay and I was really excited about offering that on my website.
I also integrated a Blade plugin and migrated all the templates to the much more readable Blade syntax. After a few weeks of work all the previous functionality was upgraded and operational again. On the surface seemingly nothing had changed, but in the back the improvements were immense.
Deleting old things felt really good and now it was time to get rid of even more.
Almost by chance I happened on Tachyons and immediately took to it. It was so easy ! Even for someone like me for whom CSS will always feel a bit foreign the classes and grid system made sense, everything was much more intuitive. I wasn't fighting with the tool anymore. Designing responsive pages was a breeze.
So I moved from using jQuery and Foundation, including my Frankenstein Interchange+Unveil solution to Tachyons, Vue.js and plain Javacsript. I came across LazyLoad, a Javascript lazy loader for responsive images using the new Intersection Observer API. This couldn't be more perfect: a zero-jQuery, standards-based solution to a problem I've been having for years.
The more complex interactions of the store are now purely in Vue.js and the code is so much more readable and maintainable. I'd been using Vue.js at work all summer and using it felt similar to Tachyons. The architectural design of these tools made sense to me and it fit with how I work and what the task required.
The final issue was solved by integrating Laravel Mix, another tool I'd been using at work. I had a sort-of functional pipeline with Grunt tasks but since then a lot of the dependencies were no longer working. I had resorted to manually doing all the asset preparation for production since the tool itself seemed to have fallen out of favour. Mix automated all these tasks again (minification, concatenation, compression, deployment) and all it took was 10 minutes.
So here it is ! The latest upgrade process. You can see the entire code on Github but make sure to check out the finished website too :)