Search Central LiveDeep Dive Europe 2026

Knowledge base v2.13.0 · Community edition · data through 2 October 2026

Topic · Rendering and JavaScript

JavaScript SEO pitfalls and fixes

Google's four common JavaScript indexing problems were content missing from the rendered HTML (the most common), # URLs, soft 404s and blocked resources; content goes missing when Googlebot cannot access the JavaScript, when it waits for a click or other DOM event, when it needs a disabled browser API, or when it appears too late. Single-page apps that return 200 for unknown routes create soft 404s, extending Day 1's soft 404 problem; Google's documented fixes are a real 404 or, where that is impractical, a JavaScript redirect to a URL that returns 404 or a noindex added with JavaScript, whereas removing a noindex with JavaScript does not work. Blocking script or API paths in robots.txt, on the page's host or on a separate API host, stops the renderer running them; Google recommended fast-rendering JavaScript, server-side or hybrid rendering, fallbacks, differential serving and polyfills, and called renderable content important today and tomorrow as AI systems increasingly ground answers, which extends Day 1's advice to keep content crawlable for AI tools. Community speakers added blind spots Google's documentation does not cover: prices and offers that differ between raw and rendered HTML, timeout placeholders that hit different pages each time, Content Security Policy blocks, pages that render blank while the raw HTML looks fine, and per-session-billed tools that also run for bot renders, which one speaker said can cost a high-traffic site thousands of euros a month. One community speaker urged putting everything you want AI systems to cite into server-rendered HTML, because some cannot render JavaScript yet. Day 3 put the delay in numbers: content added by JavaScript is typically seen by Google's indexing within a few hours and at worst within weeks, and Google's own speaker doubted that every URL gets rendered (said at the event). Author’s view: Google's JavaScript guide says every page returning 200 is queued for rendering, but queued is not rendered, so critical content, links and meta tags belong in the server HTML. A second recording of Day 2 confirmed several of these points: a client-rendered page that renders empty for Google is seen as thin content before it becomes a soft 404, the product links in the debugging example sat behind onclick handlers, and when the JavaScript is not accessible parts of a page may render while the main content is absent. John Mueller added that when Google finds a noindex in the HTML it drops the page without processing its JavaScript, so robots meta tags belong in the HTML exactly as intended; Google's guide says it may skip rendering. In the retail example the rendered page promised a bigger newsletter discount than the raw HTML (the two recordings disagree on the figures), and a community speaker warned that a Content Security Policy blocking a video on a key landing page could hurt a purely online business badly. In the Day 1 Q&A, captured by an audio recording, Google said as a fun fact that JavaScript was used for the language-consolidation redirects in its own site migration, because it was the only option available to the person doing it. Author’s view: Google's redirects guide says Google Search follows JavaScript redirects only after rendering and may never see one if rendering fails, so use them only when server-side or meta refresh redirects are impossible.

What to do

  • Ship everything indexing depends on in the server HTML, and server-render or pre-render the templates that must rank.
  • Return a real 404 for unknown routes in single-page apps; where that is impractical, redirect with JavaScript to a URL that returns 404 or add noindex with JavaScript.
  • Check robots.txt on every host a page loads scripts and APIs from, and carve out only what rendering needs, for example Disallow: /api/ with Allow: /api/products/.
  • Diff raw and rendered HTML per template for prices, offer counts, links and meta tags, and scan recurring crawls for unresolved placeholders, rendering each URL more than once.
  • Wrap permission-based APIs and WebGL in feature detection with fallbacks, and use differential serving and polyfills where Google's renderer lacks a feature.
  • Compare the session counts that per-session-billed tools charge for with real user sessions, and load those tools only after a user interaction.

Day 1: Crawling 2

Said on stage 1

StageNot in docsD1-C541

A Google panelist said, as a fun fact, that JavaScript was used for the language-consolidation redirects in Google's own site migration, because it was the only option available to the person doing it (the recording does not make fully clear whether the JavaScript performed the redirects or built the mapping).

Speaker not identifiedIn Day 1, 16:35 · Q&AEvidence transcript

Used byrequirement DEV-CAN-01

  • Extends D1-C479 Day 1: Where content was duplicated across languages, Google's own site consolidation redirected two language…
  • Extended by D1-C542 Day 1: Google's redirects guide says Google Search follows JavaScript location redirects only after rendering, may…

Analysis by the author 1

AnalysisD1-C542

Google's redirects guide says Google Search follows JavaScript location redirects only after rendering, may never see one if rendering fails, and should be used only when server-side or meta refresh redirects are impossible; its site move guide asks for server-side permanent redirects (301 or 308) where technically possible. The JavaScript in Google's own migration was a fallback ('my only option'), not a pattern to copy.

Author Ibrahim AnjroAnnotates Day 1, 16:35 · Q&A

Used byrequirement DEV-CAN-01

  • Extends D1-C541 Day 1: A Google panelist said, as a fun fact, that JavaScript was used for the language-consolidation redirects in…

Day 2: Indexing 119

Shown on screen 25

SlideConsistent with docsD2-C040

Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not click, so the JavaScript is never triggered.

Speaker Cherry PrommawinIn Day 2, 10:25 · How is HTML interpretedEvidence slide photo, transcript

Used byrequirement DEV-URL-02

  • Repeats D1-C115 Day 1: Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the…
  • Extended by D2-C184 Day 2: Google follows links in <a href> elements; a link that only runs an onclick handler, or a hash pseudo-link…
  • Extended by D2-C287 Day 2: A link that is an <a> element but does not point to a real URL gives Google something to look at, but Google…
SlideConsistent with docsD2-C106

A slide said robots meta rules can be added to a page's HTML with JavaScript, but doing so takes more time.

Speaker John MuellerIn Day 2, 10:30 · Controlling indexingEvidence slide photo, transcript

