/JavaScript SEO
📘Concept⭐️ Pillar

JavaScript SEO

최종 업데이트:

Definition

JavaScript SEO is the technical SEO field of optimizing JavaScript-built web pages so they can be correctly discovered, indexed, and evaluated by search engine crawlers and AI bots.

As React, Vue, and Angular became widespread in the 2010s, client-side rendering (CSR) increased, intensifying problems where bots could not recognize content.


Summary

JavaScript SEO essentials: If content appears in HTML source (Ctrl+U), bots can see it. If not, it is CSR — Google sees it after delay but AI bots mostly cannot. Solution is SSR or SSG. Next.js sites default to SSR/SSG and are largely free from JavaScript SEO problems.


Why JavaScript SEO Becomes a Problem

1. Different Bot JavaScript Handling

Not all bots handle JavaScript the same way:

BotJS ExecutionNotes
GooglebotYes (may delay)Two-stage rendering queue
Bing BotPartialLimited JS execution
GPTBotNo (mostly)HTML only
ClaudeBotNo (mostly)HTML only
PerplexityBotNo (mostly)HTML only
Naver YetiPartialLimited JS execution

2. Googlebot Two-Stage Rendering

Googlebot processes pages in two stages: crawl → JS execution rendering. Stage 1 (crawl) is immediate, but stage 2 (JS rendering) waits in a queue and is processed later. On large sites this can take days.

CSR page JS content is indexed but not immediately — there is delay.

3. AI Bot JS Non-Execution Problem

AI bots such as GPTBot, ClaudeBot, and PerplexityBot mostly do not execute JavaScript. Pure CSR sites appear blank to these bots. In the AEO (Answer Engine Optimization) era, JavaScript SEO is essential if AI citation is the goal.

See Allowing AI Bots in robots.txt for details.


4 Rendering Methods and SEO Impact

[COMPARISON_TABLE: CSR vs SSR vs SSG vs ISR SEO comparison]

1. CSR (Client-Side Rendering)

Server sends empty HTML + JS bundle; browser renders content after JS execution.

<!-- CSR HTML source — what bots see -->
<html>
  <head>
    <title></title>
  </head>
  <body>
    <div id="app"></div>
    <script src="bundle.js"></script>
  </body>
</html>

No content in HTML source = Googlebot sees after delay / AI bots cannot see.

2. SSR (Server-Side Rendering)

Server sends completed HTML; browser runs additional JS (hydration).

<!-- SSR HTML source — immediately visible to bots -->
<html>
  <head>
    <title>Keyword Research Guide</title>
  </head>
  <body>
    <h1>Complete Keyword Research Guide</h1>
    <p>Keyword research is...</p>
  </body>
</html>

Content in HTML source = all bots can see immediately.

3. SSG (Static Site Generation)

All pages generated as HTML at build time and served from CDN. No DB query per request — direct HTML file serving.

Best approach from SEO perspective:

  • Immediate TTFB
  • All bots access immediately
  • Easy global CDN deployment

4. ISR (Incremental Static Regeneration)

SSG advantages plus periodic content updates. Pages regenerated in background and CDN cache refreshed.

Next.js ISR:

export const revalidate = 3600 // regenerate every hour

See Rendering for details.


5 JavaScript SEO Diagnostic Methods

1. Check HTML Source Directly

View HTML source with Ctrl+U (Windows) / Cmd+Option+U (Mac). If important content (H1, body, meta tags) is missing from source, that indicates CSR problems.

2. Disable JavaScript Test

Chrome DevTools → Settings (F1) → Preferences → Debugger → check Disable JavaScript → refresh page. If content is visible without JavaScript, SEO-friendly; blank screen means high CSR dependency.

3. Google Search Console URL Inspection

GSCURL Inspection → "Test live URL" → check "Rendered page." Shows what Googlebot actually rendered. See Google Search Console for details.

4. Lighthouse

Chrome DevTools → Lighthouse → SEO audit checks JavaScript SEO items. Especially verify "Links are crawlable" and "Document has meta description."

5. Screaming Frog (JavaScript Rendering Mode)

Enabling JavaScript rendering mode in Screaming Frog SEO Spider crawls based on actual rendering results. Compare before/after rendering to identify JS-dependent content.


5 Core JavaScript SEO Principles

Principle 1: Core Content in HTML

Core content (H1, body, meta tags) must be in HTML bots can see immediately. Dynamically added JS content risks indexing delay or omission.

Principle 2: Metadata Must Be in HTML

Title tag, meta description, canonical, and structured data (JSON-LD) must be in initial HTML. Dynamically generated via JS leaves meta information missing until Googlebot rendering.

See Title Tag and Canonical Tag for details.

Principle 3: Internal Links Use <a href> Tags

// Bad: navigation via JS event
document.getElementById('link').addEventListener('click', () => {
  window.location.href = '/target-page'
})

// Good: HTML a tag
;<a href="/target-page">Link text</a>

Googlebot crawls <a href> tags more reliably than JS event handlers. See Internal Linking for details.

Principle 4: Use SSR or SSG

If operating an SPA, migrating to SSR or SSG is the fundamental JavaScript SEO solution.

Principle 5: Progressive Enhancement

Design so basic functionality works without JavaScript; use JavaScript as progressive enhancement. Following this principle automatically minimizes JavaScript SEO problems.


Next.js and JavaScript SEO

Next.js is a React framework supporting SSR, SSG, and ISR.

// SSG: generate HTML at build time
export async function getStaticProps() {
  const data = await fetchData()
  return { props: { data } }
}

// ISR: regenerate every hour
export const revalidate = 3600

// SSR: render on server each request
export async function getServerSideProps() {
  const data = await fetchData()
  return { props: { data } }
}

