SEO for local service businesses and ecommerce stores in the USA (888) 400-5050
Technical SEO

Client-side vs server-side rendering: assessing SEO risk in modern ecommerce frameworks

How rendering decides what crawlers see, how Google handles JavaScript and which approach is safest for product, category and landing pages.

Developer typing at a desk with two monitors showing code
Quick answer

Server-side rendering sends finished HTML from the server, so crawlers and visitors receive the content immediately. Client-side rendering sends a script that builds the page in the browser. Google can render JavaScript, but it adds delay and failure risk, so ecommerce category, product and landing pages are safer when rendered on the server.

Key takeaways
  • Rendering is the step that turns code into the page a visitor, or a crawler, actually sees.
  • Google processes JavaScript in three stages, crawling, rendering and indexing, and the rendering queue can add delay.
  • Pages that must rank, such as products, categories and facet landing pages, should arrive with their content in the initial HTML.
  • Client-side rendering is acceptable for private areas such as accounts, carts and checkout, which should not be indexed anyway.
  • Test every template with raw HTML, the URL Inspection tool and a rendering crawl before and after each release.

What is rendering, and why does it matter for SEO?

Rendering is the process of turning code, data and styles into the visible page. A browser performs it for every visitor, and a search engine performs a version of it when a page depends on JavaScript. Where the work happens, on the server or in the browser, decides what a crawler receives first.

What does a browser do with a page?

A browser downloads the HTML, then fetches styles and scripts, builds a model of the page called the Document Object Model and paints the result. If the HTML already contains the content, the browser mostly displays it. If the HTML is an empty shell, scripts must fetch data and build the content before anything meaningful appears. That difference is the whole subject of this article.

Why is the first response so important?

The first response is what every crawler sees without extra work. Anything present in it can be read immediately and by every search engine and tool. Anything added later depends on the crawler running scripts successfully, which is a further step that not every system performs equally well.

How does Google process JavaScript pages?

Google's documentation describes three phases: crawling, rendering and indexing. Googlebot fetches the URL and its HTML, queues pages that need JavaScript for rendering in a recent version of Chromium and then uses the rendered result for indexing. Rendering can be queued, so content that depends on it may be processed later than content in the raw HTML.

Is the old "two waves of indexing" idea still accurate?

People often describe the process as two waves, with a quick first pass and a later render. Google has said the queue is now usually short, so the practical lesson is not to fear long delays but to avoid unnecessary dependence on rendering for pages that matter most.

What is server-side rendering?

Server-side rendering, or SSR, means the server builds the full HTML for a URL at request time and sends it to the browser, which can display it at once. Scripts then "hydrate" the page, attaching interactivity to markup that already exists.

What are the advantages for SEO?

The content, links, titles, canonical tags and structured data are in the first response, so crawlers do not need to execute scripts to see them. This reliability extends to other search engines, social media preview bots and many analysis tools. It also tends to produce a fast first display, which helps the Largest Contentful Paint metric.

Which SEO elements benefit most?

Titles, meta descriptions, canonical links, robots directives, internal links, product lists and structured data all benefit, because they are the elements that crawlers read first and that must not be missing or inconsistent.

What are the costs and limits?

SSR needs a server that can build pages quickly under load, so hosting, caching and engineering effort rise. A slow server response delays the first byte, which can hurt both users and crawlers. Hydration can also add JavaScript weight that slows interaction if it is not managed carefully.

How does caching help?

A content delivery network or a page cache can store rendered HTML for common URLs, so that most requests avoid the cost of rebuilding. The cache must refresh when prices, stock or content change, which is why cache rules deserve as much attention as the rendering code.

What is client-side rendering?

Client-side rendering, or CSR, means the server sends a minimal HTML shell and a JavaScript bundle, and the browser builds the page by running the script and requesting data from an API. Many single-page applications work this way.

Why do teams choose it?

CSR can make navigation feel fast after the first load, simplifies hosting because the shell is a static file and suits highly interactive applications. Developers often prefer it because the same code handles all screens, and it was the default of many frameworks for years.

What is the usual trade-off?

