# [[React SEO Guide]] ## ๐Ÿ“Œ Brief Summary React SEO๋Š” React๋กœ ๊ตฌ์ถ•๋œ ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฒ€์ƒ‰ ์—”์ง„ ๋ด‡์ด ํšจ๊ณผ์ ์œผ๋กœ ํฌ๋กค๋ง, ๋ Œ๋”๋ง ๋ฐ ์ƒ‰์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™”ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค [1, 2]. ๊ธฐ๋ณธ์ ์œผ๋กœ React๋Š” ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(CSR)์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์—”์ง„์ด ์ดˆ๊ธฐ ์š”์ฒญ ์‹œ ๋นˆ HTML ์…ธ๋งŒ ๋ณด๊ฒŒ ๋˜์–ด ์ƒ‰์ธ ์ง€์—ฐ ๋ฐ ๊ฒ€์ƒ‰ ๊ฐ€์‹œ์„ฑ ์ €ํ•˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [1, 3]. ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ์  ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž๋“ค์€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR) ๋ฐ ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ(SSG)๊ณผ ๊ฐ™์€ ๋ Œ๋”๋ง ์ „๋žต์„ ๋„์ž…ํ•˜๊ณ , ์ ์ ˆํ•œ ๋ผ์šฐํŒ… ๋ฐฉ์‹๊ณผ ๋™์  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4, 5]. ## ๐Ÿ“– Core Content - **ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(CSR)์˜ ํ•œ๊ณ„:** React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ JavaScript๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•œ ํ›„์—์•ผ DOM์— ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” CSR ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [3, 6]. ๊ตฌ๊ธ€๋ด‡์€ ์ด๋Ÿฌํ•œ ์‚ฌ์ดํŠธ์— ์ ‘๊ทผํ•  ๋•Œ ๋นˆ HTML ์…ธ์„ ๋จผ์ € ์ƒ‰์ธํ•œ ํ›„ JavaScript ๋ Œ๋”๋ง์„ ํ(Queue)์— ๋Œ€๊ธฐ์‹œํ‚ค๋Š” "๋‘ ๋‹จ๊ณ„ ์ƒ‰์ธ(two-wave indexing)" ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [7-9]. ์ด๋Š” ์ƒ‰์ธ ์ง€์—ฐ, ํฌ๋กค๋ง ์˜ˆ์‚ฐ ๋‚ญ๋น„, ๋ Œ๋”๋ง ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ธํ•œ ์ฝ˜ํ…์ธ  ๋ˆ„๋ฝ์œผ๋กœ ์ด์–ด์ง€๋ฉฐ, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ์— ๋Œ€ํ•ด 404 ์ƒํƒœ ์ฝ”๋“œ ๋Œ€์‹  200 OK๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” "์†Œํ”„ํŠธ 404(Soft 404)" ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค [7, 9, 10]. - **SEO ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ํ•ต์‹ฌ ๋ Œ๋”๋ง ์ „๋žต:** - **์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR):** ์„œ๋ฒ„์—์„œ ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ „์ฒด HTML์„ ์ƒ์„ฑํ•˜์—ฌ ์ „์†กํ•จ์œผ๋กœ์จ ํฌ๋กค๋Ÿฌ๊ฐ€ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์—†์ด ์ฆ‰์‹œ ์ฝ˜ํ…์ธ ์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ธ์‹ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค(Next.js, Remix ๋“ฑ ํ™œ์šฉ) [5, 11, 12]. - **์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ(SSG):** ๋นŒ๋“œ ์‹œ์ ์— HTML์„ ์‚ฌ์ „ ๋ Œ๋”๋งํ•˜์—ฌ ์ดˆ๊ณ ์† ๋กœ๋”ฉ๊ณผ ์™„๋ฒฝํ•œ ํฌ๋กค๋ง ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ธ”๋กœ๊ทธ๋‚˜ ๋ฐฉ๋ฌธ ํŽ˜์ด์ง€ ๋“ฑ ์ •์  ์ฝ˜ํ…์ธ ์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค [13, 14]. - **์ ์ง„์  ์ •์  ์žฌ์ƒ์„ฑ(ISR):** SSG์˜ ๋น ๋ฅธ ์†๋„์™€ SSR์˜ ๋ฐ์ดํ„ฐ ์ตœ์‹ ์„ฑ์ด๋ผ๋Š” ์žฅ์ ์„ ๊ฒฐํ•ฉํ•˜์—ฌ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ •์  ํŽ˜์ด์ง€๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค [14, 15]. - **๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ:** React ์•ฑ์€ ํŽ˜์ด์ง€๊ฐ€ ์ „ํ™˜๋  ๋•Œ `` ํƒœ๊ทธ๊ฐ€ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ `react-helmet-async` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ Next.js์˜ `` ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ์ธ ์ œ๋ชฉ, ์„ค๋ช…, Open Graph ํƒœ๊ทธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ฃผ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [16, 17]. ๋˜ํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ(Rich Snippets)์— ํšจ๊ณผ์ ์œผ๋กœ ๋…ธ์ถœ๋˜๊ณ  AI ๋ด‡์ด ์ฝ˜ํ…์ธ ์˜ ๋ฌธ๋งฅ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก JSON-LD ๊ธฐ๋ฐ˜์˜ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ(Schema Markup)๋ฅผ ๋ฐ˜๋“œ์‹œ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [16, 18, 19]. - **React Router ๋ฐ ๋‚ด๋ถ€ ๋งํฌ ์ตœ์ ํ™”:** ํ•ด์‹œ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…(`#/`)์€ ๊ฒ€์ƒ‰ ์—”์ง„์ด ํ•ด์‹œ ์ดํ›„์˜ URL์„ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ๋ฌด์‹œํ•˜๋ฏ€๋กœ, HTML5 History API๋ฅผ ํ™œ์šฉํ•˜๋Š” `BrowserRouter`๋ฅผ ํ†ตํ•ด ๊น”๋”ํ•˜๊ณ  ๊ฐœ๋ณ„ ์ƒ‰์ธ์ด ๊ฐ€๋Šฅํ•œ URL ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [16, 20, 21]. ๋”๋ถˆ์–ด ๊ตฌ๊ธ€๋ด‡์˜ ์›ํ™œํ•œ ํฌ๋กค๋ง์„ ์œ„ํ•ด ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋™์ž‘ ์‹œ `onClick` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋Œ€์‹  ํ‘œ์ค€ `` ๋˜๋Š” `` ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [21, 22]. - **์ฝ”์–ด ์›น ๋ฐ”์ดํƒˆ(Core Web Vitals) ์„ฑ๋Šฅ ํŠœ๋‹:** ๋ฌด๊ฑฐ์šด JavaScript ๋ฒˆ๋“ค๊ณผ ํด๋ผ์ด์–ธํŠธ ์ธก ํ•˜์ด๋“œ๋ ˆ์ด์…˜(Hydration) ์ง€์—ฐ์€ LCP(Largest Contentful Paint)์™€ INP(Interaction to Next Paint) ์ ์ˆ˜๋ฅผ ์‹ฌ๊ฐํ•˜๊ฒŒ ์ €ํ•˜์‹œํ‚ต๋‹ˆ๋‹ค [22, 23]. ์ด๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ผ์šฐํŠธ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๋ถ„ํ• (Code Splitting), ์ปดํฌ๋„ŒํŠธ ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading) ๋ฐ ๋ถ€๋ถ„ ํ•˜์ด๋“œ๋ ˆ์ด์…˜(Partial Hydration) ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ ๋กœ๋“œ ๋ถ€๋‹ด์„ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค [24, 25]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Server-Side Rendering (SSR)]], [[Core Web Vitals]], [[Single Page Applications (SPA)]], [[Client-Side Rendering (CSR)]], [[React Router]] - **Projects/Contexts:** [[Next.js]], [[Remix]], [[Create React App]] - **Contradictions/Notes:** ๋™์  ๋ Œ๋”๋ง(Dynamic Rendering)์€ ๋ด‡์—๊ฒŒ๋Š” ์‚ฌ์ „ ๋ Œ๋”๋ง๋œ HTML์„, ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ๋ Œ๋”๋ง์„ ์ œ๊ณตํ•˜๋Š” ์šฐํšŒ ๊ธฐ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, 2026๋…„ ๊ธฐ์ค€ ๊ตฌ๊ธ€์€ ์ด ๋ฐฉ์‹์ด ๋ด‡๊ณผ ์‚ฌ๋žŒ์—๊ฒŒ ๋‹ค๋ฅธ ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” "ํด๋กœํ‚น(Cloaking)"์œผ๋กœ ๊ฐ„์ฃผ๋  ์œ„ํ—˜์ด ์žˆ์–ด ๊ธฐ๋ณธ ์ „๋žต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [26, 27]. --- *Last updated: 2026-04-26*