I am about to relaunch our website, but I am uncertain whether I should go with a Vue.js SPA webpage or a Nuxt.js SSR webpage. The big advantage of an SPA webpage is that it has an app-like feeling when using the webpage, which massively increases the user experience. Try it out yourself and visit the mobile version of airbnb.com on your smartphone. It feels like a native app.

However, the big downside of an SPA webpage is that it is rendered by the client (client-side rendering, also called CSR). This means the web server just serves an empty HTML skeleton and the actual content will be populated by JavaScript. This is a problem for Googlebot, as it has to act like a real web browser in order to populate the content and understand it.

I have read plenty of articles about how capable the Googlebot is at understanding SPA webpages. Some suggest going with SSR (server-side rendering) to avoid any issues with SEO, and some say it is a manageable issue. Some articles also suggest going with an SPA webpage and pre-render the webpage. This would mean that a normal user will see a JavaScript-based website that will populate the content dynamically, but the Googlebot will be served with a static HTML version of the webpage.

This is indeed a good idea, but this is not a solution which fits my needs as pre-rendering is not really a good at scaling and our webpage is constantly adding new pages. Therefore, this is not really an option.

With all that being said, I would like to know what your thoughts are. Will it be able to build an SPA webpage which performs as good as a traditional or SSR webpage when it comes to SEO?

Sadly, Google has not provided any updates in recent years about how capable they are of crawling SPA/CSR webpages. Therefore, I am quite unsure.

  • 1
    This is very related to this question and my answer to it is revelant: Do search engines perform JS rendering while crawling? Commented Apr 21, 2023 at 9:08
  • Pre-rendering isn't the only form of SSR. You can also do dynamic SSR where the pages are generated in real-time as opposed to pre-rendering where the pages are generated at deploy-time. Real-time SSR solves your problem of new pages getting added all the time. It can also scale just fine, but it does require more server resources than not using SSR. Commented Apr 21, 2023 at 9:12
  • I am so confused because all things can mix up apparently. SSR, SSG, CSR etc... Can you recommend a good blog post or anything?
    – Jan
    Commented Apr 21, 2023 at 10:17
  • SPA like navigation can also have a negative impact on reported Core Web Vitals, something we are only making baby steps towards fixing. web.dev/vitals-spa-faq Commented Apr 22, 2023 at 9:59


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.