The first load is slower, because the browser must download, parse and run the script and then fetch data before it can show content. For a store, that delay sits exactly where shoppers and crawlers first arrive.

What are the SEO risks of CSR?

Content is missing from the raw HTML, so crawlers must render the page to see it. If scripts fail, time out, are blocked by robots.txt or depend on user interaction, the crawler may see an empty page. Metadata and status codes set by script can be inconsistent, and some crawlers do not run scripts at all.

Which risks are most common on ecommerce sites?

Empty product grids in rendered HTML, titles and canonicals missing from the raw response, soft 404 pages that return a 200 status, links built as buttons instead of anchors and API endpoints blocked for crawlers appear again and again in audits of client-rendered stores.

Colorful HTML and CSS code on a dark screen
Server-side rendering delivers finished markup, so crawlers do not depend on running scripts.

What other rendering models exist?

Between pure SSR and pure CSR sit several hybrid models. Each trades build time, freshness and server cost differently, and most large stores use more than one.

What is static site generation?

Static site generation, or SSG, builds the HTML for pages ahead of time, during a build step, and serves the files from a CDN. It is extremely fast and reliable for pages that change rarely, such as guides and some category pages, but a very large catalog can make build times long.

How do you keep prices and stock current with SSG?

Fetch live price and availability data in the browser after the page loads, while keeping the descriptive content static, or rebuild affected pages when data changes. Make sure the visible price and the structured data agree.

What is incremental or on-demand regeneration?

Some frameworks regenerate static pages in the background when they become stale or when a webhook fires. This gives static speed with fresher content, and it scales to large catalogs because only requested or changed pages are rebuilt.

What is dynamic rendering?

Dynamic rendering serves a pre-rendered version to crawlers and the client-rendered version to visitors. Google has described it as a workaround, not a recommended long-term solution, because it adds complexity and the two versions can drift apart.

Should you use it?

Treat it as a temporary bridge when a rebuild is not yet possible. Verify the two versions match, and plan a move to server-side rendering or static generation.

How do the rendering models compare for SEO risk?

The table summarizes how each model behaves for the factors that matter most to an online store. Treat it as a guide for conversation, because results depend on how well each approach is implemented.

FactorSSRSSGCSR
Content in raw HTMLYesYesNo, usually an empty shell
Depends on crawler running scriptsNoNoYes
First display speedGood if the server is fastVery goodOften slower
Freshness of dataReal timeNeeds rebuild or regenerationReal time
Server cost and complexityHigherLower at runtimeLowest at runtime
Suitable for product and category pagesYesYes, with fresh data handlingRisky
Suitable for account, cart and checkoutPossibleRarelyYes

What does this mean for a store with several page types?

Use the safest model for pages that must rank and the simplest model for pages that must not. A hybrid application can render products and categories on the server, generate guides statically and keep the account area client-side. The rendering mode can usually be chosen per route.

Why does the choice affect other search engines and tools?

Google renders JavaScript with a recent browser engine, but other search engines, social media preview tools and some AI crawlers vary in how much script they run. Content in the initial HTML reaches all of them, which is a reason to prefer server delivery for anything you want widely understood.

How do you test what a crawler receives?

Test by comparing three views of every template: the raw HTML, the rendered HTML and the experience in a browser. A page that differs sharply between the first two is dependent on rendering and deserves attention.

How do you check the raw HTML?

Use the view-source option in a browser or fetch the URL with a command-line tool. Search for a product name, a title tag and a link. If they are not there, the page depends on scripts.

What should you look for?

Look for the page title, the meta robots tag, the canonical link, the main heading, the product list with links and structured data. Each missing element is a risk that you can record and assign.

How do you check the rendered HTML?

Run the live test in the URL Inspection tool in Google Search Console and open the tested page. The rendered HTML, a screenshot and a list of resources that failed to load show what Googlebot produced. A rendering crawler can repeat the comparison for thousands of URLs.

What does a blocked resource look like?

The tool lists scripts, styles or API calls that could not be loaded, often because a robots.txt rule blocks them. If the product data endpoint is blocked, the rendered page may show an empty product grid.