Used byrequirement DEV-REN-05

  • Extended by D2-C853 Day 2: John Mueller recommended putting robots meta tags directly in a page's HTML exactly as intended, and adding…
SlideConsistent with docsD2-C108

Removing a robots restriction such as noindex with JavaScript does not work, a slide said.

“But... it takes more time, and removing restrictions (like "noindex") doesn't work.”

Wording checked against the slide or recording

Speaker John MuellerIn Day 2, 10:30 · Controlling indexingEvidence slide photo, transcript

Used byrequirement DEV-REN-05

  • Extended by D2-C852 Day 2: When Google finds a noindex rule in a page's HTML, it drops the page without even processing its JavaScript…
SlideConfirmed by docsD2-C184

Google follows links in <a href> elements; a link that only runs an onclick handler, or a hash pseudo-link such as href=#/products, may be invisible to Google.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-URL-02

  • Extends D1-C115 Day 1: Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the…
  • Extends D2-C040 Day 2: Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not…
SlideConfirmed by docsD2-C185

The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>, combined with History API routing (window.history.pushState) instead of hash routes.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo

Used byrequirement DEV-URL-03

  • Repeated by D2-C285 Day 2: Google recommends the History API to give single-page apps clean URLs instead of fragment-based routes.
  • Extended by D2-C288 Day 2: With the History API, a single-page app can use real links and attach event listeners that intercept the…
SlideConfirmed by docsD2-C201

Tab or accordion content fetched from an API only when a user clicks the tab, as in tab.onclick = () => fetch('/api/specs'), does not exist for Google until someone clicks.

“Doesn't exist until someone clicks”

Wording checked against the slide or recording

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo

Used byrequirement DEV-REN-02

  • Extends D1-C115 Day 1: Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the…
SlideConfirmed by docsD2-C204

Blocking JavaScript or API resources in robots.txt is a classic rendering mistake: if Google's renderer cannot fetch a resource, it cannot run it.

“If the renderer can't fetch it, the renderer can't run it.”

Wording checked against the slide or recording

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-REN-04

  • Extends D1-C064 Day 1: The crawler has multiple tasks: fetch from the internet, ensure it doesn't break the internet, and enforce…
  • Repeated by D2-C265 Day 2: Blocked resources, one of Google's four common JavaScript indexing problems, means robots.txt disallowing the…
  • Repeated by D2-C296 Day 2: If robots.txt blocks JavaScript that client-side code needs to render, Google cannot render the content that…
SlideConsistent with docsD2-C205

Disallowing a script folder such as /static/js/ or a generic /api/ folder in robots.txt can block the endpoints that supply a page's content, leaving blank modules and missing content after rendering.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo, transcript

SlideConsistent with docsD2-C207

If an API folder must stay blocked in robots.txt, allow the endpoints that rendering needs, for example Disallow: /api/ together with Allow: /api/products/.

“Carve out only what rendering needs.”

Wording checked against the slide or recording

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-REN-04

SlideConsistent with docsD2-C260

Google listed four common JavaScript problems for indexing: content not present in the rendered HTML, using # in URLs for content changes, soft 404s and blocked resources.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence slide photo, transcript

SlideConfirmed by docsD2-C262

Content that is not in the final DOM after rendering cannot be seen by Google, so it cannot be indexed.

“If it's not in the final DOM, Google can't see it.”

Wording checked against the slide or recording

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence slide photo, transcript

Things

Used byrequirement DEV-REN-02

  • Repeats D2-C174 Day 2: Whatever is in the DOM at the moment Google's rendering finishes is what likely gets indexed.
SlideConfirmed by docsD2-C264

Google's slide defined a soft 404 in a JavaScript application as a page that serves a 'Not Found' message but returns a 200 HTTP status code.

“Your application serves a "Not Found" message but returns a 200 HTTP status code.”

Wording checked against the slide or recording

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-ERR-02

  • Repeats D1-C073 Day 1: A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It…
SlideConsistent with docsD2-C265

Blocked resources, one of Google's four common JavaScript indexing problems, means robots.txt disallowing the crawling of critical JavaScript files or API endpoints.

“robots.txt disallowing crawling of critical .js or API endpoints.”

Wording checked against the slide or recording

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-REN-04

  • Repeats D2-C204 Day 2: Blocking JavaScript or API resources in robots.txt is a classic rendering mistake: if Google's renderer…
SlideConsistent with docsD2-C266

Google named three causes of content missing from the rendered HTML: JavaScript inaccessible to Googlebot, JavaScript DOM event triggers and disabled browser APIs.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence slide photo, video, transcript

SlideConfirmed by docsD2-C284

