It is rare to find a modern static website these days. The first things that come to mind when thinking of a static website would probably be: “clunky”, “ugly”, “geocities-era”, “comic sans”, etc.
I am a minimalist at heart. I like to make things simple for myself (within reason), and I see a lot of value in not over-engineering things.
Is using React/Angular/Vue over-engineering?
This is a tough question, with an unfulfilling answer: it depends.
It’s also good to use a big JS framework if you’ll have a lot of component re-use – specifically with a good internal component library. Being able to write something generally once and apply it in many places is one of the biggest strengths of React.
However, I think it’s unnecessary for many websites.
This makes the page load faster than it could ever be if it were built with a JS framework, easier to understand for a future developer, and it just feels good to have no dependencies. I also didn’t need to think at all about architecture, best practices, maintanability, performace, or longevity: HTML and CSS will work for a long time.
What can you do?
Well, this is tough. Using your engineering mind to build websites is genuinely more fun, and I do really enjoy experimenting with architectures in React. I just don’t know if it can be justified for all of the simple websites out there, especially with the extensive tooling that exists for serving static content. Github Pages is free, for example – and if they ever shut down that service, it’s absolutely trivial to move to another platform.
If you have something big and complicated to build, and if it needs lots of scripting built into the core functionality, then yeah you probably should use a JS framework. However, there are many cases where an application really could be a few simple HTML pages (or templates), containing a few slivers of vanilla JS sprinkled around the website for interactions that you do need.
I really believe anyone claiming either way that everything should be a static site or that everything should be JS is very wrong. I think that both have their places, but I also believe that more websites could be static than currently exist today.