Skip to main content Accessibility Feedback

Web Developer Ground Hog Day

If you’ve never seen the movie Ground Hog Day, television weatherman Phil Connors (played by Bill Murray) finds himself reliving the same day over-and-over again.

He wakes up in the same bed on the same exact date every morning. As he goes about his day, he’ll change things here and there, but every morning he wakes up just to repeat the same day all over again.

I sometimes feel like web development is like that.

For a long time, we used tools like jQuery to manipulate and modify server-rendered HTML. Then state-based UI libraries showed up, and we started rendering all of our HTML with JavaScript.

Eventually, people realized this was horrible for performance, so they built tools like Next.js and Nuxt.js that take those same state-based UI libraries and run them on the server to generate… server-rendered HTML.

But… those libraries also send a ton of performance-crushing client-side JavaScript.

So some devs started building smaller state-based UI libraries while others built tools that use JavaScript to fetch server-rendered HTML. The solution was, up-to-this-point, to just throw more JavaScript at the problem.

Then, some smart folks were like, “Hey, what if we compiled all of this into mostly HTML and sent just the little JS we needed instead?” And tools like Svelte and Astro were born. They still have people writing all of the JavaScript, but ideally more plain old HTML, with less JS shipped to users.

But then… Svelte and Astro decided that SPAs as a default were “good actually,” and have started shipping more JavaScript to accommodate that. You can turn it off, but defaults matter.

JavaScript is great. I love using it, and it does amazing things. But maybe it’s time we stop repeating these same patterns of development over and over again. Maybe we can use JavaScript more responsibly, and focus more effort on HTML and CSS.

In Ground Hog Day, Phil changes lots of little details, but nothing really changes. The only way he escapes his never ending loop is by changing the major patterns in his life and breaking that cycle.

Maybe, just maybe, that’s relevant to how we build things for the web.