It entirely depends on the type of application you are building. Boring CRUD app that is rarely updated? Yea, server rendering is probably enough.
But the requirements of "modern" software are always changing. Sure, the static table might be enough, but then some business person says, "It sure would be nice if I could check a little box in the table row or assign this user here..." and now you're adding little JS hacks. Again, not impossible, but at a certain scale, the ability to have infinite access to client driven reactivity becomes a real business empowerment.
Given the interest in the JS working group to add reactive Signals to the core language, I suspect this will only become _more_ prevalent in the future. Maybe it will need less input from frameworks to do the same work and we can move back towards using built-in browser APIs, but the programming model itself works really well (so much so that SwiftUI uses a very similar reactive UI programming model).
Again, I don't disagree with your point, just at a certain scale, it becomes a huge hassle to maintain. If people are going to use these tools and frameworks anyway, it helps the entire web to make them more efficient.
Hmm but that table would be actually what I would write in React most likely. Considering most tables want pagination, filtering and so on it would be dumb to use query-string params and reload the page. So this would actually fit perfectly.
I have this set-up where .NET ViewHelper would do `RenderReactComponent('complexTableComponent', '.complex-table-component')` and it would load bundled react as 1st script and then this component as second script. If page does not need no react components it does not load any. If you have more than one it will still load the react itself only once. It is really amazingly working very, very well.
And yes, if I would to build some kind of dashboard/email client or something I would say use React or Angular and API. But for regular website rendered HTML is king.
But the requirements of "modern" software are always changing. Sure, the static table might be enough, but then some business person says, "It sure would be nice if I could check a little box in the table row or assign this user here..." and now you're adding little JS hacks. Again, not impossible, but at a certain scale, the ability to have infinite access to client driven reactivity becomes a real business empowerment.
Given the interest in the JS working group to add reactive Signals to the core language, I suspect this will only become _more_ prevalent in the future. Maybe it will need less input from frameworks to do the same work and we can move back towards using built-in browser APIs, but the programming model itself works really well (so much so that SwiftUI uses a very similar reactive UI programming model).
Again, I don't disagree with your point, just at a certain scale, it becomes a huge hassle to maintain. If people are going to use these tools and frameworks anyway, it helps the entire web to make them more efficient.