In beta, with limited placesOpen to everyone in Q1 2027

↑↓ to move · Enter to open · Esc to close

Publishing by platform

What is SSR (server-side rendering)?

Server-side rendering (SSR) is the technique by which the server builds a page's complete HTML before sending it, so the browser or a crawler receives the content already written in the first response. It is the opposite of client-side rendering, where JavaScript assembles the content in the browser after the page loads.

Written by
Reviewed by
Reviewed by
Published 6 min read
Takeaway:

Key takeaways

  • With SSR, the content travels in the first HTML response; with client-side rendering, JavaScript assembles it in the browser.
  • Google renders JavaScript in a second phase, and still recommends server-side rendering because not all bots run JavaScript.
  • Google calls dynamic rendering a workaround and recommends server-side rendering, static rendering or hydration instead.
  • In a Vercel measurement published in December 2024, none of the major AI crawlers executed JavaScript.
  • To find out whether a piece of data is in the initial HTML, look at the page's source code, not the browser inspector.

When someone, or something, requests a product page, the store answers with an HTML document. The question this term settles is what that first document carries: the product's name, price and data already written out, or a nearly empty page and a JavaScript file that assembles them afterward in the browser. Here SSR is not the "SSR" rarity tier of gacha games: it is server-side rendering. It matters to you because not everything that reads your store runs JavaScript, and what is not in the first response may never be read by anyone except a person with a browser.

How it works

The reference guide on web.dev, written by Addy Osmani and Jason Miller and updated on January 5, 2026, distinguishes these ways of producing a page:⁠[1]web.dev (Addy Osmani and Jason Miller). Rendering on the Web

Technique Where the HTML is built What the first response carries
Server-side rendering (SSR) On the server, on every request The HTML with the content
Client-side rendering In the browser, with JavaScript that modifies the DOM A nearly empty page and the scripts
Static rendering At build time, one file per URL The HTML with the content, prepared in advance
Hydration On the server, and then JavaScript adds state and interactivity The HTML with the content, which then comes alive

Web.dev defines SSR as rendering an application on the server to send HTML, rather than JavaScript, to the client, and client-side rendering as rendering it in the browser, using JavaScript to modify the DOM.⁠[1]web.dev (Addy Osmani and Jason Miller). Rendering on the Web The practical difference is in the first response: with SSR, whoever downloads it already has the content; with client-side rendering, they have to run the JavaScript to see it.

Google does run JavaScript, but in a second phase. It processes pages in three steps: crawling, rendering and indexing. Googlebot queues pages that respond with a 200 status code for rendering, and a page can spend a few seconds or longer in that queue. Even so, Google's documentation says that server-side rendering or pre-rendering is still a great idea, because it makes the website faster for users and crawlers, and because not all bots can run JavaScript.⁠[2]Google Search Central. Understand JavaScript SEO basics

For years, one way out was dynamic rendering: serving bots a pre-rendered version and people the usual one. Google now describes it as a workaround it does not recommend, because it adds complexity and uses resources, and proposes instead server-side rendering, static rendering or hydration.⁠[3]Google Search Central. Dynamic rendering as a workaround

AI crawlers and the initial HTML

The "not all bots" part has become concrete with the crawlers of the AI companies. Vercel, with the consultancy MERJ, analyzed its network's and nextjs.org's traffic for several months, and published on December 17, 2024 that none of the major AI crawlers rendered JavaScript: among them, OpenAI's (OAI-SearchBot, ChatGPT-User and GPTBot) and Anthropic's (ClaudeBot). They downloaded JavaScript files but did not execute them. The exceptions it pointed out were Gemini, which uses Googlebot's infrastructure, and AppleBot, which renders with a browser.⁠[4]Vercel, with MERJ. The rise of the AI crawler

Read that figure with its date and its scope: it is one company's measurement of its own network, from late 2024, and crawlers change. What does not change is the practical conclusion, which matches Google's: if a piece of data has to be readable by any crawler, it has to be in the initial HTML.

In a store

Fictional example. The same backpack product page, served two ways. With client-side rendering, the store's first response is this:

<body>
  <div id="app"></div>
  <script src="/assets/store.js"></script>
</body>

The name, the price and the structured data exist, but inside store.js, and they only appear when someone runs it. With server-side rendering, the first response already carries them:

<body>
  <h1>Hiking backpack 30 L</h1>
  <p class="price">$89.00</p>
  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Product",
      "name": "Hiking backpack 30 L"
    }
  </script>
</body>

On Shopify, themes are written in Liquid, which is resolved on the server, and Shopify recommends painting essential content that way, with Liquid and HTML, instead of with JavaScript frameworks in the browser: the initial HTML works without JavaScript.⁠[5]Shopify.dev. Render essential content server-side That is why a piece of data stored in metafields and painted by the theme arrives in the first response. Clione publishes its structured data through each platform's native routes, rendered on the server: a BigCommerce widget on BigCommerce, and metafields with a Shopify app embed on Shopify, without injecting them with JavaScript in the browser.

Warning:

What gets mixed up

The browser inspector does not show the initial HTML. It shows the DOM, that is, the page after JavaScript has modified it, so seeing the price or the JSON-LD there does not prove they are in the first response.⁠[1]web.dev (Addy Osmani and Jason Miller). Rendering on the Web The page's source code is for that.

How to check it

  1. Open the product page and look at the source code (in most browsers, Ctrl+U or Cmd+Option+U). That is the initial response. Look for the product name, the price and application/ld+json.
  2. Compare it with the inspector. What appears in the inspector and not in the source code was added by JavaScript afterward.
  3. Download it from the terminal, with no browser: curl -s https://your-store.example/products/backpack | grep "ld+json". If it returns nothing, the structured data is not in the initial HTML.
  4. Turn off JavaScript in the browser and reload the product page. Whatever disappears depends on JavaScript to be shown.
  5. Look at what Google rendered. The URL Inspection tool in Search Console and the one Google offers to check rich results, the Rich Results Test, show the rendered HTML.⁠[2]Google Search Central. Understand JavaScript SEO basics Remember that this is what Google sees after running JavaScript, not what a bot that does not run it sees.

JavaScript rendering is the step in which a browser, or a crawler like Googlebot, executes a page's scripts to get its final content. SSR aims to make that step unnecessary for reading the essentials: the content already arrives written out, and JavaScript only adds interactivity on top, as in hydration.⁠[1]web.dev (Addy Osmani and Jason Miller). Rendering on the Web A headless store can use either technique, which is why it pays to ask which one it uses before assuming its product pages can be read.

To keep going, the publishing by platform reading path explains how each piece of data reaches the store on Shopify and on BigCommerce.

Synonyms

English
server-side rendering, SSR
Español
renderizado en el servidor, renderizado del lado del servidor

Sources

  1. [1] web.dev (Addy Osmani and Jason Miller). Rendering on the Web. Accessed . ↑ ↑ ↑ ↑
  2. [2] Google Search Central. Understand JavaScript SEO basics. Accessed . ↑ ↑
  3. [3] Google Search Central. Dynamic rendering as a workaround. Accessed . ↑
  4. [4] Vercel, with MERJ. The rise of the AI crawler. Accessed . ↑
  5. [5] Shopify.dev. Render essential content server-side. Accessed . ↑

Change history

  • First English version.

This definition is published under CC BY 4.0. Reuse this definition freely, crediting Clione with a link to this page.

Make your catalog easy for bots to read

Clione fills every product page with what bots read best: the JSON-LD graph with its structured data, the meta description and the FAQs. You review and press Push; then we check your live store so it all stays published.