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:
| Bot | JS Execution | Notes |
|---|---|---|
| Googlebot | Yes (may delay) | Two-stage rendering queue |
| Bing Bot | Partial | Limited JS execution |
| GPTBot | No (mostly) | HTML only |
| ClaudeBot | No (mostly) | HTML only |
| PerplexityBot | No (mostly) | HTML only |
| Naver Yeti | Partial | Limited 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
GSC → URL 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
- Google Search Central (2024). Understand JavaScript SEO basics. https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
- Google Search Central (2024). Fix search-related JavaScript problems. https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-issues
- web.dev (2024). Rendering on the Web. https://web.dev/articles/rendering-on-the-web
이 페이지를 참조하는 항목
- 📘ConceptAI Visibility Score
- 📘ConceptCrawl Budget
- 📙How-toIndexing Coverage Diagnosis
- 📘ConceptGEO Master Guide: 5-Area Checklist
- 📘ConceptWhat Is AEO?
- 📘ConceptWhat Is GEO?
- 📘ConceptDuplicate Content
- 📘ConceptThin Content
- 📘ConceptHow Naver SEO Works
- 📘ConceptOrganic Traffic
- 📘ConceptInternal Linking Strategy
- 📘ConceptMeta Description
- 📘ConceptPagination
- 📘ConceptTitle Tag
- 📙How-toFAQPage Schema
- 📘ConceptJSON-LD Basics
- 📘ConceptCLS (Cumulative Layout Shift)
- 📘ConceptCrawlability
- 📘ConceptCrawling vs Indexing
- 📘ConceptPage Experience
- 📘ConceptRendering
- 📙How-toHow to Allow AI Bots in robots.txt
- 📒ToolAhrefs