The benefits of server side rendering can not be denied, but the notion that everything must be or should be rendered on the server side I have found to be troublesome.
First, web developers now have access to impressive hardware power. It’s been rare for any software to push the limits of our hardware – Meteor Galaxy Team plan offers 10 GB of memory. So it makes sense to this effect to take advantage of the server and not rely on the client.
Second, some say that search engines like the markup produced by SSR. I’m unsure of this and haven’t found any sources that really gives me the impression that this is true. It would make sense to create SSR if your goal was to increase pagerank in search engines. But, it seems like a poor strategy in most use cases. Social media is much better, imho.
Third, Server side rendering is faster. So, if speed is your priority, given most users will never see a difference – I’m all for it.
If the projects goal is strictly web first that is of course where no mobile application is needed server side rendering make sense. However, if you are planning to create a mobile component than you are forced to use client side rendering. Mobile development renders always on the client. It’s speed and performance doesn’t seem to really be an issue. Admittedly, I build more mobile apps than web apps, so I may be missing something.
Further, basic projects like todo apps, human resource or financial data probably will not want schema markup. When your data isn’t changing the added benefits of server side rendering are negligible. Rule of thumb, if your user is just loading a page and using it for hours, after the initial load the performance will not be effected.
It’s great that you can render html from the server, but if you have to listen to events, so by loading the code to listen to the events you have to load the code for client side rendering, so the benefit of server side rendering is no more.
It best to have both server side and client side rendering options. If your server is temporarily unavailable the app can continue without returning an error. It makes sense to have a fallback and relying completely on the server will have you pulling out your teeth.
In the end, I think the holy grail of server side rendering which I have seen planned on FlowRouter is very exciting and a majority of complex apps should use it. But, I jumped into the server side bandwaggon when building apps and I found that its not the holy grail I was promised and some apps are just better off running client side. In the end, you must use your best judgment.