Sites using Next.js are largely free from JavaScript SEO problems by default. alleo.wiki also runs on Next.js with SSG for optimal crawl environment.


JavaScript SEO in the AEO Era

AI Bot JS Non-Execution Status

As of 2026, most AI bots do not execute JavaScript. Pure CSR sites may have content omitted from AI indexes.

Practical impact: When AI bots cannot crawl

  • ChatGPT does not cite that content in answers
  • Perplexity does not reference it as a source
  • May be excluded from Google AI Overview

SSR/SSG has become even more important in the AI era. See llms.txt Writing Guide for details.

Rise of Edge SSR

Edge computing such as Cloudflare Workers and Vercel Edge Functions makes SSR as fast as CDN level. SSR server load disadvantages are decreasing.


Korea Market Application

CSR Problems in Korean SaaS

Many Korean SaaS services are built with pure React/Vue CSR. Marketing landing pages with CSR have little SEO effect. Landing pages should be implemented at minimum with SSR or SSG.

WordPress = PHP SSR

Cafe24, WordPress, and Imweb-based sites use PHP server-side rendering by default, so they have no JavaScript SEO problems. Issues concentrate on custom-developed SPA sites.

Naver Yeti and JavaScript

Naver Yeti bot partially executes JavaScript. Full CSR is still unfavorable for Naver indexing. SSR/SSG is advantageous for both Google and Naver.


Frequently Asked Questions

Q. Is SEO absolutely impossible for SPA sites?
A. No. Googlebot executes JavaScript so CSR content is indexed. However, disadvantages include indexing delay, AI bot non-recognition, and metadata issues. SSR/SSG migration is the most fundamental fix, but partial improvement is possible in CSR state by including important metadata in HTML source and structuring internal links correctly.

Q. Googlebot executes JS — why is SSR still needed?
A. Two reasons. First, Googlebot JS execution is delayed, making immediate indexing difficult. Second, AI bots do not execute JS and cannot see CSR content. SSR/SSG is essential when considering AEO.

Q. Is a Next.js site automatically SEO-friendly?
A. By default yes. However, building only with client components without getServerSideProps or generateStaticParams can behave like CSR. Even with Next.js, verify metadata setup, server component usage, and correct link structure.

Q. Is Dynamic Rendering still valid?
A. Google no longer recommends Dynamic Rendering (SSR for bots, CSR for users) after 2023. Similar to cloaking patterns — see risks in Cloaking. SSR/SSG is the correct alternative.

Q. When will AI bots execute JavaScript?
A. Technically possible, but JS execution for bots crawling billions of pages is very costly. Googlebot uses a two-stage rendering queue for this reason. Even if AI bots eventually execute JS, it may take years; until then SSR/SSG is the standard.


Related Sources

이 페이지를 참조하는 항목

관련 항목

📙How-to
llms.txt Writing Guide
llms.txt is a markdown-format metadata file that helps LLMs efficiently understand site content efficiently, placed at the site root (/) as an AI-friendly site guide.
📙How-to
Indexing Coverage Diagnosis
Indexing coverage diagnosis uses the GSC indexing report to check overall site indexing status, identify causes of unindexed pages, and fix them — a core SEO task.
📘ConceptPillar
GEO Master Guide: 5-Area Checklist
An execution guide for Generative AI Optimization covering GEO's five areas: content, structure, technical, off-site, and measurement.
📘ConceptPillar
What Is AEO?
AEO is the practice of optimizing content so AI answer engines cite it.
📘ConceptPillar
Duplicate Content
Duplicate content is a state where identical or very similar content exists on multiple URLs, causing authority dilution and indexing confusion—a common technical SEO problem.
📘ConceptPillar
Thin Content
Thin content refers to shallow pages that fail to provide sufficient value to users. The Helpful Content system detects it and lowers overall site quality—a common SEO penalty trigger.
📘ConceptPillar
Canonical Tag
A canonical tag is an HTML meta tag that tells search engines 'this URL is the representative version' when duplicate or similar content exists across multiple URLs. It resolves duplicate content problems and concentrates PageRank on the canonical URL—a core on-page SEO tool.
📘ConceptPillar
Internal Linking Strategy
Internal linking strategy is the practice of semantically connecting pages within your own site to optimize topic authority and bot and user navigation.
📘Concept
Noindex
noindex is an on-page crawl control directive that tells search engine bots not to include a page in search results via robots meta tags or HTTP headers. It excludes pages that do not need or should not appear in search from the index, saving crawl budget and improving site quality signals.
📘Concept
Pagination
Pagination is a technique for splitting long content or product listings across multiple pages. Since rel=prev/next was deprecated in 2019, it is now managed through canonical tags, infinite scroll, and load more approaches.
📘ConceptPillar
Title Tag
A title tag is the title element in the HTML head—a core on-page SEO signal that identifies pages in search results and AI answers.
📘ConceptPillar
Crawlability
Crawlability is the ability of search engine and AI bots to access website pages and read content. It is the most basic condition for SEO and AEO, a required step that precedes indexing and ranking.
📘Concept
Crawling vs Indexing
Crawling is the process where search engine bots follow links across the web and collect pages. Indexing is the process of analyzing collected pages and storing them in a search database. These are the first two stages of SEO’s three stages: crawling → indexing → ranking.
📘ConceptPillar
Rendering
Rendering is the process of processing HTML, CSS, and JavaScript to produce the final screen seen by users and bots. The choice among CSR, SSR, SSG, and ISR determines SEO and AEO feasibility.
📙How-to
How to Allow AI Bots in robots.txt
Allowing AI bots means explicitly permitting major AI crawlers such as GPTBot, ClaudeBot, and PerplexityBot to access your site in robots.txt, exposing your content for citation in generative AI answers.

이런 항목도 있어요

이 페이지가 도움이 됐나요?