SEO London — Freelance SEO & AI Consultant
Technical SEODeep Dive

JavaScript SEO:
How Search Engines Render JS-Heavy Sites

JavaScript SEO is the discipline of ensuring that content rendered by JavaScript is discoverable, crawlable, and indexable by search engines. It matters because Googlebot does not process JavaScript the same way a browser does — and the gap between what a user sees and what Google indexes can silently suppress rankings for months.

By Freelance SEO & AI Consultant, London·7 July 2026·12 min read

How Googlebot renders JavaScript: the two-wave model

Googlebot operates in two waves. In the first wave, it fetches and processes HTML immediately — this is fast, typically within hours of a URL being discovered. In the second wave, it renders JavaScript using a headless Chromium instance. This second wave is queued and processed based on crawl budget and server capacity — it can take days, weeks, or in some cases months for JS-rendered content to be indexed.

The practical implication: if your page's critical content — the H1, the body text, the internal links, the structured data — is only present after JavaScript executes, Google may index an empty or skeletal version of the page during the first wave. That version can rank (or fail to rank) before the second wave corrects it.

In technical SEO audits of React and Vue applications, this is one of the most consistently found issues. A site that looks complete in a browser can appear nearly empty in Google's cached version — and the owner has no idea, because they only ever view the site in a browser.

Client-side rendering vs server-side rendering vs static generation

The rendering strategy you choose determines how reliably your content is indexed. Understanding the trade-offs is the foundation of JavaScript SEO.

StrategyHow it worksSEO riskBest for
Client-Side Rendering (CSR)Browser downloads JS bundle, executes it, renders HTMLHigh — content invisible until JS executes; indexing delayAuthenticated dashboards, tools not requiring SEO
Server-Side Rendering (SSR)Server renders full HTML on each request, sends to browserLow — full HTML available on first requestContent sites, e-commerce, any page requiring SEO
Static Site Generation (SSG)HTML pre-built at deploy time, served as static filesVery low — fastest possible first-byte timeBlogs, documentation, pages that change infrequently
Incremental Static Regeneration (ISR)Static pages rebuilt on a schedule or on-demandLow — combines SSG speed with dynamic content capabilityE-commerce product pages, news sites
Dynamic RenderingServes pre-rendered HTML to crawlers, JS to browsersLow for indexing, but adds infrastructure complexityLegacy CSR apps that cannot be migrated to SSR

How to diagnose JavaScript SEO issues

The fastest diagnostic is to compare what Google sees against what a browser renders. There are three methods:

Google Search Console URL Inspection

Use the URL Inspection tool in GSC to see Google's rendered version of any page. The 'More info' tab shows the rendered HTML. If your H1, body content, or structured data is absent from the rendered HTML, you have a JavaScript SEO problem.

curl / wget (raw HTML check)

Fetch the page with curl -L https://yoursite.com/page and examine the raw HTML. If your content is absent from the raw response, it is only present after JS execution — and therefore invisible to first-wave crawling.

Google's Rich Results Test

Run your URL through search.google.com/test/rich-results. This tool renders the page as Googlebot would and shows what structured data it finds. Missing schema that appears in your source code is a JS rendering failure.

JavaScript SEO best practices

Render critical content server-side

H1, meta description, canonical URL, structured data, and the first 200 words of body content should all be present in the server-rendered HTML.

Avoid lazy-loading critical content

Content that only loads after a user interaction (scroll, click) may never be seen by Googlebot. Ensure all indexable content is in the initial render.

Use canonical tags in server-rendered HTML

If your canonical tag is injected by JavaScript, Googlebot may process the page without it during first-wave crawling, creating duplicate content risk.

Test with JavaScript disabled

Disable JavaScript in your browser (DevTools → Settings → Disable JavaScript) and reload the page. What you see is approximately what first-wave Googlebot sees.

Monitor Google's rendered cache

Check the GSC URL Inspection tool monthly for key pages. The rendered HTML should match what a browser shows.

Avoid infinite scroll without pagination

Googlebot does not scroll. Content below the initial viewport in an infinite scroll implementation may never be crawled. Use pagination or a 'load more' button with a URL parameter.

From our work

A recurring pattern in technical audits of React-based sites: the site has been live for six to twelve months, rankings are flat despite good content, and the owner assumes the problem is link building. A GSC URL Inspection check reveals that Google's rendered version of the homepage is missing the H1, the main navigation links, and all structured data — because all of it is injected by JavaScript after the initial HTML load. Implementing SSR for the critical pages resolves the indexing issue within four to six weeks, and rankings begin moving without any additional link building.

Frequently asked questions

Can Googlebot crawl JavaScript?

Yes, but with a delay. Googlebot crawls HTML immediately and adds JavaScript rendering to a second wave queue. This two-wave process means JS-rendered content can take days or weeks to be indexed, compared to hours for server-rendered HTML.

Is client-side rendering bad for SEO?

Not inherently, but it introduces indexing risk. If your critical content — headings, body text, internal links, structured data — is only present after JavaScript executes, there is a window during which Googlebot may index an empty or incomplete page. Server-side rendering eliminates this risk.

What is dynamic rendering and when should I use it?

Dynamic rendering serves pre-rendered HTML to crawlers and JavaScript to browsers. It is a pragmatic workaround for sites that cannot implement SSR but need reliable indexing. Google acknowledges it as a valid approach, though SSR or SSG is preferable long-term.

Y

Freelance SEO & AI Consultant — London

Semantic SEO Specialist · Technical SEO · Koray Framework Practitioner

I audit and fix JavaScript SEO issues for London businesses — from GSC rendering diagnostics to SSR implementation and structured data validation. About me →

Related guides

Is JavaScript hiding your content from Google?

Technical SEO audits that include JavaScript rendering diagnostics — direct-to-consultant, no agency markup.

View Technical SEO Audit