In 2018, does SSR still provide an advantage over CSR for: (1) SEO, (2) performance?

RE:

There are two questions here - SEO and performance and I'll answer them separately. πŸ™‚

SEO

Should you SSR: Probably, but not for the reasons you think

Yes, Search crawlers are now able to parse and execute javascript. I remember reading about how Google uses the time between two network calls to figure out if the page has loaded - if the time is more than a mean-time it means the page load is complete.

But... that being said, the Google bot in particular is a PhantomJS script (if I remember correctly) that runs as Chrome 41. That means that you need add a lot of polyfills for things you take for granted, like native Promises and animations. This is why probably SSR makes more sense since you won't be shipping down unnecessary polyfills to all your users just so that the Google bot can render your page.

Here is a pretty neat video on this, straight from Google:


Performance

Should you SSR: I don't think so.

With tiny libraries like Preact and VueJS, I don't feel performance will take a huge hit. Bundle sizes are getting smaller by the day, so I don't feel you should take the effort to SSR here.

However, if your bundle size is huge, then SSR kind of makes sense.


Accessibility

Should you SSR: Definitely

I know it's not part of your original question, but I feel like it's a point worth mentioning. Accessibility takes a pretty big hit if you don't SSR.

There are compressing browsers like Opera mini, as well as web views that don't execute JS the way you want it to, or sometimes not execute JS at all. In cases like these, SSR is the only way you can deliver content to your user(s).

I've personally worked at a company where ~30% of our user base was on either Opera mini or UC Browser - both of which are compressing browsers that are notorious for not executing JS the way you want it to. We had to take SSR very seriously there, so as to keep those users.

Food for thought. πŸ˜„

Reply to this…

(6 answers) Take me to the question