The Complexity Of SSR Is Too Damn High!
A couple of months ago VueJS team wrote a thorough guide about server-side rendering. By its length and complexity of concepts, it is clear that SSR is not a walk in the park; they recognize it bay saying:
Properly configuring all the discussed aspects of a production-ready server-rendered app can be a daunting task. Luckily, there is an excellent community project that aims to make all of this easier: Nuxt.js. Nuxt.js is a higher-level framework built on top of the Vue ecosystem which provides an extremely streamlined development experience for writing universal Vue applications.
Of course this is not VueJS fault, the complexity of SSR is too damn high no matter which framework is being used.
Another issue not present in that guide is that some plug-ins don't support SSR since they don't inject the necessary code into the DOM when the page is loaded server side. I faced this problem with authentication libraries, a critical functionality in any application!.
Personally, I wouldn't choose SSR for a project even if it requires it, I would opt for classic non-spa solutions using HTTP/2 Server-Push to load assets faster. In the end that's what the big fishes like Akamai and Cloudflare are using.
But of course, that's only my humble rant/opinion. I would like to hear your thoughts and experience with SSR.