URL fragments (#) are often ignored by crawlers: a fragment exists only in the browser, so Google cannot request it.

“Fragment identifiers (#) are often ignored by crawlers.”

Wording checked against the slide or recording

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-URL-03

  • Repeats D1-C101 Day 1: Google's faceted navigation guide prefers prevention: disallow filter URLs in robots.txt and keep crawlable…
SlideConfirmed by docsD2-C285

Google recommends the History API to give single-page apps clean URLs instead of fragment-based routes.

“Use the History API for clean URLs in SPAs.”

Wording checked against the slide or recording

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-URL-03glossary term History API

  • Repeats D2-C185 Day 2: The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>…
SlideConfirmed by docsD2-C336

Google listed four common causes of soft 404s: pages that look like errors but are not, thin or empty content, server or CMS misconfigurations, and JavaScript-dependent content that fails to load.

Speaker Gary IllyesIn Day 2, 11:30 · Understanding what's on a pageEvidence slide photo, transcript

Things

Used byrequirement DEV-ERR-03

  • Extends D1-C073 Day 1: A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It…
  • Extends D2-C213 Day 2: A page that renders empty for Google, such as a client-side product page hit by these mistakes, is seen as…
SlideConsistent with docsD2-C389

Whether a page can load is really important for canonical selection: a broken certificate, failing JavaScript or a page that cannot be loaded counts against a URL, and the slide also listed meta refresh and security.

Speaker John MuellerIn Day 2, 11:55 · Handling web duplicationEvidence slide photo, transcript

Used byrequirement DEV-CAN-02

Said on stage 58

StageConsistent with docsD2-C852

When Google finds a noindex rule in a page's HTML, it drops the page without even processing its JavaScript, so a script cannot switch the page back to indexable, John Mueller said.

“we will see the noindex and say, oh, we will get rid of this page; we won't even process the JavaScript”

Speaker John MuellerIn Day 2, 10:30 · Controlling indexingEvidence transcript

Used byrequirement DEV-REN-05

  • Extends D2-C108 Day 2: Removing a robots restriction such as noindex with JavaScript does not work, a slide said.
StageConfirmed by docsD2-C853

John Mueller recommended putting robots meta tags directly in a page's HTML exactly as intended, and adding them with JavaScript only where that is not possible, as in a JavaScript web app.

Speaker John MuellerIn Day 2, 10:30 · Controlling indexingEvidence transcript

Used byrequirement DEV-REN-05

  • Extends D2-C106 Day 2: A slide said robots meta rules can be added to a page's HTML with JavaScript, but doing so takes more time.
StageConsistent with docsD2-C124

Google's simple solution for the extra time of live page reads is to make JavaScript-generated content render quickly and efficiently, or to use server-side rendering.

Speaker Erin SparlingIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

Things

Used byrequirements DEV-PRF-02, DEV-REN-01

  • Extends D1-C056 Day 1: Myth: your website is no longer relevant. Google's answer: keep content crawlable, well structured, fast and…
StageConsistent with docsD2-C134

Google urged sites to make sure their JavaScript content can be crawled, rendered and indexed, calling this important today and also tomorrow, as AI systems increasingly ground answers to user requests.

Speaker Erin SparlingIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

  • Extends D1-C056 Day 1: Myth: your website is no longer relevant. Google's answer: keep content crawlable, well structured, fast and…
StageConsistent with docsD2-C139

A community speaker strongly advised putting everything you want cited into the raw, server-side rendered HTML, especially for AI systems that cannot render JavaScript yet.

“everything you want cited, include it in the raw HTML, server-side rendered”

Speaker Sören BendigIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

Used byrequirement DEV-REN-01

  • Extends D1-C056 Day 1: Myth: your website is no longer relevant. Google's answer: keep content crawlable, well structured, fast and…
StageConsistent with docsD2-C140

In a navigation example, the main navigation was in the raw HTML and would survive a rendering failure, but the whole sub-navigation was built by JavaScript, so all of its links would be inaccessible to bots if rendering broke.

Speaker Sören BendigIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

StageNot in docsD2-C149

A search engine's renderer does not wait forever before taking its snapshot, so content from slow internal systems or APIs can be missing and unresolved placeholders can end up in the final snapshot, a community speaker said.

Speaker Sören BendigIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

Used byrequirement DEV-REN-06

  • Extended by D2-C259 Day 2: Erin Sparling named server-side or hybrid rendering, fallbacks and not leaving placeholders in the DOM, among…
  • Extended by D2-C263 Day 2: Content is missing from the rendered HTML either because the server does not serve it or because the content…
StageD2-C156

Content Security Policy is often misunderstood: on a page of a large German banking group, a video that should have been shown was blocked by a CSP violation, which also appeared in the browser console.

Speaker Sören BendigIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

  • Extended by D2-C859 Day 2: A rendering failure such as a Content Security Policy blocking a video on a landing page that explains how to…
StageConfirmed by docsD2-C157

Never block a resource that a page needs for rendering with robots.txt, a community speaker said, calling this common sense.

Speaker Sören BendigIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

StageD2-C183

A community speaker listed four common but often overlooked JavaScript rendering mistakes: non-crawlable link markup, error pages that return HTTP 200 in single-page apps, content behind user interaction, and JavaScript or API resources blocked in robots.txt.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript, 3 slide photos

Used byglossary term Single-page app (SPA)

StageConfirmed by docsD2-C190

In single-page apps, a missing page often shows a custom 404 page while the server returns HTTP 200, because the front-end router, not the server, handles the 404.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

Used byrequirement DEV-ERR-02glossary term Single-page app (SPA)

  • Extends D1-C073 Day 1: A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It…
  • Repeated by D2-C291 Day 2: In JavaScript single-page apps, soft 404s typically arise because the server returns the app with a 200…
StageConsistent with docsD2-C191

The fix for a client-side soft 404 is to make a missing page end with a real HTTP 404 status code instead of 200.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

Used byrequirement DEV-ERR-02

  • Extended by D2-C292 Day 2: The fix for a client-side soft 404 is to serve a real 404 error page where appropriate; how to detect URLs…
StageConfirmed by docsD2-C213

A page that renders empty for Google, such as a client-side product page hit by these mistakes, is seen as thin content and ends up treated as a soft 404 even though users see a full page.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

Things

Used byrequirements DEV-ERR-03, DEV-REN-04

  • Extends D1-C073 Day 1: A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It…
  • Extended by D2-C336 Day 2: Google listed four common causes of soft 404s: pages that look like errors but are not, thin or empty…
StageD2-C214

A community speaker summed up JavaScript rendering issues as cases where search engines cannot execute, access or trigger the code needed to display a page's core content.

“JavaScript rendering issues happen when search engines cannot execute, access or trigger the code required to display your core content.”

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

StageD2-C859

A rendering failure such as a Content Security Policy blocking a video on a landing page that explains how to open a business account could have a drastic impact for a purely online business, a community speaker warned.

Speaker Sören BendigIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

Things
  • Extends D2-C156 Day 2: Content Security Policy is often misunderstood: on a page of a large German banking group, a video that…
StageConsistent with docsD2-C259

Erin Sparling named server-side or hybrid rendering, fallbacks and not leaving placeholders in the DOM, among other measures, as ways to guard against failed JavaScript rendering.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

Used byrequirement DEV-REN-06

  • Extends D2-C149 Day 2: A search engine's renderer does not wait forever before taking its snapshot, so content from slow internal…
StageConsistent with docsD2-C267

When the JavaScript is not accessible to Googlebot, Google cannot render the client-side DOM that the page builds asynchronously, so parts of the page may be present while the main content is absent.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

StageConfirmed by docsD2-C274

Content loaded as elements enter the viewport, for example with an Intersection Observer, does load when Google renders a page, because Google's rendering viewport is very tall.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

Things

Used byrequirement DEV-REN-03

  • Repeats D2-C199 Day 2: An Intersection Observer fires when the observed element enters the viewport, and the viewport Google renders…
StageNot in docsD2-C281

Polyfills work in two directions: they patch backwards where a browser lacks support, or patch forward to build now for a feature expected in the future, as Web Fragments does.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

  • Extends D2-C254 Day 2: Natalia Venditto said the ShadowRealm proposal would do much of what Web Fragments does today with patches…
StageConfirmed by docsD2-C288

With the History API, a single-page app can use real links and attach event listeners that intercept the click, rewrite the URL with pushState and load the new content, so Google can follow the links while users avoid full page reloads.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

Used byrequirement DEV-URL-03glossary terms History API, Single-page app (SPA)

  • Extends D2-C185 Day 2: The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>…
StageConfirmed by docsD2-C291

In JavaScript single-page apps, soft 404s typically arise because the server returns the app with a 200 status for every URL, so when the app shows a 'not found' message for a URL that does not exist, no error is reported.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

Used byrequirement DEV-ERR-02

  • Extends D1-C073 Day 1: A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It…
  • Repeats D2-C190 Day 2: In single-page apps, a missing page often shows a custom 404 page while the server returns HTTP 200, because…
StageConsistent with docsD2-C292

The fix for a client-side soft 404 is to serve a real 404 error page where appropriate; how to detect URLs that do not exist depends on how the app works and where it is hosted.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

  • Extends D2-C191 Day 2: The fix for a client-side soft 404 is to make a missing page end with a real HTTP 404 status code instead of…
StageConfirmed by docsD2-C293

In an app routed with the History API, when a user reaches a page that does not exist, Erin Sparling suggested asking how they got there and redirecting to a real 404 page.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

StageConfirmed by docsD2-C296

If robots.txt blocks JavaScript that client-side code needs to render, Google cannot render the content that the JavaScript would produce.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

Used byrequirement DEV-REN-04

  • Extends D1-C064 Day 1: The crawler has multiple tasks: fetch from the internet, ensure it doesn't break the internet, and enforce…
  • Repeats D2-C204 Day 2: Blocking JavaScript or API resources in robots.txt is a classic rendering mistake: if Google's renderer…

What Google's documentation says 12

DocsSourceD2-C043

Google's link best practices say Google can generally crawl a link only if it is an a element with an href attribute, and list routerLink without href, href on a span, onclick-only a elements and javascript: URLs as not recommended, while noting that Google may still attempt to parse them.

Publisher Google Search CentralAnnotates Day 2, 10:25 · How is HTML interpreted

Used byrequirements DEV-URL-01, DEV-URL-02

DocsSourceD2-C079

Google's robots meta tag specification says data-nosnippet may be extracted both before and after rendering, so the attribute should not be added to or removed from existing elements with JavaScript.

Publisher Google Search CentralAnnotates Day 2, 10:30 · Controlling indexing

Used byrequirements DEV-IDX-07, DEV-REN-05

DocsSourceD2-C854

Google's JavaScript SEO basics guide says that when Google encounters a noindex rule it may skip rendering and JavaScript execution, so using JavaScript to change or remove a noindex robots meta tag may not work as expected.

“it may skip rendering and JavaScript execution”

Publisher Google Search CentralAnnotates Day 2, 10:30 · Controlling indexing

Used byrequirement DEV-REN-05

DocsSourceD2-C131

Google's JavaScript SEO guide says Googlebot sends every page with a 200 HTTP status code to the rendering queue, whether or not it contains JavaScript, unless a robots meta tag or header tells Google not to index it, and Google uses the rendered HTML to index the page.

Publisher Google Search CentralAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

Used byrequirement DEV-REN-01glossary term Rendering

  • Extended by D3-C676 Day 3: The stage doubt that every URL gets rendered sits beside Google's JavaScript guide, which says every page…
DocsSourceD2-C192

Google's JavaScript guides say that when client-side routing makes a real 404 status impractical, a single-page app can avoid soft 404s by redirecting with JavaScript to a URL whose server returns 404, or by adding a robots noindex meta tag with JavaScript.

Publisher Google Search CentralAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

Used byrequirement DEV-ERR-02

DocsSourceD2-C206

Google says its Web Rendering Service fetches the resources a page references through Googlebot, including JavaScript, CSS and XHR requests to APIs, but not images or videos.

Publisher Search Central blog (3 December 2024), Search Central blog (31 March 2026)Annotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

Used byrequirement DEV-REN-04

DocsSourceD2-C278

For effects that need WebGL, which Googlebot does not support, Google's guide to fixing JavaScript problems suggests skipping the effect or prerendering it with server-side rendering so that the content is accessible to Googlebot.

Publisher Google Search CentralAnnotates Day 2, 11:15 · What is Google friendly JavaScript

Used byrequirement DEV-REN-08

DocsSourceD2-C280

Google's JavaScript SEO basics recommends differential serving and polyfills when feature detection finds a missing browser API, and warns that some browser features cannot be polyfilled.

“We recommend using differential serving and polyfills if you feature-detect a missing browser API that you need.”

Publisher Google Search CentralAnnotates Day 2, 11:15 · What is Google friendly JavaScript

Used byrequirement DEV-REN-08

DocsSourceD2-C294

For client-side rendered single-page apps, where meaningful status codes can be impossible or impractical, Google's documentation gives two ways to avoid soft 404s: a JavaScript redirect to a URL that returns a 404 status, or a noindex robots meta tag added with JavaScript.

Publisher Google Search CentralAnnotates Day 2, 11:15 · What is Google friendly JavaScript

Used byrequirement DEV-ERR-02

Analysis by the author 24

AnalysisD2-C109

Ship robots rules in the HTML the server sends and never rely on JavaScript to lift a noindex: Google may skip rendering a page that arrives with noindex, so the page can stay out of the index even if a script removes the tag later.

Author Ibrahim AnjroAnnotates Day 2, 10:30 · Controlling indexing

Used byrequirement DEV-REN-05

  • Extended by D2-C855 Day 2: On stage the rule was absolute (Google won't even process the JavaScript of a page served with noindex)…
AnalysisD2-C855

On stage the rule was absolute (Google won't even process the JavaScript of a page served with noindex), while Google's guide says only that it may skip rendering; either way, a noindex in the served HTML must never be one that JavaScript is expected to lift.

Author Ibrahim AnjroAnnotates Day 2, 10:30 · Controlling indexing

  • Extends D2-C109 Day 2: Ship robots rules in the HTML the server sends and never rely on JavaScript to lift a noindex: Google may…
AnalysisD2-C133

Put everything indexing depends on (title, meta description, canonical, robots meta tag, main text and links) in the raw HTML so it is available without rendering, let JavaScript add enhancements only, and check the rendered HTML in URL Inspection for the rest.

Author Ibrahim AnjroAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

Used byrequirement DEV-REN-01

AnalysisD2-C208

A robots.txt carve-out works because Google applies the most specific matching rule, so Allow: /api/products/ beats Disallow: /api/ for product endpoints only; re-test a rendered page after every robots.txt change to script or API paths.

Author Ibrahim AnjroAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

  • Extends D1-C081 Day 1: When matching rules to a URL, Google uses the most specific rule by path length. If rules conflict, it uses…
AnalysisD2-C210

An API or CDN on its own host needs its own robots.txt check: a blanket Disallow there, or a robots.txt that returns 5xx errors, can stop Google fetching the data a page renders from.

Author Ibrahim AnjroAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

Used byrequirement DEV-SRV-04

  • Extends D1-C074 Day 1: If robots.txt returns a 5xx error, Google stops crawling the site for the first 12 hours, then uses the…
AnalysisD2-C222

Pages that embed third-party or AI-generated apps can share their fate, since an unhandled exception in the embedded code can break the host page; check the rendered HTML and JavaScript console output of such pages in Google's testing tools to make sure the host's own content still renders.

Author Ibrahim AnjroAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

Used byrequirement DEV-REN-09

AnalysisD2-C245

Make sure robots.txt does not block the URLs from which the browser loads a fragment's assets (the gateway paths on the host page's origin, or the endpoint's own host if assets load from there), because Google does not render JavaScript from blocked files and robots.txt rules apply per host.

Author Ibrahim AnjroAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

AnalysisD2-C275

Treat the 10,000-pixel viewport as a safety margin, not a target: load lazy content when it enters the viewport (Intersection Observer or native lazy loading, never scroll listeners), and give infinite-scroll content paginated URLs linked with <a href> so anything below the first rendered screen stays reachable.

Author Ibrahim AnjroAnnotates Day 2, 11:15 · What is Google friendly JavaScript

AnalysisD2-C298

Check robots.txt for Disallow rules covering JavaScript bundles, build folders or API endpoints the page calls while rendering, including on separate API or CDN hostnames with their own robots.txt, then confirm in URL Inspection's live test that the rendered HTML contains the main content.

Author Ibrahim AnjroAnnotates Day 2, 11:15 · What is Google friendly JavaScript

AnalysisD2-C342

Return real error status codes for error states, 404 or 410 for missing content and 503 for outages such as a failed database connection, also in single-page apps; a 200 page whose main content is only an error message is treated as a soft 404 even when header and navigation look normal.

Author Ibrahim AnjroAnnotates Day 2, 11:30 · Understanding what's on a page

Used byrequirements DEV-ERR-03, DEV-SRV-03

Day 3: Serving: Ranking, Search Console, and Performance 3

Said on stage 1

StageConsistent with docsD3-C627

Content that JavaScript adds to a page is typically seen by Google's indexing system within a few hours, and at worst within weeks.

Speaker Gary IllyesIn Day 3, 15:45 · How long does it take to..?Evidence transcript

Used byrequirements DEV-MON-10, DEV-REN-01

  • Extends D2-C172 Day 2: Google's JavaScript SEO basics guide says a page may wait in the render queue for a few seconds but that it…

Analysis by the author 2

AnalysisD3-C676

The stage doubt that every URL gets rendered sits beside Google's JavaScript guide, which says every page with a 200 status is queued for rendering unless a robots rule blocks indexing: queued is not the same as rendered, so do not rely on rendering for critical content.

Author Ibrahim AnjroAnnotates Day 3, 15:45 · How long does it take to..?

Used byrequirement DEV-REN-01

  • Extends D2-C131 Day 2: Google's JavaScript SEO guide says Googlebot sends every page with a 200 HTTP status code to the rendering…

Across days and sessions 40

  1. Stage D1-C541 Day 1 · Q&A

    A Google panelist said, as a fun fact, that JavaScript was used for the language-consolidation redirects in Google's own site migration, because it was the only option available to the person doing it (the recording does not make fully clear whether the JavaScript performed the redirects or built the mapping).

    extends
    Stage D1-C479 Day 1 · Q&A

    Where content was duplicated across languages, Google's own site consolidation redirected two language versions into one, giving both old URLs one target path to redirect to.

  2. Analysis D1-C542 Day 1 · Q&A

    Google's redirects guide says Google Search follows JavaScript location redirects only after rendering, may never see one if rendering fails, and should be used only when server-side or meta refresh redirects are impossible; its site move guide asks for server-side permanent redirects (301 or 308) where technically possible. The JavaScript in Google's own migration was a fallback ('my only option'), not a pattern to copy.

    extends
    Stage D1-C541 Day 1 · Q&A

    A Google panelist said, as a fun fact, that JavaScript was used for the language-consolidation redirects in Google's own site migration, because it was the only option available to the person doing it (the recording does not make fully clear whether the JavaScript performed the redirects or built the mapping).

  3. Stage D2-C124 Day 2 · Lightning session D: Rendering and JavaScript

    Google's simple solution for the extra time of live page reads is to make JavaScript-generated content render quickly and efficiently, or to use server-side rendering.

    extends
    Slide D1-C056 Day 1 · How Search works and where's AI?

    Myth: your website is no longer relevant. Google's answer: keep content crawlable, well structured, fast and easy to read, for readers and for AI tools.

  4. Stage D2-C134 Day 2 · Lightning session D: Rendering and JavaScript

    Google urged sites to make sure their JavaScript content can be crawled, rendered and indexed, calling this important today and also tomorrow, as AI systems increasingly ground answers to user requests.

    extends
    Slide D1-C056 Day 1 · How Search works and where's AI?

    Myth: your website is no longer relevant. Google's answer: keep content crawlable, well structured, fast and easy to read, for readers and for AI tools.

  5. Stage D2-C136 Day 2 · Lightning session D: Rendering and JavaScript

    Many SEOs still treat everything beyond the raw HTML as the developers' business, but developers often do not handle rendering problems, a community speaker warned.

    extends
    Stage D1-C121 Day 1 · session not recorded

    SEO is not only content; it has many parts.

  6. Stage D2-C139 Day 2 · Lightning session D: Rendering and JavaScript

    A community speaker strongly advised putting everything you want cited into the raw, server-side rendered HTML, especially for AI systems that cannot render JavaScript yet.

    extends
    Slide D1-C056 Day 1 · How Search works and where's AI?

    Myth: your website is no longer relevant. Google's answer: keep content crawlable, well structured, fast and easy to read, for readers and for AI tools.

  7. Slide D2-C184 Day 2 · Lightning session D: Rendering and JavaScript

    Google follows links in <a href> elements; a link that only runs an onclick handler, or a hash pseudo-link such as href=#/products, may be invisible to Google.

    extends
    Docs D1-C115 Day 1 · session not recorded

    Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the next page, should not use page 1 as its canonical, and rel=next and rel=prev are no longer used.

  8. Slide D2-C184 Day 2 · Lightning session D: Rendering and JavaScript

    Google follows links in <a href> elements; a link that only runs an onclick handler, or a hash pseudo-link such as href=#/products, may be invisible to Google.

    extends
    Slide D2-C040 Day 2 · How is HTML interpreted

    Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not click, so the JavaScript is never triggered.

  9. Stage D2-C190 Day 2 · Lightning session D: Rendering and JavaScript

    In single-page apps, a missing page often shows a custom 404 page while the server returns HTTP 200, because the front-end router, not the server, handles the 404.

    extends
    Docs D1-C073 Day 1 · How crawling errors affect Search

    A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It is kept out of the index but continues to be crawled, wasting crawl budget.

  10. Slide D2-C201 Day 2 · Lightning session D: Rendering and JavaScript

    Tab or accordion content fetched from an API only when a user clicks the tab, as in tab.onclick = () => fetch('/api/specs'), does not exist for Google until someone clicks.

    extends
    Docs D1-C115 Day 1 · session not recorded

    Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the next page, should not use page 1 as its canonical, and rel=next and rel=prev are no longer used.

  11. Slide D2-C204 Day 2 · Lightning session D: Rendering and JavaScript

    Blocking JavaScript or API resources in robots.txt is a classic rendering mistake: if Google's renderer cannot fetch a resource, it cannot run it.

    extends
    Slide D1-C064 Day 1 · How crawling works

    The crawler has multiple tasks: fetch from the internet, ensure it doesn't break the internet, and enforce robots.txt policies. Fetched data is sent for indexing.

  12. Analysis D2-C208 Day 2 · Lightning session D: Rendering and JavaScript

    A robots.txt carve-out works because Google applies the most specific matching rule, so Allow: /api/products/ beats Disallow: /api/ for product endpoints only; re-test a rendered page after every robots.txt change to script or API paths.

    extends
    Docs D1-C081 Day 1 · How Google interprets robots.txt

    When matching rules to a URL, Google uses the most specific rule by path length. If rules conflict, it uses the least restrictive one.

  13. Analysis D2-C210 Day 2 · Lightning session D: Rendering and JavaScript

    An API or CDN on its own host needs its own robots.txt check: a blanket Disallow there, or a robots.txt that returns 5xx errors, can stop Google fetching the data a page renders from.

    extends
    Docs D1-C074 Day 1 · How crawling errors affect Search

    If robots.txt returns a 5xx error, Google stops crawling the site for the first 12 hours, then uses the cached copy for up to 30 days.

  14. Stage D2-C213 Day 2 · Lightning session D: Rendering and JavaScript

    A page that renders empty for Google, such as a client-side product page hit by these mistakes, is seen as thin content and ends up treated as a soft 404 even though users see a full page.

    extends
    Docs D1-C073 Day 1 · How crawling errors affect Search

    A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It is kept out of the index but continues to be crawled, wasting crawl budget.

  15. Stage D2-C259 Day 2 · What is Google friendly JavaScript

    Erin Sparling named server-side or hybrid rendering, fallbacks and not leaving placeholders in the DOM, among other measures, as ways to guard against failed JavaScript rendering.

    extends
    Stage D2-C149 Day 2 · Lightning session D: Rendering and JavaScript

    A search engine's renderer does not wait forever before taking its snapshot, so content from slow internal systems or APIs can be missing and unresolved placeholders can end up in the final snapshot, a community speaker said.

  16. Stage D2-C263 Day 2 · What is Google friendly JavaScript

    Content is missing from the rendered HTML either because the server does not serve it or because the content has still not appeared after some period of time.

    extends
    Stage D2-C149 Day 2 · Lightning session D: Rendering and JavaScript

    A search engine's renderer does not wait forever before taking its snapshot, so content from slow internal systems or APIs can be missing and unresolved placeholders can end up in the final snapshot, a community speaker said.

  17. Stage D2-C281 Day 2 · What is Google friendly JavaScript

    Polyfills work in two directions: they patch backwards where a browser lacks support, or patch forward to build now for a feature expected in the future, as Web Fragments does.

    extends
    Stage D2-C254 Day 2 · Lightning session D: Rendering and JavaScript

    Natalia Venditto said the ShadowRealm proposal would do much of what Web Fragments does today with patches: containerizing and isolating execution.

  18. Stage D2-C287 Day 2 · What is Google friendly JavaScript

    A link that is an <a> element but does not point to a real URL gives Google something to look at, but Google will not know where the link goes.

    extends
    Slide D2-C040 Day 2 · How is HTML interpreted

    Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not click, so the JavaScript is never triggered.

  19. Stage D2-C288 Day 2 · What is Google friendly JavaScript

    With the History API, a single-page app can use real links and attach event listeners that intercept the click, rewrite the URL with pushState and load the new content, so Google can follow the links while users avoid full page reloads.

    extends
    Slide D2-C185 Day 2 · Lightning session D: Rendering and JavaScript

    The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>, combined with History API routing (window.history.pushState) instead of hash routes.

  20. Stage D2-C291 Day 2 · What is Google friendly JavaScript

    In JavaScript single-page apps, soft 404s typically arise because the server returns the app with a 200 status for every URL, so when the app shows a 'not found' message for a URL that does not exist, no error is reported.

    extends
    Docs D1-C073 Day 1 · How crawling errors affect Search

    A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It is kept out of the index but continues to be crawled, wasting crawl budget.

  21. Stage D2-C292 Day 2 · What is Google friendly JavaScript

    The fix for a client-side soft 404 is to serve a real 404 error page where appropriate; how to detect URLs that do not exist depends on how the app works and where it is hosted.

    extends
    Stage D2-C191 Day 2 · Lightning session D: Rendering and JavaScript

    The fix for a client-side soft 404 is to make a missing page end with a real HTTP 404 status code instead of 200.

  22. Stage D2-C296 Day 2 · What is Google friendly JavaScript

    If robots.txt blocks JavaScript that client-side code needs to render, Google cannot render the content that the JavaScript would produce.

    extends
    Slide D1-C064 Day 1 · How crawling works

    The crawler has multiple tasks: fetch from the internet, ensure it doesn't break the internet, and enforce robots.txt policies. Fetched data is sent for indexing.

  23. Slide D2-C336 Day 2 · Understanding what's on a page

    Google listed four common causes of soft 404s: pages that look like errors but are not, thin or empty content, server or CMS misconfigurations, and JavaScript-dependent content that fails to load.

    extends
    Docs D1-C073 Day 1 · How crawling errors affect Search

    A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It is kept out of the index but continues to be crawled, wasting crawl budget.

  24. Slide D2-C336 Day 2 · Understanding what's on a page

    Google listed four common causes of soft 404s: pages that look like errors but are not, thin or empty content, server or CMS misconfigurations, and JavaScript-dependent content that fails to load.

    extends
    Stage D2-C213 Day 2 · Lightning session D: Rendering and JavaScript

    A page that renders empty for Google, such as a client-side product page hit by these mistakes, is seen as thin content and ends up treated as a soft 404 even though users see a full page.

  25. Stage D2-C852 Day 2 · Controlling indexing

    When Google finds a noindex rule in a page's HTML, it drops the page without even processing its JavaScript, so a script cannot switch the page back to indexable, John Mueller said.

    extends
    Slide D2-C108 Day 2 · Controlling indexing

    Removing a robots restriction such as noindex with JavaScript does not work, a slide said.

  26. Stage D2-C853 Day 2 · Controlling indexing

    John Mueller recommended putting robots meta tags directly in a page's HTML exactly as intended, and adding them with JavaScript only where that is not possible, as in a JavaScript web app.

    extends
    Slide D2-C106 Day 2 · Controlling indexing

    A slide said robots meta rules can be added to a page's HTML with JavaScript, but doing so takes more time.

  27. Analysis D2-C855 Day 2 · Controlling indexing

    On stage the rule was absolute (Google won't even process the JavaScript of a page served with noindex), while Google's guide says only that it may skip rendering; either way, a noindex in the served HTML must never be one that JavaScript is expected to lift.

    extends
    Analysis D2-C109 Day 2 · Controlling indexing

    Ship robots rules in the HTML the server sends and never rely on JavaScript to lift a noindex: Google may skip rendering a page that arrives with noindex, so the page can stay out of the index even if a script removes the tag later.

  28. Stage D2-C858 Day 2 · Lightning session D: Rendering and JavaScript

    Search engines such as Google and Bing would ignore HTML tags written inside a meta description, a community speaker said.

    extends
    Stage D2-C142 Day 2 · Lightning session D: Rendering and JavaScript

    One site that builds its whole content by rendering also rendered its meta description with HTML tags inside it, which makes no sense and points to a flawed process.

  29. Stage D2-C859 Day 2 · Lightning session D: Rendering and JavaScript

    A rendering failure such as a Content Security Policy blocking a video on a landing page that explains how to open a business account could have a drastic impact for a purely online business, a community speaker warned.

    extends
    Stage D2-C156 Day 2 · Lightning session D: Rendering and JavaScript

    Content Security Policy is often misunderstood: on a page of a large German banking group, a video that should have been shown was blocked by a CSP violation, which also appeared in the browser console.

  30. Stage D3-C627 Day 3 · How long does it take to..?

    Content that JavaScript adds to a page is typically seen by Google's indexing system within a few hours, and at worst within weeks.

    extends
    Docs D2-C172 Day 2 · Lightning session D: Rendering and JavaScript

    Google's JavaScript SEO basics guide says a page may wait in the render queue for a few seconds but that it can take longer, and it gives no upper limit.

  31. Analysis D3-C676 Day 3 · How long does it take to..?

    The stage doubt that every URL gets rendered sits beside Google's JavaScript guide, which says every page with a 200 status is queued for rendering unless a robots rule blocks indexing: queued is not the same as rendered, so do not rely on rendering for critical content.

    extends
    Docs D2-C131 Day 2 · Lightning session D: Rendering and JavaScript

    Google's JavaScript SEO guide says Googlebot sends every page with a 200 HTTP status code to the rendering queue, whether or not it contains JavaScript, unless a robots meta tag or header tells Google not to index it, and Google uses the rendered HTML to index the page.

  32. Slide D2-C040 Day 2 · How is HTML interpreted

    Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not click, so the JavaScript is never triggered.

    repeats
    Docs D1-C115 Day 1 · session not recorded

    Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the next page, should not use page 1 as its canonical, and rel=next and rel=prev are no longer used.

  33. Slide D2-C262 Day 2 · What is Google friendly JavaScript

    Content that is not in the final DOM after rendering cannot be seen by Google, so it cannot be indexed.

    repeats
    Slide D2-C174 Day 2 · Lightning session D: Rendering and JavaScript

    Whatever is in the DOM at the moment Google's rendering finishes is what likely gets indexed.

  34. Slide D2-C264 Day 2 · What is Google friendly JavaScript

    Google's slide defined a soft 404 in a JavaScript application as a page that serves a 'Not Found' message but returns a 200 HTTP status code.

    repeats
    Docs D1-C073 Day 1 · How crawling errors affect Search

    A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It is kept out of the index but continues to be crawled, wasting crawl budget.

  35. Slide D2-C265 Day 2 · What is Google friendly JavaScript

    Blocked resources, one of Google's four common JavaScript indexing problems, means robots.txt disallowing the crawling of critical JavaScript files or API endpoints.

    repeats
    Slide D2-C204 Day 2 · Lightning session D: Rendering and JavaScript

    Blocking JavaScript or API resources in robots.txt is a classic rendering mistake: if Google's renderer cannot fetch a resource, it cannot run it.

  36. Stage D2-C274 Day 2 · What is Google friendly JavaScript

    Content loaded as elements enter the viewport, for example with an Intersection Observer, does load when Google renders a page, because Google's rendering viewport is very tall.

    repeats
    Slide D2-C199 Day 2 · Lightning session D: Rendering and JavaScript

    An Intersection Observer fires when the observed element enters the viewport, and the viewport Google renders with is tall, so content lazy-loaded this way can load during rendering.

  37. Slide D2-C284 Day 2 · What is Google friendly JavaScript

    URL fragments (#) are often ignored by crawlers: a fragment exists only in the browser, so Google cannot request it.

    repeats
    Docs D1-C101 Day 1 · How Google thinks about crawl budget

    Google's faceted navigation guide prefers prevention: disallow filter URLs in robots.txt and keep crawlable only item pages plus one unfiltered listing page, or use URL fragments, which Google generally does not crawl. rel=canonical and nofollow are weaker, slower options.

  38. Slide D2-C285 Day 2 · What is Google friendly JavaScript

    Google recommends the History API to give single-page apps clean URLs instead of fragment-based routes.

    repeats
    Slide D2-C185 Day 2 · Lightning session D: Rendering and JavaScript

    The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>, combined with History API routing (window.history.pushState) instead of hash routes.

  39. Stage D2-C291 Day 2 · What is Google friendly JavaScript

    In JavaScript single-page apps, soft 404s typically arise because the server returns the app with a 200 status for every URL, so when the app shows a 'not found' message for a URL that does not exist, no error is reported.

    repeats
    Stage D2-C190 Day 2 · Lightning session D: Rendering and JavaScript

    In single-page apps, a missing page often shows a custom 404 page while the server returns HTTP 200, because the front-end router, not the server, handles the 404.

  40. Stage D2-C296 Day 2 · What is Google friendly JavaScript

    If robots.txt blocks JavaScript that client-side code needs to render, Google cannot render the content that the JavaScript would produce.

    repeats
    Slide D2-C204 Day 2 · Lightning session D: Rendering and JavaScript

    Blocking JavaScript or API resources in robots.txt is a classic rendering mistake: if Google's renderer cannot fetch a resource, it cannot run it.

Built on these claims 25

Developer requirements 25

Sources 19