Interactivity is just a detail

Interactivity is just a detail. In the grand scheme of web development, it’s merely a small piece of the puzzle, not the keystone holding it all together. Allthough, in recent years we kind of forgot about that. The Javascript cool kids have taken over. And I was (or am?) still one of them.

We all jumped - till recently - on React, Svelte, Solid or whatever. Hell, I even earn my living building on these technologies. But the introduction of HTMX made me realize that we are doing it all wrong. To show for it: you are looking at a blog which I initially build using Next.js, styled components and Chakra. Let that sink in a bit. Then try to identify all the elements on this page that require Javascript enabled interactivity. I’ll wait.

There was so (!) much unncessary technology involved that it’s kind of hard to see how we ended up here. Javascript is an awesome and powerfull technology we can use, but we should use it more wisely. It allows for a lot of really great interactivity on the web, but it’s not the only way to achieve that. And it’s not always the best way either.

So, I went back to the basics, rebuilding it with HTML and some CSS in just a few hours (on top of a super simple static generator). Simpler design, simpler tech stack, and much faster! I guess old habits die hard. To show how difficult it is to break out of existing habits: After migrating this blog to Hugo, I tried to integrate Tailwind. Did I really need Tailwind? It’s awesome for larger projects, but for a simple blog? After an hour fiddling with Hugo pipeline and Post CSS processing I realized it would be faster to just write some inline CSS.

Tunnel vision is real. The more experience you have, the more you are prone to it. At least I am.

Let’s get to the basics, focus on the root problem with a fresh perspective. Try to use as little tools as possible. What kind of technologies are you taking for granted? There are for sure a few. Do you really need PostgreSQL, React, a MVC framework? You get the picture: basics first.