# [[React Applications]]
## π Brief Summary
React μ ν리μΌμ΄μ
μ λμ μ΄κ³ μΈν°λν°λΈν μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ꡬμΆνκΈ° μν΄ λ리 μ¬μ©λλ μ±κΈ νμ΄μ§ μ ν리μΌμ΄μ
(SPA) νλ μμν¬ κΈ°λ°μ μΉ μμ€ν
μ
λλ€. κΈ°λ³Έμ μΌλ‘ ν΄λΌμ΄μΈνΈ μ¬μ΄λ λ λλ§(CSR)μ μ¬μ©νμ¬ λΉ λ₯Έ νλ©΄ μ νμ μ 곡νμ§λ§, μ΄κΈ° λ‘λ© μλμ κ²μ μμ§ μ΅μ ν(SEO) μΈ‘λ©΄μμ μ·¨μ½μ μ κ°μ§ μ μμ΅λλ€. μ΄λ₯Ό 극볡νκ³ μ΅μ μΉ μν€ν
μ²μ κΈ°μ€μ μΆ©μ‘±νκΈ° μν΄ Next.jsλ Remix κ°μ νλ μμν¬λ₯Ό λμ
ν μλ² μ¬μ΄λ λ λλ§(SSR), λΌμ°ν
μμ€μ λ°μ΄ν° νμΉ, κ·Έλ¦¬κ³ μ격ν μ±λ₯ μ΅μ ν(Core Web Vitals) κΈ°λ²λ€μ΄ νμμ μΌλ‘ μ μ©λ©λλ€.
## π Core Content
* **λ λλ§ μ λ΅κ³Ό SEO μ΅μ ν**
μ ν΅μ μΈ React μ±μ μ΄κΈ° μμ² μ λΉ HTML μ
Έ(`
`)μ μ 곡νλ ν΄λΌμ΄μΈνΈ μ¬μ΄λ λ λλ§(CSR)μ μ¬μ©ν©λλ€ [1-3]. μ΄λ κ²μ μμ§ λ΄μ ν¬λ‘€λ§ λ° μΈλ±μ±μ μ§μ°μν€κ³ (Two-wave indexing), ν¬λ‘€λ§ μμ°μ λλΉνκ² λ§λλλ€ [4-6]. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ Next.js, Remix λ±μ νμ©νμ¬ μλ² μ¬μ΄λ λ λλ§(SSR), μ μ μ¬μ΄νΈ μμ±(SSG), μ μ§μ μ μ μ¬μμ±(ISR)μ ꡬννλ κ²μ΄ κ°μ₯ μ€μν©λλ€ [7-11]. μ΄λ¬ν λ°©μμ κ²μ μμ§μ μμ ν HTMLμ μ¦μ μ 곡νμ¬ ν¬λ‘€λ§ κ°λ₯μ±μ κ·Ήλνν©λλ€ [10, 12, 13]. λΆκ°μ μΌλ‘ `React Helmet`κ³Ό κ°μ λꡬλ₯Ό μ¬μ©νμ¬ λΌμ°νΈκ° λ³κ²½λ λλ§λ€ λμ μΌλ‘ λ©ν λ°μ΄ν°μ νμ΄νμ μ
λ°μ΄νΈν΄μΌ νλ©°, ν΄μ λΌμ°ν
(`#/`) λμ HTML5 History API(`BrowserRouter`)λ₯Ό μ¬μ©νλ κ²μ΄ SEOμ μ 리ν©λλ€ [14-16].
* **React Routerλ₯Ό νμ©ν μΉ κ΅¬μ‘° λ° μν κ΄λ¦¬**
React Router v6.4 μ΄μμ 'Data APIs'(loader, action)λ₯Ό λμ
νμ¬ λΌμ°νΈ λ§€μΉκ³Ό λ°μ΄ν° νμΉμ λ³λ ¬λ‘ μννκ² ν¨μΌλ‘μ¨, κΈ°μ‘΄ React μ ν리μΌμ΄μ
μ κ³ μ§μ λ¬Έμ μΈ μμ°¨μ λ°μ΄ν° λ‘λ©(μν°ν΄ λ¬Έμ )μ ν΄κ²°ν©λλ€ [17, 18]. ``μ νμ©ν μ€μ²© λΌμ°νΈ(Nested Routes)λ μ¬μ΄λλ°λ ν€λμ κ°μ κ³΅ν΅ UIλ₯Ό μ μ§νλ©΄μ λ΄λΆ μ½ν
μΈ λ§ λμ μΌλ‘ λ λλ§νλ λ
Όλ¦¬μ μ΄κ³ νμ₯ κ°λ₯ν μν€ν
μ²λ₯Ό μ 곡ν©λλ€ [19-22]. ν₯λ―Έλ‘κ²λ React Routerλ `useNavigation`, `useFetcher`, `loaderData`, `actionData` λ±μ ν΅ν΄ λ€νΈμν¬ μν λ° λ°μ΄ν° κ°±μ μ λ΄λΆμ μΌλ‘ μλ μ²λ¦¬νλ―λ‘, Reduxμ κ°μ λ³λμ ν΄λΌμ΄μΈνΈ μν κ΄λ¦¬(μΊμ±) λΌμ΄λΈλ¬λ¦¬μ λν μμ‘΄λλ₯Ό λν μ€μ¬μ€λλ€ [23, 24].
* **Core Web Vitalsμ νλ‘ νΈμλ μ±λ₯ μ΅μ ν**
React μ ν리μΌμ΄μ
μ κ±°λν JavaScript λ²λ€ ν¬κΈ°μ νμ΄λλ μ΄μ
(Hydration) μ§μ°μΌλ‘ μΈν΄ μ½μ΄ μΉ λ°μ΄ν(LCP, INP, CLS) μ§νκ° μ νλκΈ° μ½μ΅λλ€ [25, 26]. μ΄λ₯Ό λ°©μ§νλ €λ©΄ `React.lazy()`μ `Suspense`λ₯Ό μ΄μ©ν λΌμ°νΈ λ° μ»΄ν¬λνΈ μμ€μ μ½λ μ€ν리ν
(Code Splitting)κ³Ό μ§μ° λ‘λ©(Lazy Loading)μ ꡬννμ¬ μ΄κΈ° JS νμ΄λ‘λλ₯Ό νκΈ°μ μΌλ‘ μ€μ¬μΌ ν©λλ€ [25, 27-29]. λν νμ΄μ§μ μΈν°λν°λΈ λ°μμ±(INP)μ κ°μ νκΈ° μν΄ λΆλΆ νμ΄λλ μ΄μ
(Partial Hydration)μ λμ
νκ±°λ μΉ μ컀(Web Workers)λ‘ λ¬΄κ±°μ΄ μμ
μ μ€νλ‘λνκ³ , `React.memo`, `useMemo` λ±μ νμ©νμ¬ λΆνμν 리λ λλ§μ λ°©μ§νλ κ²μ΄ νμμ μΈ μ΅μ ν λͺ¨λ² μ¬λ‘μ
λλ€ [25, 30, 31].
## π Knowledge Connections
- **Related Topics:** [[Single Page Applications]], [[Server-Side Rendering]], [[Core Web Vitals]], [[React Router]], [[Code Splitting]]
- **Projects/Contexts:** [[SEO basics for React websites]], [[Modern website architecture best practices]]
- **Contradictions/Notes:** React κ°λ°μμ μ ν΅μ μΌλ‘ Reduxλ Apollo κ°μ μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅ν΄ μλ² μνλ₯Ό ν΄λΌμ΄μΈνΈ μΊμλ‘ κ΄λ¦¬νλ κ²μ΄ μ£Όλ₯μμΌλ, React Router 6.4+μ κ°μ μ΅μ λ°μ΄ν° λΌμ°ν
μν€ν
μ²μμλ λΌμ°ν°κ° λ€νΈμν¬ μνμ λ°μ΄ν° μ¬κ²μ¦μ μλμΌλ‘ μ²λ¦¬νκΈ° λλ¬Έμ, κΈ°μ‘΄μ μν κ΄λ¦¬ ν¨ν΄μ κ³ μνλ κ²μ΄ μ€νλ € λΆνμν 보μΌλ¬νλ μ΄νΈλ₯Ό μμ°νλ μν° ν¨ν΄(anti-pattern)μΌλ‘ κ°μ£Όλ μ μμ΅λλ€ [24, 32, 33].
---
*Last updated: 2026-04-26*