What now is wrong about client-side rendering?
Hash routing? It's obsolete anyway. Speed? Client-side rendering can be (and often is) faster than server-side rendering. The only reason we still do server-side rendering, on the other hand, is because of SEO — and that roadblock is about to disappear as well.
You've got it all backwards. Why do you think twitter went into full client-side rendering and then back to shared rendering? SEO? Lol.
Client-side rendering is never faster than server-side rendering for first load. It just can't be. I can't believe I have to point this out to people.
I was referring to Google planning to execute the JavaScript on websites it crawls in the near future. If that becomes standard, as it soon might have to, it would solve the SEO issue. The search engines are under pressure to sort it out on their side lest they become blind to a big part of the web — and yes, they will sort it out.
The first rendering would be almost always — though not necessarily — slower on first load. (An empty page + a simple JSON call + DOM injection has the potential of using less bandwidth than static HTML, but of course JavaScript applications are becoming quite large these days). After the first rendering though, it would generally be much faster. JSON uses much less bandwidth than HTML and you can do much more sophisticated rendering on the client than you could do on a server at no extra cost.
Nobody is disputing that client-side rendering is great after first load. But that doesn't mean you can get away not doing server-side rendering on first load.
It does depend on the use case. If you have a website that requires authentication, you can load the whole code while the user logs in. In that case, SEO is not an issue either already now.
It also does depend on your market. Certainly there are some markets where you might have to eek out every last bit of reduced latency. But if your market is a country where nobody has a connection of less than 10MB/s on their desktop OR phone then you can have a 1MB codebase plus stylesheets compressed to ~500KB and served by SPDY/HTTP2 downloaded, decompressed and running in less than 250ms. Why would you then ever go through the additional work of rendering on the server?