How do you check without JavaScript?

Disable JavaScript in the browser and reload the page. What remains is what a non-rendering crawler sees. It is a rough test, but it quickly exposes the empty-shell problem.

What are the most common rendering failures on stores?

The same handful of failures appear on most client-rendered stores. Knowing them lets you check for each one deliberately instead of hoping that a general audit will find them.

Why do soft 404 pages appear?

A single-page application often serves the same shell with a 200 status for every URL, even when the product does not exist. The visitor sees a "not found" message, but the crawler sees a successful page. The server or the rendering layer must return a real 404 for missing items.

Why do links fail?

Crawlers follow anchor elements with a real address in the href attribute. Navigation built with buttons or script click handlers does not create followable links, so category pages and facet landing pages may never be discovered.

How do you fix a link problem?

Render navigation as anchors with real URLs, and let a script enhance them for smooth transitions. The links then work for crawlers and for visitors whose scripts fail.

Why does metadata go wrong?

Titles, canonical tags and robots directives set only by script may be missing from the raw HTML or may change after load. Conflicts between the raw and rendered versions create uncertainty, so deliver critical metadata from the server.

What about structured data?

Google can read structured data injected by script, but it is safer to include it in the server response. Make sure the price and availability in the markup match what shoppers see.

How does rendering affect speed and Core Web Vitals?

Rendering strategy shapes Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift, the metrics in Google's Core Web Vitals. A fast first display and a light script load help both shoppers and search visibility.

How does CSR affect Largest Contentful Paint?

The largest visible element often arrives only after scripts download and data loads, which delays the metric. Server delivery of the main image and text, with the image prioritized, usually improves it. Our Core Web Vitals guide explains the thresholds.

How does hydration affect interaction?

A server-rendered page can look ready while its scripts are still loading, so taps may feel unresponsive. Splitting code by page, loading filter and cart scripts only where needed and avoiding large bundles keep interaction metrics healthy.

How does server speed come into it?

SSR depends on how quickly the server builds the HTML. A slow server response delays everything, which is why our article on server response time and crawl frequency pairs naturally with this one.

How do you choose a rendering approach for each page type?

Choose by asking whether the page must be found in search, how often its data changes and how heavy its interaction is. The answers point to a model for each template.

Which questions should you ask?

Does the page need to rank? How fresh must prices and stock be? How many such pages exist? What does the team know how to build and run? Answer for each template, not once for the whole site.

What does a typical mapping look like?

Product and category pages: server-side rendering or static generation with fresh data. Facet landing pages: server-side rendering with clean URLs. Guides: static generation. Search results, cart, account and checkout: client-side rendering with a noindex directive where relevant.

How do you migrate safely from CSR?

Start with the templates that earn the most organic revenue, add server rendering for them and keep the rest client-side. Test each template for raw HTML completeness, status codes and metadata, and release in stages so a problem affects a small part of the site. Our guide to JavaScript-based filters covers filter pages specifically.

JavaScript code displayed on a monitor
Client-side rendering builds the page in the browser, which adds a step that can fail or be delayed.

How do other search engines and AI crawlers handle JavaScript?

Googlebot renders pages with a recent version of Chromium, but not every system that reads your site does the same. Search engines such as Bing, social media preview bots, SEO tools and the crawlers that gather content for AI answer engines differ in how much script they run, how long they wait and what they extract.

Why does this matter beyond Google?

Visibility in search is no longer only about one crawler. Many shoppers discover products through several search engines, social previews and AI assistants, and each of them first reads whatever is in the HTML response. A product page whose name, description, price and reviews are in the initial HTML is understood by all of them without extra effort, while a page that depends on scripts may be partly or wholly invisible to some.

What should you assume about unknown crawlers?

Assume they read the raw HTML and may not run scripts. That cautious assumption costs little when you render on the server, and it protects you against the crawlers whose behavior you cannot test or control.

How do AI answer engines relate to rendering?

