Skip to main content

JavaScript SEO & Rendering

Brass-SEO · 5 entries · last verified August 2026

Brass-SEO tracks the official documentation on JavaScript rendering because a site that builds its content with client-side JavaScript can look empty to a crawler that has not run the script yet. The sources below come from Google's own Search Central docs and the HTTP Archive, and they explain why Brass-SEO's crawler classifies some pages as JS-rendered and falls back to a rendering service.

Contents — 5 entries
  1. 1.Understand JavaScript SEO Basics
  2. 2.Fix Search-Related JavaScript Problems
  3. 3.Dynamic Rendering as a Workaround
  4. 4.Rendering on the Web
  5. 5.Web Almanac 2024 — JavaScript Chapter
  6. Frequently Asked Questions

Understand JavaScript SEO Basics

Google Search Central. Updated March 2026.

Brass-SEO draws on this to explain why JavaScript content is not indexed instantly. Google documents that it processes a page in three phases — crawling, rendering, and indexing — and that rendering is deferred: 'Googlebot queues all pages with a 200 HTTP status code for rendering' and 'the page may stay on this queue for a few seconds, but it can take longer.' Only once resources allow does a headless, evergreen Chromium render the page and execute its JavaScript. The practical consequence is that content which exists only after JavaScript runs depends entirely on that second rendering pass, so a slow or broken script can delay or block indexing.

Examines:
Google's official description of the crawl-render-index pipeline, the rendering queue, and the evergreen Chromium renderer (Web Rendering Service).
Brass-SEO draws on:
The deferred render-queue mechanic — the basis for Brass-SEO's explanation of why JS-dependent content can be slow to index or invisible to search.

Fix Search-Related JavaScript Problems

Google Search Central. Updated December 2025.

Brass-SEO uses this to set expectations about what the renderer will and will not do. Google states that its Web Rendering Service 'does not retain state across page loads' — Local Storage, Session Storage, and cookies are cleared between pages — and that Googlebot 'does not support other types of connections, such as WebSockets or WebRTC.' Content that appears only after a user interaction, a stored session, or a real-time socket connection is therefore at risk of never being seen. The fix is to make primary content present in the rendered HTML without requiring those mechanisms.

Examines:
Google's documented limits on the Web Rendering Service: no retained state across loads, no WebSocket or WebRTC support, and content-fingerprinting guidance for cached resources.
Brass-SEO draws on:
The WRS limitations — cited when Brass-SEO advises that primary content must render without interaction, sockets, or stored state.

Dynamic Rendering as a Workaround

Google Search Central. Updated December 2025.

Brass-SEO references this to steer sites away from a dated fix. Google now states plainly that 'dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines,' because it 'creates additional complexities and resource requirements.' Google instead recommends server-side rendering, static rendering, or hydration. For a small business choosing a platform or a build approach, the guidance is to render content on the server or at build time rather than bolting on a separate crawler-only rendering path.

Examines:
Google's current position that dynamic rendering is a deprecated workaround, with server-side rendering, static rendering, and hydration as the recommended alternatives.
Brass-SEO draws on:
The deprecation of dynamic rendering — cited when Brass-SEO recommends server or static rendering over crawler-specific workarounds.

Rendering on the Web

web.dev (Google). Published 2019, updated January 2026.

Brass-SEO draws on this to explain the rendering choices behind the platforms users build on. The article documents that server-side rendering 'generally produces a fast FCP' by avoiding shipping large amounts of JavaScript, that static rendering 'achieves a consistently fast TTFB because the HTML for a page does not have to be dynamically generated,' and that hydration carries a cost — a server-rendered page 'can't actually respond to input until the client-side scripts ... have been executed.' The takeaway Brass-SEO carries to users: content rendered on the server or at build time is the most reliable for both crawlers and speed.

Examines:
Google's engineering guide to rendering strategies — server-side, static, client-side, and hydration — and their measured effects on first paint, time to first byte, and interactivity.
Brass-SEO draws on:
The performance and crawlability trade-offs between rendering strategies — cited when Brass-SEO explains why SSR or static rendering beats client-only rendering for SEO.

Web Almanac 2024 — JavaScript Chapter

HTTP Archive. Published March 2025.

Brass-SEO cites this for the scale of JavaScript on the real web. The 2024 analysis found the median page ships 558 KB of JavaScript on mobile and 613 KB on desktop, makes 22 JavaScript requests at the median on mobile, and that 44% of delivered JavaScript bytes go unused during page load at the median. Heavy, partly-unused JavaScript is the norm, not the exception — which is exactly the condition that makes rendering slow and crawling fragile. Brass-SEO uses these figures to ground its advice that trimming and deferring non-essential scripts helps both users and crawlers.

Examines:
HTTP Archive's measurement of JavaScript usage across millions of sites: median payload size, request counts, unused bytes, and library adoption.
Brass-SEO draws on:
The 558 KB median payload and 44% unused-bytes figures — cited when Brass-SEO explains the real-world cost of heavy JavaScript on rendering and crawl.

Frequently Asked Questions

Does Google execute JavaScript when crawling a site?

Yes. Google documents that it renders pages with a headless, evergreen version of Chromium and executes their JavaScript. However, rendering is deferred: Googlebot first crawls the raw HTML, queues the page for rendering, and runs the JavaScript only when resources allow — which can take seconds or longer. Content that exists only after JavaScript runs depends on that second pass, so a broken or slow script can delay or prevent indexing.

Why would a JavaScript site show up empty in search?

If a page's primary content is added by client-side JavaScript and the script fails, is blocked by robots.txt, or relies on something the renderer does not support, Google may index the page in its pre-rendered state — which can be nearly empty. Google's Web Rendering Service also clears Local Storage, Session Storage, and cookies between page loads and does not support WebSocket or WebRTC connections, so content that depends on those will not appear.

Is dynamic rendering still recommended?

No. Google now describes dynamic rendering as 'a workaround and not a long-term solution' that 'creates additional complexities and resource requirements.' Google recommends server-side rendering, static rendering, or hydration instead — approaches that put the content in the HTML for every visitor, crawler or human, rather than maintaining a separate crawler-only path.

How much does JavaScript slow a typical page down?

The 2024 Web Almanac found the median page ships 558 KB of JavaScript on mobile and 613 KB on desktop, with 44% of delivered JavaScript bytes unused during load at the median. Heavy and partly-unused JavaScript is normal across the web, and it is a common cause of slow rendering and fragile crawling. Trimming, splitting, and deferring non-essential scripts helps both Core Web Vitals and indexability.