# [[Hydration & Progressive Rendering]] ## πŸ“Œ Brief Summary ν•˜μ΄λ“œλ ˆμ΄μ…˜(Hydration)은 μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)을 톡해 μƒμ„±λœ 정적 HTML을 ν΄λΌμ΄μ–ΈνŠΈκ°€ λ„˜κ²¨λ°›μ•„ 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό μ—°κ²°ν•˜κ³  동적 μƒν˜Έμž‘μš©μ΄ κ°€λŠ₯ν•˜λ„λ‘ 'μˆ˜λΆ„'을 κ³΅κΈ‰ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€ [1, 2]. κΈ°μ‘΄ SSR은 초기 화면은 λΉ λ₯΄κ²Œ λ³΄μ—¬μ£Όμ§€λ§Œ 전체 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  ν•˜μ΄λ“œλ ˆμ΄μ…˜μ„ 마칠 λ•ŒκΉŒμ§€ μƒν˜Έμž‘μš©μ΄ μ§€μ—°λ˜λŠ” 'ν•˜μ΄λ“œλ ˆμ΄μ…˜ κ°­(Hydration Gap)' 문제λ₯Ό μ•ˆκ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€ [1, 3]. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ React 18의 선택적 ν•˜μ΄λ“œλ ˆμ΄μ…˜(Selective Hydration) 및 슀트리밍(Streaming) λ Œλ”λ§, Vue 3.5의 μ§€μ—° ν•˜μ΄λ“œλ ˆμ΄μ…˜(Lazy Hydration)κ³Ό 같은 점진적 λ Œλ”λ§ 기법이 λ„μž…λ˜μ–΄, λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 초기 λ‘œλ”© μ„±λŠ₯κ³Ό μ‚¬μš©μž κ²½ν—˜μ„ μ΅œμ ν™”ν•˜λŠ” 핡심 μ‹€μ „ νŒ¨ν„΄μœΌλ‘œ 자리 μž‘μ•˜μŠ΅λ‹ˆλ‹€ [4, 5]. ## πŸ“– Core Content * **ν•˜μ΄λ“œλ ˆμ΄μ…˜μ˜ μž‘λ™ 원리 및 ν•œκ³„** * μ„œλ²„ λ Œλ”λ§ ν™˜κ²½μ—μ„œ ReactλŠ” κΈ°μ‘΄ μ„œλ²„μ—μ„œ λ Œλ”λ§λœ DOM 트리λ₯Ό λ³‘λ ¬λ‘œ μˆœνšŒν•˜λ©° Fiber νŠΈλ¦¬μ™€ μΌμΉ˜μ‹œν‚€κ³ , DOM λ…Έλ“œλ₯Ό λ‹€μ‹œ μƒμ„±ν•˜λŠ” λŒ€μ‹  μž¬μ‚¬μš©ν•˜λ©° 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό λΆ€μ°©ν•©λ‹ˆλ‹€ [1, 6]. * κ·ΈλŸ¬λ‚˜ 전톡적인 ν•˜μ΄λ“œλ ˆμ΄μ…˜μ€ 트리λ₯Ό 순차적으둜 κ±·κΈ° λ•Œλ¬Έμ—, 전체 νŠΈλ¦¬κ°€ ν•˜μ΄λ“œλ ˆμ΄μ…˜λ˜κΈ° μ „κΉŒμ§€λŠ” λ²„νŠΌ 클릭과 같은 μ‚¬μš©μž μƒν˜Έμž‘μš©μ΄ λ™μž‘ν•˜μ§€ μ•ŠλŠ” '먹톡' ν˜„μƒ(Hydration Gap)을 μœ λ°œν•©λ‹ˆλ‹€ [1, 6]. * **점진적 λ Œλ”λ§(Progressive Rendering)κ³Ό 슀트리밍(Streaming)** * ReactλŠ” 데이터λ₯Ό λͺ¨λ‘ κΈ°λ‹€λ¦° ν›„ HTML을 λ³΄λ‚΄λŠ” λŒ€μ‹ , μŠ€νŠΈλ¦¬λ°μ„ 톡해 λΌˆλŒ€(Shell)λ₯Ό μ¦‰μ‹œ μ „μ†‘ν•˜κ³  데이터가 ν•΄κ²°λ˜λŠ” λŒ€λ‘œ 각 `Suspense` λ°”μš΄λ”λ¦¬λ₯Ό μŠ€νŠΈλ¦¬λ°ν•©λ‹ˆλ‹€ [4]. * ν΄λΌμ΄μ–ΈνŠΈλŠ” λ‚˜λ¨Έμ§€ 데이터가 λ„μ°©ν•˜λŠ” λ™μ•ˆμ—λ„ λ¨Όμ € λ„μ°©ν•œ 뢀뢄을 μ μ§„μ μœΌλ‘œ ν•˜μ΄λ“œλ ˆμ΄μ…˜ν•  수 μžˆμ–΄, 느린 λ°μ΄ν„°λ² μ΄μŠ€ 쿼리둜 μΈν•œ μ§€μ—°(Waterfall) ν˜„μƒμ„ κ·Ήλ³΅ν•©λ‹ˆλ‹€ [4, 7, 8]. * **선택적 ν•˜μ΄λ“œλ ˆμ΄μ…˜(Selective Hydration)κ³Ό μ§€μ—° ν•˜μ΄λ“œλ ˆμ΄μ…˜(Lazy Hydration)** * **React:** Lanes μš°μ„ μˆœμœ„ μ‹œμŠ€ν…œμ„ ν™œμš©ν•˜μ—¬, μ‚¬μš©μžκ°€ 아직 ν•˜μ΄λ“œλ ˆμ΄μ…˜λ˜μ§€ μ•Šμ€ 뢀뢄을 ν΄λ¦­ν•˜λ©΄ ν•΄λ‹Ή λ°”μš΄λ”λ¦¬λ‘œ μ ν”„ν•˜μ—¬ μƒν˜Έμž‘μš© 처리λ₯Ό μœ„ν•œ ν•˜μ΄λ“œλ ˆμ΄μ…˜μ„ μ΅œμš°μ„ μœΌλ‘œ μ‹€ν–‰(쀑단 및 재개)ν•©λ‹ˆλ‹€ [4]. * **Vue 3.5:** SSR을 μœ„ν•œ 'μ§€μ—° ν•˜μ΄λ“œλ ˆμ΄μ…˜(Lazy Hydration)'을 λ„μž…ν•˜μ—¬, μ»΄ν¬λ„ŒνŠΈκ°€ 뷰포트(Viewport)에 보일 λ•Œλ§Œ ν•˜μ΄λ“œλ ˆμ΄μ…˜λ˜λ„λ‘ μ§€μ—°μ‹œν‚΅λ‹ˆλ‹€. 이λ₯Ό 톡해 초기 λ‘œλ“œ μ‹œκ°„μ„ λ‹¨μΆ•ν•˜κ³  μ»΄ν¬λ„ŒνŠΈ ν™œμ„±ν™”λ₯Ό 효율적으둜 μ—°κΈ°ν•©λ‹ˆλ‹€ [5]. * **ν•˜μ΄λ“œλ ˆμ΄μ…˜μ˜ μ™„μ „ν•œ μƒλž΅: μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ(RSC)** * React μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ(RSC)λŠ” μ„œλ²„μ—μ„œλ§Œ μ‹€ν–‰λ˜λ©° μ½”λ“œκ°€ ν΄λΌμ΄μ–ΈνŠΈ λ²ˆλ“€μ— ν¬ν•¨λ˜μ§€ μ•ŠμœΌλ―€λ‘œ ν•˜μ΄λ“œλ ˆμ΄μ…˜ μžμ²΄κ°€ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ [9, 10]. μ΄λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€ 크기λ₯Ό 쀄이고 ν•˜μ΄λ“œλ ˆμ΄μ…˜ λΉ„μš©μ„ μ›μ²œμ μœΌλ‘œ μ—†μ• λŠ” μ•„ν‚€ν…μ²˜μ  μ§„ν™”μž…λ‹ˆλ‹€ [11]. ## βš–οΈ Trade-offs & Caveats * **두 번의 왕볡 문제(The Two-Trip Lie):** 전톡적 ν•˜μ΄λ“œλ ˆμ΄μ…˜μ€ SSR을 톡해 λΉ λ₯Έ HTML을 μ œκ³΅ν•˜μ§€λ§Œ, λΈŒλΌμš°μ €λŠ” μ—¬μ „νžˆ λͺ¨λ“  JavaScriptλ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ½”λ“œλ₯Ό λ‹€μ‹œ μ‹€ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€. 즉, μ„œλ²„μ—μ„œμ˜ μž‘μ—…μ΄ ν΄λΌμ΄μ–ΈνŠΈμ˜ μ—°μ‚° λΉ„μš©μ„ 쀄여주지 λͺ»ν•˜λŠ” 근본적 ν•œκ³„κ°€ μžˆμŠ΅λ‹ˆλ‹€ [3, 12]. * **ν•˜μ΄λ“œλ ˆμ΄μ…˜ 뢈일치(Hydration Mismatches):** μ„œλ²„μ—μ„œ λ Œλ”λ§λœ μ½˜ν…μΈ μ™€ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λ Œλ”λ§λœ μ½˜ν…μΈ κ°€ λ‹€λ₯Ό 경우 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ Vue 3.5λŠ” μ„œλ²„-ν΄λΌμ΄μ–ΈνŠΈ κ°„ μΌκ΄€λœ 고유 IDλ₯Ό 보μž₯ν•˜λŠ” `useId()` APIλ₯Ό λ„μž…ν•˜μ˜€κ³ , μ˜λ„μ μΈ λΆˆμΌμΉ˜μ— λŒ€ν•œ κ²½κ³ λ₯Ό μ–΅μ œν•˜κΈ° μœ„ν•΄ `data-allow-mismatch` 속성을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 관리 ν¬μΈνŠΈκ°€ μƒκΉλ‹ˆλ‹€ [5, 13]. * **μ•„ν‚€ν…μ²˜ λ³΅μž‘μ„±κ³Ό λ³΄μ•ˆ μœ„ν—˜:** ν•˜μ΄λ“œλ ˆμ΄μ…˜μ„ μƒλž΅ν•˜κΈ° μœ„ν•΄ μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ(RSC) νŒ¨ν„΄μ„ μ‚¬μš©ν•  경우, μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ 경계가 λͺ¨ν˜Έν•΄μ Έ μ•„ν‚€ν…μ²˜κ°€ 맀우 λ³΅μž‘ν•΄μ§‘λ‹ˆλ‹€ [14, 15]. 특히 μ„œλ²„ μ•‘μ…˜μ„ λ‚΄λΆ€ ν•¨μˆ˜μ²˜λŸΌ μ·¨κΈ‰ν•˜μ—¬ μž…λ ₯ μœ νš¨μ„± 검사λ₯Ό μƒλž΅ν•˜λ©΄, 인증 없이 원격 μ½”λ“œ μ‹€ν–‰(RCE)이 κ°€λŠ₯ν•œ 'React2Shell'κ³Ό 같은 치λͺ…적인 λ³΄μ•ˆ 취약점이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [16-18]. ## πŸ”— Knowledge Connections ### Related Concepts #### [관계 μœ ν˜• A (μ•„ν‚€ν…μ²˜/기반 기술)] * [[Server-Side Rendering (SSR)]] * μ—°κ²° 이유: ν•˜μ΄λ“œλ ˆμ΄μ…˜κ³Ό 점진적 λ Œλ”λ§μ΄ μ„±λ¦½ν•˜κΈ° μœ„ν•œ μ „μ œ 쑰건이 λ˜λŠ” λ Œλ”λ§ λ°©μ‹μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 초기 HTML 전솑 ν›„ ν΄λΌμ΄μ–ΈνŠΈκ°€ μƒν˜Έμž‘μš©μ„±μ„ 덧뢙여야 ν•˜λŠ” μ΄μœ μ™€ κΈ°μ‘΄ SSR이 κ°€μ§„ 'Two-Trip'의 ν•œκ³„ [2, 3, 12, 19]. * [[React Server Components (RSC)]] * μ—°κ²° 이유: ν•˜μ΄λ“œλ ˆμ΄μ…˜ λΉ„μš©μ„ 근본적으둜 μ œκ±°ν•˜κΈ° μœ„ν•΄ λ„μž…λœ ν˜μ‹ μ μΈ μ»΄ν¬λ„ŒνŠΈ μ•„ν‚€ν…μ²˜μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό ν΄λΌμ΄μ–ΈνŠΈλ‘œ μ•„μ˜ˆ 보내지 μ•ŠμŒμœΌλ‘œμ¨ ν•˜μ΄λ“œλ ˆμ΄μ…˜ 없이 정적 λ Œλ”λ§μ„ μ²˜λ¦¬ν•˜κ³ , μ„œλ²„-ν΄λΌμ΄μ–ΈνŠΈ μœ΅ν•©μ„ μ΄λ£¨λŠ” ꡬ쑰 [9-11]. #### [관계 μœ ν˜• B (κ΅¬ν˜„/μ΅œμ ν™” 도ꡬ)] * [[Selective Hydration & Streaming]] * μ—°κ²° 이유: κΈ°μ‘΄ ν•˜μ΄λ“œλ ˆμ΄μ…˜μ˜ 순차적 λΈ”λ‘œν‚Ή 문제λ₯Ό ν•΄κ²°ν•˜λŠ” React의 기술적 κ΅¬ν˜„μ²΄μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: Suspense λ°”μš΄λ”λ¦¬λ₯Ό ν†΅ν•œ UI 청크 λΆ„ν•  및 μ‚¬μš©μž μƒν˜Έμž‘μš©μ— λ”°λ₯Έ ν•˜μ΄λ“œλ ˆμ΄μ…˜ μš°μ„ μˆœμœ„ μ œμ–΄ λ©”μ»€λ‹ˆμ¦˜ [4, 7]. * [[Lazy Hydration]] * μ—°κ²° 이유: λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ©”λͺ¨λ¦¬ 및 λ Œλ”λ§ μ΅œμ ν™”λ₯Ό μœ„ν•΄ Vue 3.5에 λ„μž…λœ 핡심 κ΅¬ν˜„ κΈ°λ²•μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ·°ν¬νŠΈμ— λ³΄μ΄λŠ” μ»΄ν¬λ„ŒνŠΈλ§Œ μ§€μ—° ν™œμ„±ν™”ν•˜μ—¬ 초기 λ‘œλ”© λΆ€ν•˜λ₯Ό μ€„μ΄λŠ” ν”„λ ˆμž„μ›Œν¬ μ°¨μ›μ˜ μ„±λŠ₯ μ΅œμ ν™” 방법 [5, 20]. ### Deeper Research Questions * 전톡적인 ν•˜μ΄λ“œλ ˆμ΄μ…˜ λ°©μ‹μ—μ„œ λ°œμƒν•˜λŠ” 'ν•˜μ΄λ“œλ ˆμ΄μ…˜ κ°­(Hydration Gap)'이 λͺ¨λ°”μΌμ΄λ‚˜ 느린 λ„€νŠΈμ›Œν¬ ν™˜κ²½μ—μ„œ μ‚¬μš©μž κ²½ν—˜(UX)에 λ―ΈμΉ˜λŠ” ꡬ체적인 μ•…μ˜ν–₯은 무엇인가? [1, 21] * React 18의 선택적 ν•˜μ΄λ“œλ ˆμ΄μ…˜(Selective Hydration)은 μš°μ„ μˆœμœ„ μ‹œμŠ€ν…œ(Lanes)을 ν™œμš©ν•˜μ—¬ μ‚¬μš©μžμ˜ 클릭 이벀트λ₯Ό μ–΄λ–»κ²Œ κ°€λ‘œμ±„κ³  μ²˜λ¦¬ν•˜λŠ”κ°€? [4] * Vue 3.5의 μ§€μ—° ν•˜μ΄λ“œλ ˆμ΄μ…˜(Lazy Hydration) 적용 μ‹œ, μ„œλ²„-ν΄λΌμ΄μ–ΈνŠΈ κ°„ μƒνƒœ 뢈일치(Mismatch)λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ `useId()`와 `data-allow-mismatch` 속성은 λ‚΄λΆ€μ μœΌλ‘œ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”κ°€? [5, 13] * μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ(RSC)λ₯Ό λ„μž…ν•˜μ—¬ ν•˜μ΄λ“œλ ˆμ΄μ…˜ 단계λ₯Ό μƒλž΅ν•  λ•Œ λ°œμƒν•˜λŠ” λ³΄μ•ˆ μœ„ν˜‘(예: React2Shell 원격 μ½”λ“œ μ‹€ν–‰)은 무엇이며, μ–΄λ–»κ²Œ 검증해야 ν•˜λŠ”κ°€? [16-18] * 슀트리밍(Streaming)κ³Ό `Suspense`λ₯Ό κ²°ν•©ν•œ 점진적 λ Œλ”λ§μ΄ 느린 λ°μ΄ν„°λ² μ΄μŠ€ 쿼리λ₯Ό μ²˜λ¦¬ν•  λ•Œ, λΈŒλΌμš°μ € λ Œλ”λ§ 병λͺ© ν˜„μƒμ„ μ–΄λ–»κ²Œ μš°νšŒν•˜λŠ”κ°€? [4, 7, 8] ### Practical Application Contexts * **Implementation:** μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ좕 μ‹œ React의 `Suspense`λ‚˜ Vue의 Lazy Hydration을 μ„ μ–Έμ μœΌλ‘œ μ μš©ν•˜μ—¬, μ€‘μš”ν•˜μ§€ μ•Šκ±°λ‚˜ 보이지 μ•ŠλŠ” UI μš”μ†Œμ˜ ν•˜μ΄λ“œλ ˆμ΄μ…˜μ„ μ§€μ—°μ‹œμΌœ 초기 λ Œλ”λ§ μ„±λŠ₯을 κ·ΉλŒ€ν™”ν•©λ‹ˆλ‹€ [4, 5]. * **System Design:** μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜ 섀계 μ‹œ λ°±μ—”λ“œ 데이터 μ˜μ‘΄μ„±κ³Ό ν”„λ‘ νŠΈμ—”λ“œμ˜ μΈν„°λž™μ…˜ μš”κ΅¬μ‚¬ν•­μ„ κ΅¬λΆ„ν•˜μ—¬, ν•˜μ΄λ“œλ ˆμ΄μ…˜μ΄ μ•„μ˜ˆ ν•„μš” μ—†λŠ” μ˜μ—­(μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ)κ³Ό ν•„μˆ˜μ μΈ μ˜μ—­(ν΄λΌμ΄μ–ΈνŠΈ μ»΄ν¬λ„ŒνŠΈ)의 경계λ₯Ό λͺ…ν™•νžˆ λΆ„λ¦¬ν•©λ‹ˆλ‹€ [22, 23]. * **Operation / Maintenance:** ν”„λ‘œλ•μ…˜ 운영 쀑 λ°œμƒν•  수 μžˆλŠ” ν•˜μ΄λ“œλ ˆμ΄μ…˜ Mismatch μ—λŸ¬λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ³ , ν•„μš”μ‹œ 고유 ID 생성을 보μž₯ν•˜λŠ” μœ ν‹Έλ¦¬ν‹°(`useId()`) 등을 μ‚¬μš©ν•˜μ—¬ SSR ν™˜κ²½μ˜ 무결성을 μœ μ§€λ³΄μˆ˜ν•©λ‹ˆλ‹€ [5, 13]. * **Learning Path:** ν΄λΌμ΄μ–ΈνŠΈ λ Œλ”λ§(CSR)의 ν•œκ³„ -> 전톡적 SSRκ³Ό ν•˜μ΄λ“œλ ˆμ΄μ…˜μ˜ κ°œλ… -> 슀트리밍과 점진적 ν•˜μ΄λ“œλ ˆμ΄μ…˜ -> μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ(RSC)의 λ„μž…μœΌλ‘œ μ΄μ–΄μ§€λŠ” μ›Ή λ Œλ”λ§ νŒ¨λŸ¬λ‹€μž„μ˜ 역사와 μ§„ν™” 과정을 μ²΄κ³„μ μœΌλ‘œ ν•™μŠ΅ν•©λ‹ˆλ‹€ [3, 4, 10, 12]. * **My Project Relevance:** κΈ€λ‘œλ²Œ μ‚¬μš©μžλ‚˜ 저사양 λͺ¨λ°”일 κΈ°κΈ°λ₯Ό νƒ€κ²ŸνŒ…ν•˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œ, λŒ€κ·œλͺ¨ JS λ²ˆλ“€ λ‘œλ”© 및 ν•˜μ΄λ“œλ ˆμ΄μ…˜μœΌλ‘œ μΈν•œ '초기 빈 ν™”λ©΄' 및 '클릭 λ¬΄λ°˜μ‘' ν˜„μƒμ„ κ°œμ„ ν•˜κΈ° μœ„ν•œ μ„±λŠ₯ μ΅œμ ν™” μ§€ν‘œλ‘œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1, 21]. ### Adjacent Topics * [[Suspense Boundary]] * ν™•μž₯ λ°©ν–₯: 데이터λ₯Ό κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆ Fallback UIλ₯Ό 보여쀄 뿐만 μ•„λ‹ˆλΌ, 점진적 λ Œλ”λ§ 및 선택적 ν•˜μ΄λ“œλ ˆμ΄μ…˜μ—μ„œ UIλ₯Ό 청크(Chunk) λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•˜λŠ” 기술적 경계 역할을 μ‹¬μΈ΅μ μœΌλ‘œ νƒκ΅¬ν•©λ‹ˆλ‹€ [4]. * [[React Server Actions]] * ν™•μž₯ λ°©ν–₯: ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ ν•˜μ΄λ“œλ ˆμ΄μ…˜ 없이도 μ„œλ²„μ™€ 직접 μƒν˜Έμž‘μš©ν•˜λ©° 데이터λ₯Ό λ³€ν˜•(Mutation)ν•˜λŠ” μ΅œμ‹  νŒ¨ν„΄κ³Ό, 이에 μˆ˜λ°˜λ˜λŠ” μž…λ ₯ 검증 및 λ³΄μ•ˆ(React2Shell) 이슈 λ°©ν–₯으둜 ν™•μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€ [17, 18]. --- *Last updated: 2026-05-03*