Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Practical Guide to JavaScript SEO - BrightonS...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

A Practical Guide to JavaScript SEO - BrightonSEO San Diego 2026

Many sites rely on JavaScript, but SEO still depends on fundamentals: discoverable content, crawlable links, and predictable rendering.

In this presentation, Sam will explain the JavaScript rendering lifecycle in plain terms, highlight the main issues that cause the most SEO damage, and show how she audits JS-heavy sites step by step.

You’ll leave with a one-page checklist and a clearer understanding of when client-side rendering is fine (and when it’s costing you visibility).

Avatar for Sam Torres

Sam Torres

September 15, 2026

More Decks by Sam Torres

Other Decks in Marketing & SEO

Transcript

  1. Aloha y'all, I'm Sam. SEO Mermaid 15 years experience, both

    agency and in-house Based in Atlanta Former frontend developer WHAT I NERD OUT ON JavaScript SEO Headless CMS site architecture Translating SEO for engineering teams
  2. WHERE WE'RE STARTING JavaScript isn't the problem. SEO still comes

    down to the same three things it always has: Discoverable content Crawlable links Predictable rendering The words are on the page. Real hrefs that lead somewhere. The same page experience every time it's fetched.
  3. TH E MO DEL Crawling ≠ Rendering ≠ Indexing CR

    AW L RE ND ER IN DE X Fetch the URL. Execute the page. Store the result. The server returns its initial HTML response. ≠ A browser or rendering service runs JS, builds the DOM, and creates the final HTML. ≠ The crawler decides what gets remembered, and what gets cited.
  4. CORE IDEA The key distinction: two document versions Response HTML

    Rendered HTML View Source · cURL Inspect Element · View Rendered Source The raw HTML your server sends back. The DOM after JavaScript executes. Text, links, structured data, metadata. Anything that needs the DOM to exist. This is what AI crawlers see. What users see, and what Googlebot catches up to.
  5. YO UR O PTI ON S The rendering spectrum SSR

    SSG ISR CSR Server-Side Rendering Static Site Generation Client-Side Rendering HTML BUILT HTML BUILT Incremental Static Regeneration Per-request Scheduled build time HTML BUILT HTML BUILT In the user's browser Periodic, as needed ← Content in the response HTML Content built by JavaScript →
  6. TH E CS R D EC IS ION Not all

    SEO content is created equal CR IT IC AL IM PO RT ANT NI CE T O H AV E Must be in the response. Should be in the response. OK to render CSR, usually. Title tag Navigation Most body copy Meta robots Headings (H1, H2…) In-content hyperlinks Canonical Hreflang Images and alt text Structured data Pagination Media (video)
  7. TH E SP LIT V IS IBI LI TY PR

    OB LE M of AI crawlers can't execute JavaScript Vercel + MERJ, 2024
  8. TH E NE W R EA LI TY Who renders

    JS, and who doesn't CRAWLER RENDERS JS? Googlebot ✓ Yes Bingbot ~ Limited Applebot ✓ Yes Google-Extended (Gemini training) ✓ Yes, inherits Google infra GPTBot · OAI-SearchBot · ChatGPT-User ✗ No ClaudeBot · Claude-SearchBot · Claude-User ✗ No PerplexityBot ✗ No CCBot (Common Crawl) ✗ No Sources: Vercel / MERJ research (2024) · public crawler docs from OpenAI, Anthropic, Google, Perplexity
  9. TH E RU LE TO R EME MB ER If

    your content needs JavaScript to appear, AI search doesn't know it exists. …mostly. LLMs sometimes pull from Google's cached, post-render index. Not 100%, just unreliable enough that you can't depend on it. And agents browsing or interacting live? They're on their own.
  10. TH E SP LIT V IS IBI LI TY PR

    OB LE M of JavaScript-rendered content never gets indexed by AI systems Onely, Feb 2026
  11. TH E AG ENT IC W EB And then there

    are agents Agents do render JavaScript With their own problems They drive real browsers Slow sites cost tokens and patience ✓ See your full rendered page ✗ Bail on long page loads ✓ Click, scroll, and fill forms ✗ Struggle with SPA hash modes (no distinct URLs) ✓ Follow real navigation flows ✗ Modals, popups, cookies get auto-blocked ✓ Transact on your site ✗ Anti-bot security may flag them as bad actors
  12. THE SUMMARY Rendering approach × what bots actually get RESPONSE

    HTML GOOGLEBOT AI CRAWLERS AGENTS SSR ✓ Full ✓ Yes ✓ Yes ✓ Yes SSG ✓ Full ✓ Yes ✓ Yes ✓ Yes ISR ✓ Full (may be stale) ✓ Yes ✓ Yes ✓ Yes CSR ✗ Empty shell ~ After render queue ✗ No ~ If patient
  13. IN T HE WI LD Common ways this goes wrong

    Critical SEO not in response Links that aren't links Metadata that changes after render Title, meta robots, canonical injected by JS instead of served in the HTML. <span onclick> instead of <a href>. Bots can't follow them. Soft 404s on real content Junk URLs in the index Broken <head> Status 200 but no content until JS runs. Looks empty to crawlers. Orphaned build artifacts, debug routes, escaped preview URLs. Invalid HTML before </head> can stop Googlebot mid-render. Server says one canonical; JS rewrites it. Bots and users disagree.
  14. HO W TO AU DI T Different ways to check

    1 What's in the raw response? View Source (Ctrl+U) or cURL 2 Same answer, two tools. cURL adds -A "GPTBot" to fetch as a bot. This is what non-rendering readers get. 3 What's actually indexed? Search a unique phrase in quotes Fetchable isn't the same as indexed. If a quoted string returns your page, it made it in — and likely into training data. What depends on JavaScript? Disable JS and reload Whatever disappears was never in the response. A different question than “is it there”: this shows you what's conditional. 4 What are the bots really doing? Read your server logs Capability isn't behavior. Logs show whether GPTBot, ClaudeBot and PerplexityBot got 200s on real content.
  15. TH RE E THI NG S TO RE ME MBE

    R 1 JavaScript isn't the problem. 2 The response is what counts. 3 You can see what they see. Where your content lives might be. Most readers, and every AI crawler, get the raw response and never the render. View source, disable JS, curl, GSC to eliminate the guesswork.
  16. Thank you! Questions? Sam Torres SEO Mermaid Sr. Manager, Technical

    SEO @ Pipedrive Slides + one-page checklist LinkedIn: /in/samantha-torres-seo theseomermaid.com/brighton-sd-2026