ssrchecker
HomeCheckPlatformsShopify

Is your Shopify store rendering content? (Liquid themes: yes)

Short answer
Standard Shopify themes are built in Liquid, which Shopify renders on its own servers, so product titles, descriptions and prices are in the HTML before it's sent. The content that commonly goes missing is app-injected: reviews, upsells and recommendation blocks that load their content with JavaScript after the page renders. Headless and custom React storefronts are the other case to check.

Shopify is a hosted commerce platform, not a JavaScript framework, so the core of your store is server-rendered whether you think about it or not. Liquid runs on Shopify's servers. That makes the Shopify diagnosis distinctive: the theme itself is almost always fine, and the content that slips out of the HTML tends to be the stuff apps add — which is often exactly the content (reviews, rich descriptions) you want indexed.

Check your Shopify store
https://

Why Liquid themes are safe by default

Liquid is Shopify's server-side templating language. When a request comes in, Shopify runs the theme's Liquid templates on its own infrastructure, pulls the product, collection or page data, and returns finished HTML. Product name, description, price, variants and your theme copy are all in that HTML. There is no client-side rendering step in a standard theme — the browser receives a complete page.

So a normal Shopify product or collection page returns a high content ratio with metadata present in this check. If your store is a stock or lightly customised Liquid theme with your product content written in the Shopify admin, the theme layer is not your problem. Look at what apps have added.

App-injected content is the real Shopify issue

This is the Shopify-specific failure, and it is extremely common. Shopify apps extend your store by injecting content into the page with JavaScript after it loads. Product-review apps like Judge.me, Loox and Yotpo add star ratings, review text and Q&A. Upsell, bundle and recommendation apps add cross-sell copy. Size-chart, wishlist and social-proof apps add their own blocks. All of this typically arrives after the initial HTML, injected client-side.

Why this one stings
The content apps inject is often the content with the most SEO value — reviews are unique, keyword-rich, user-generated text, and they are a frequent target for rich-result stars. If that text is injected by JavaScript and absent from the HTML, first-pass crawlers and AI crawlers that don't run JavaScript never see it. Compare the raw and rendered panes in this check: content that appears only in the rendered screenshot — the reviews block, the "you may also like" row — is what an app added client-side. Some review apps offer a server-side or SEO-friendly rendering option or a metafield-based approach; prefer those for review content you want indexed.

Hydrogen and headless storefronts

Shopify has its own framework for custom storefronts, Hydrogen, built on React and typically hosted on Oxygen. The good news: Hydrogen server-renders by default — it is built around React Server Components, so a conventionally built Hydrogen store delivers content in the HTML and reads green in this check.

The case to watch is a customheadless storefront that is not Hydrogen — a plain React or single-page app that pulls product data from Shopify's Storefront API in the browser. That is an ordinary client-side rendering problem wearing a Shopify backend: the storefront hands crawlers an empty shell and fetches everything after load. Run this checker against the live storefront URL, and if it is a client-rendered React app, the React page describes the fix.

Side-by-side comparison of a Shopify product page's raw HTML with the description and price present but the app-injected reviews block missing until JavaScript runs
The Shopify pattern: product content server-rendered, the reviews block injected by an app after load.

AJAX sections and infinite scroll

A couple of theme-level patterns can also move content out of the HTML. Online Store 2.0 themes can load sections — recommended products, related items, sometimes reviews — through Shopify's Section Rendering API after first paint, so those sections are not in the initial response. And infinite-scroll collection pages load only the first batch of products server-side, fetching the rest with JavaScript as you scroll, which leaves deep collection content uncrawled. For collections that matter, use real paginated URLs so every product sits on a crawlable page.

Your configuration and the verdict to expect

Find your setup. On Shopify, an amber result almost always means an app or a section is injecting content client-side; a red result usually means a custom client-rendered headless build.

SetupExpectWhy
Standard Liquid theme (Dawn or similar)SSRShopify renders Liquid on its servers; product content is in the HTML. The default good case.
An Online Store 2.0 theme, static sectionsSSRSections rendered server-side into the HTML at request time.
Hydrogen storefront (default, React Server Components)SSRShopify's own framework server-renders by default. Green when built conventionally.
Custom headless storefront on plain React, client fetchCSRA React SPA pulling the Storefront API in the browser hands crawlers a shell.
Product reviews from an app (Judge.me, Loox, Yotpo)HYBRIDReview stars and text are injected by the app's JS after load, not in the HTML.
Upsell / bundle / recommendation app blocksHYBRIDApp-injected cross-sell copy loads client-side and isn't in the initial HTML.
Sections loaded via the Section Rendering APIHYBRIDRelated/recommended sections fetched after first paint aren't in the raw HTML.
Infinite-scroll collection pagesHYBRIDProducts past the first page load via JS; deep collection content is missing.

When Shopify actually breaks

01
Review content injected by an app
The most common and most costly, because reviews are high-value unique text and star-rating rich results. If it's absent from the HTML, use the app's server-side/SEO rendering option or a metafield-based approach.
02
A custom headless storefront rendering client-side
A plain React app on the Storefront API hands crawlers a shell. Diagnose it as a React SPA and server-render it — or use Hydrogen, which server-renders by default.
03
Upsell and recommendation blocks loaded by JS
Cross-sell copy from apps loads after render. Usually lower stakes than reviews, but it's not in the HTML either.
04
Sections fetched via the Section Rendering API
Related-product and recommendation sections loaded after first paint are missing from the raw HTML. Render indexable sections statically.
05
Infinite-scroll collections
Only the first batch of products is server-rendered; the rest load on scroll. Deep collection content stays uncrawled without paginated URLs.

Shopify rendering FAQ

Standard Shopify themes are. They are built in Liquid, Shopify's server-side templating language, which Shopify renders on its own servers before sending the page. Product titles, descriptions, prices and theme content are in the HTML without any client-side rendering. The exceptions are custom headless storefronts and content that apps inject with JavaScript after load.