Systems that summarize or quote web pages need clean, extractable text. Server-delivered headings, short direct answers, lists and tables are easier to read and quote than content assembled by script. The practices that help rendering therefore also help your content appear accurately in AI-generated answers, although no one can guarantee inclusion.

How can you check what these crawlers see?

Fetch the raw HTML with a simple command-line request and read it as plain text. If the main content is readable there, most systems will be able to read it. If it is not, treat that as a priority issue.

What does a rendering problem look like on a real store?

The following example is illustrative, and it shows how a rendering problem is found and fixed. The store, its numbers and its outcomes are fictional, and they demonstrate a method rather than a benchmark.

What was the symptom?

A fictional outdoor equipment retailer rebuilds its store as a client-rendered single-page application. A few months later, organic traffic to category pages falls, and Search Console shows many category URLs listed as discovered or crawled but not indexed. In a browser, every page looks perfect, so the team assumes an algorithm change.

What did the investigation find?

The raw HTML of a category page is a short shell with a title that reads "Store" and no product links. The URL Inspection live test shows a rendered page in which the product grid is empty, because the API that supplies the products sits behind a robots.txt rule that blocks crawlers. Product pages return a 200 status even for discontinued items.

What fix did the team choose?

The team adds server-side rendering for category and product routes, so that the product list, the title, the canonical link and structured data are in the first response. They unblock the data endpoint, return real 404 responses for removed products and convert navigation items from buttons into anchors with real addresses. Cart, account and checkout stay client-rendered with a noindex directive.

How did they verify it?

They ran a rendering crawl on staging, comparing raw and rendered HTML for a sample of 500 URLs, then repeated it after release. They monitored the Pages report in Search Console and watched the number of indexed category pages recover over the following weeks. They also added the crawl comparison to the release checklist.

What does the example teach?

The fault was not "JavaScript" in general. It was a specific combination of an empty first response, a blocked data endpoint and missing status codes. Each of those can be tested, so the cure is a repeatable checking routine, not a debate about frameworks.

What myths about JavaScript and SEO should you retire?

Several persistent beliefs about JavaScript lead teams to either panic or relax at the wrong moment. Replacing them with accurate statements saves both time and money.

Is it true that Google cannot read JavaScript?

No. Google renders JavaScript with a recent version of Chromium and can index content that appears after scripts run. The accurate statement is narrower: rendering is an extra step with its own failure modes, so pages that depend on it carry more risk than pages whose content is in the initial HTML.

Is it true that server-side rendering guarantees good rankings?

No. Rendering affects whether content can be seen, not whether it deserves to rank. A server-rendered page with thin, duplicated content will still struggle, and a well-built client-rendered page with strong content may do fine. Rendering removes a risk. It does not create relevance.

What does rendering actually change?

It changes reliability, speed of discovery and how consistently different systems read your pages. Those are real benefits, and they matter most on large catalogs where small failures repeat thousands of times.

Is it true that frameworks decide your SEO outcome?

No. Popular frameworks can produce excellent or terrible results depending on configuration. What decides the outcome is whether each template delivers content, links, metadata and correct status codes, and whether someone tests that after every release.

How do you make the business case for fixing rendering?

Present rendering work as protection for revenue pages, with evidence from your own site and a small, staged plan. Developers and executives respond to specific, measurable problems far better than to general warnings.

What evidence persuades?

Show a side-by-side of the raw HTML and the rendered page for an important template, the share of organic revenue that lands on that template and any gap in Search Console between submitted and indexed URLs. A screenshot of an empty product grid in the rendered view is more convincing than a paragraph of explanation.

How do you scope a safe first step?

Choose one template with high organic value, such as the main category page, and move it to server delivery first. Measure indexing and traffic for that template for a few weeks before extending the change. A staged plan limits risk, builds confidence and produces evidence for the next stage.

What should you avoid promising?

Avoid promising a rise in rankings. The honest benefits are more reliable indexing, faster discovery of new products and fewer silent failures. Rankings may improve as a consequence, but they depend on many other factors.

What checklist should you use before launching a rendering change?

