I started questioning my tech stack, and now I'm lost 😔
I'm a web designer 100% confident with my tech stack of choice, certain that the future is static and JS-powered and Serverless and PWA and AMP and GraphQL and (insert flashy buzzword here)
That was true, until I started questioning this vision.
Today I got a bit sad and lost about the future of the web... Everywhere I look there are plenty of hurdles and foul stuff just waiting around the corner to jump on me, my clients or their users, so I figured I'd raise this discussion here:
- The "traditional" web is slow, can be insecure and full of trashy stuff, of which WordPress, Wix and the likes are a big source
- A possible solution is AMP, but it's clearly Google's attempt to dominate the web even further
- Then we have the Javascript bloat provided by the whole framework tycoon
- There are big proponents of "let's talk about the javascript cost", like Addy Osmani, but I don't feel like there's any expressive movement to steer the web dev community farther from its current reliance on JS
- The amazing developer experience provided by Gatsby (which has been my tool of choice) is also helping to make this bloat a default on the web. Just look at their own website: "Fast in every way that matters" and, yet, it loads 6 megabytes of uncompressed Javascript in a single blog post. Hm... how fast 🤔
- Compiler frameworks like Svelte, Imba and Stencil attempt to reduce this bloat by reducing the number of abstractions in client-side runtime...
- And static site generators such as Hugo and Eleventy make it easier to build complex websites without the need of runtime JS...
- However, these abstractions pulls us farther from being able to just
view source
, which, as Kyle Simpson rightly put, could be a downfall to the web as it would make it harder for new developers to get in. - And, yet, it's still impossible to do complex work that doesn't rely on any type of external tools other than browser-supported technology. I don't know what to do 😔
- Clients need to be able to edit content visually, and for that we need a CMS.
- This CMS can't inject the data directly in the HTML, there's no
<link rel="content" />
we could use, so we need to either- Pull in the data client-side with Javascript and then render it, but... javascript bloat (and SEO, of course)
- Work with the data in the server at runtime, but... bad performance (and high costs / maintenance)
- Generate the website on build time, but... abstractions (and lock-in, might not be very future proof, etc.)
- And, honestly, the idea of just building
.html
,.css
and (very few).js
files doesn't feel like a productive workflow. It might be that we became spoiled with so many tools, but going full vanilla truly can be a problem if working on big projects / with big teams.
So, yeah, I'm lost, please show me the way. Oh, I was super over simplistic with my approach to each of these topics, but even so I believe the main point hits home. If you want to evangelize your new gameChangingThing.js
or fight me on my views, please don't comment below, this is supposed to be an open conversation about the future of the web and of our trade as developers 😉