Use a short, fixed checklist for every release that touches templates, routing or the build, and run it on a staging copy before the change goes live. A checklist turns rendering from a source of surprises into a routine quality check.

Which checks cover content and links?

Confirm that the raw HTML of each template contains the main heading, the product or article content and real anchor links to the pages that should be discovered. Confirm that pagination links exist and that links do not rely on script click handlers.

Which checks cover metadata and status?

Confirm that every template returns the correct status code, that missing pages return a real 404, that each page has a unique title, a correct canonical and the intended robots directive in the server response, and that structured data is present and matches the visible price and availability.

What about resources and performance?

Confirm that robots.txt does not block scripts, styles or data endpoints needed to render. Measure Largest Contentful Paint and interaction responsiveness on a mid-range mobile device, and make sure that no new layout shifts have appeared.

How do you monitor rendering after launch?

Monitor with scheduled rendering crawls, Search Console reports and release checks, because rendering regressions are usually invisible in a browser. A front-end update can silently empty a page for crawlers while it looks perfect to your team.

Which checks should run on a schedule?

Run a rendering crawl of a sample of product, category and landing pages each week or month, comparing raw and rendered content, links and metadata with a stored baseline. Alert on large differences.

What should trigger an alert?

A drop in the number of links found, a missing title or canonical, an empty product list or a rise in soft errors on any sampled template should prompt a same-day review.

How should releases be gated?

Add the three tests, raw HTML, rendered HTML and status codes, to the release checklist for any change to templates, routing or the build process. Block the release if the tests fail.

How does AH SEO Agency help with rendering decisions?

We test your templates as a crawler meets them, document where content depends on scripts, recommend a rendering model for each page type and give developers precise requirements and acceptance tests. We then monitor after release so that regressions are caught early.

Where can you learn more?

See our technical SEO service, read our technical SEO audit checklist or request a free SEO audit.

What can you do this week?

Pick your three most valuable organic templates, usually the home page, the main category page and the best-selling product page. For each one, view the source and look for the heading, the product links and the title. Then run the live test in the URL Inspection tool and compare the rendered HTML with what you saw. Write down every difference. That one-hour exercise tells you whether rendering is a real risk for your store, and it gives you the evidence to start a conversation with your developers about the safest next step.

Summary: which rendering approach is safest for ecommerce SEO?

Deliver the content of pages that must rank in the initial HTML, using server-side rendering or static generation, and keep client-side rendering for private, interactive areas. Verify with raw HTML checks, the URL Inspection tool and rendering crawls on every release.

  • Rendering location decides what a crawler receives first.
  • Google renders JavaScript, but it adds delay and failure risk.
  • Product, category and facet landing pages are safest with server delivery.
  • Hybrid models let you match the rendering mode to each page type.
  • Continuous monitoring catches silent regressions.
FAQ

Frequently asked questions

Does Google index client-side rendered pages?

Google can render JavaScript and index the result, but rendering is an extra step that can be delayed or fail if scripts are blocked or slow. Content in the initial HTML is more reliable, and other crawlers may not run scripts at all.

Is server-side rendering better than client-side rendering for SEO?

For pages that must rank, usually yes, because content, links and metadata arrive in the first response. Client-side rendering suits private, interactive areas such as accounts and checkout.

What is the difference between SSR and SSG?

Server-side rendering builds the HTML when a page is requested. Static site generation builds it ahead of time and serves files. SSR is fresher, while SSG is faster and cheaper to serve.

Is dynamic rendering recommended?

Google describes dynamic rendering as a workaround, not a long-term solution, because it adds complexity and the crawler and visitor versions can drift apart. Prefer server-side rendering or static generation.

How can I see what Googlebot sees on a page?

Use the live test in the URL Inspection tool in Google Search Console and open the tested page to view the rendered HTML and screenshot, and compare it with the raw HTML from view-source.

Do I need to change my whole site to SSR?

No. Most stores choose the rendering mode per page type, using server-side rendering or static generation for products, categories and landing pages and keeping client-side rendering for carts and accounts.

Not sure where your site stands?

Send us your website and we will tell you what we would fix first, including if SEO is not your best next step.