--- id: P-REINFORCE-AUTO-B068E2 category: "10_Wiki/πŸ’‘ Topics/Design & Experience" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - React Performance Optimization" --- # [[React Performance Optimization|React Performance Optimization]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > React μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λΆˆν•„μš”ν•œ λ Œλ”λ§μ„ 쀄이고, μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€ 크기λ₯Ό μ΅œμ†Œν™”ν•˜λ©°, μƒνƒœ 관리 및 λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈμ„ 효율적으둜 κ΅¬μ„±ν•˜μ—¬ λΉ λ₯΄κ³  λ§€λ„λŸ¬μš΄ μ‚¬μš©μž κ²½ν—˜(UX)κ³Ό μš°μˆ˜ν•œ Core Web Vitals μ§€ν‘œλ₯Ό λ‹¬μ„±ν•˜λŠ” 핡심 기술 및 μ•„ν‚€ν…μ²˜ μ „λž΅μž…λ‹ˆλ‹€. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) **1. λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈκ³Ό μž¬μ‘°μ •(Reconciliation) μ΅œμ ν™”** ReactλŠ” μƒνƒœ(State), ν”„λ‘­μŠ€(Props), μ»¨ν…μŠ€νŠΈ(Context) λ³€κ²½ μ‹œ ν˜Ήμ€ λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈκ°€ λ Œλ”λ§λ  λ•Œ μž¬λ Œλ”λ§μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. λΆˆν•„μš”ν•œ ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈμ˜ λ Œλ”λ§μ„ 막기 μœ„ν•΄ `React.memo`, `useMemo`, `useCallback`을 μ‚¬μš©ν•˜μ—¬ μ°Έμ‘° μ•ˆμ •μ„±(Reference Stability)을 μœ μ§€ν•©λ‹ˆλ‹€. μ΅œμ‹  React 19의 'React Compiler'λ₯Ό λ„μž…ν•˜λ©΄ λŒ€λΆ€λΆ„μ˜ λ©”λͺ¨μ΄μ œμ΄μ…˜μ΄ λΉŒλ“œ νƒ€μž„μ— μžλ™μœΌλ‘œ μ²˜λ¦¬λ˜μ–΄ μˆ˜λ™ μ΅œμ ν™” λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œλ₯Ό 획기적으둜 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€. **2. μ½”λ“œ μŠ€ν”Œλ¦¬νŒ…(Code Splitting)κ³Ό μ§€μ—° λ‘œλ”©(Lazy Loading)** ν•˜λ‚˜μ˜ κ±°λŒ€ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€μ€ 초기 λ‘œλ”© 속도λ₯Ό 크게 μ €ν•˜μ‹œν‚΅λ‹ˆλ‹€. `React.lazy`와 `Suspense`λ₯Ό ν™œμš©ν•˜μ—¬ 라우트(Route) 기반 λ˜λŠ” 무거운 μ»΄ν¬λ„ŒνŠΈ(예: 차트, λΉ„λ””μ˜€ 에디터) λ‹¨μœ„λ‘œ λ²ˆλ“€μ„ λΆ„ν• ν•˜λ©΄ 초기 λ‹€μš΄λ‘œλ“œ μš©λŸ‰μ„ 쀄여 μ•±μ˜ λ°˜μ‘ 속도(TTI, Time to Interactive)λ₯Ό 높일 수 μžˆμŠ΅λ‹ˆλ‹€. **3. 효율적인 μƒνƒœ 관리 (State Management)** μƒνƒœλŠ” λΆ€λͺ¨λ‘œ κ³Όλ„ν•˜κ²Œ λŒμ–΄μ˜¬λ¦¬μ§€(State Lifting) μ•Šκ³  μ΅œλŒ€ν•œ μ‚¬μš©ν•˜λŠ” κ³³κ³Ό κ°€κΉŒμš΄ μœ„μΉ˜(Local)에 두어야 ν•©λ‹ˆλ‹€. React κΈ°λ³Έ Context APIλŠ” λ‚΄λΆ€μ˜ μ–΄λ–€ 값이라도 λ³€κ²½λ˜λ©΄ λͺ¨λ“  μ†ŒλΉ„μžλ₯Ό λ¦¬λ Œλ”λ§μ‹œν‚€λ―€λ‘œ 병λͺ©μ„ μœ λ°œν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ κ³ λΉˆλ„λ‘œ μ—…λ°μ΄νŠΈλ˜λŠ” μƒνƒœμ˜ 경우 μ»¨ν…μŠ€νŠΈλ₯Ό λ„λ©”μΈλ³„λ‘œ 잘게 μͺΌκ°œκ±°λ‚˜, Zustand, Jotai, Valtio와 같이 선택적 ꡬ독(Selective Subscription)κ³Ό λ―Έμ„Έ μ‘°μ •(Fine-grained) μ—…λ°μ΄νŠΈλ₯Ό μ§€μ›ν•˜λŠ” κ³ μ„±λŠ₯ μ „μ—­ μƒνƒœ 관리 라이브러리λ₯Ό λ„μž…ν•˜λŠ” 것이 μœ λ¦¬ν•©λ‹ˆλ‹€. **4. λŒ€κ·œλͺ¨ 리슀트 가상화 (Virtualization / Windowing)** 수천 개의 ν•­λͺ©μ„ ν•œ λ²ˆμ— λ Œλ”λ§ν•˜λ©΄ DOM λ…Έλ“œκ°€ ν­μ¦ν•˜μ—¬ λΈŒλΌμš°μ €κ°€ 멈좜 수 μžˆμŠ΅λ‹ˆλ‹€. `react-window`λ‚˜ `react-virtualized` 같은 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜„μž¬ ν™”λ©΄(Viewport)에 λ³΄μ΄λŠ” μˆ˜μ‹­ 개의 ν•­λͺ©λ§Œ λ Œλ”λ§ν•˜κ³  λ‚˜λ¨Έμ§€λŠ” 슀크둀 μ‹œ λ™μ μœΌλ‘œ λ§ˆμš΄νŠΈν•˜λŠ” '가상화' 기법을 μ μš©ν•˜λ©΄ λ Œλ”λ§ μ‹œκ°„μ„ 수 λ°€λ¦¬μ΄ˆ(ms) λ‹¨μœ„λ‘œ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ μ•ˆμ •μ μ΄κ³  κ³ μœ ν•œ `key` 속성을 λΆ€μ—¬ν•˜λŠ” 것도 맀우 μ€‘μš”ν•©λ‹ˆλ‹€. **5. λ™μ‹œμ„± κΈ°λŠ₯(Concurrent Features)κ³Ό 비동기 처리** React 18 μ΄μƒμ—μ„œ μ œκ³΅ν•˜λŠ” `useTransition`κ³Ό `useDeferredValue` 훅을 μ‚¬μš©ν•˜λ©΄ 무거운 UI μ—…λ°μ΄νŠΈλ₯Ό λΉ„κΈ΄κΈ‰(Non-urgent) μž‘μ—…μœΌλ‘œ 미루고, μ‚¬μš©μžμ˜ νƒ€μ΄ν•‘μ΄λ‚˜ 클릭 같은 κΈ΄κΈ‰ν•œ μΈν„°λž™μ…˜μ„ λŠκΉ€ 없이 μ¦‰κ°μ μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 더 λ‚˜μ•„κ°€ 이미지 μ²˜λ¦¬λ‚˜ 물리 μ—°μ‚° λ“± CPUλ₯Ό 많이 μ†Œλͺ¨ν•˜λŠ” μž‘μ—…μ€ Web Worker(λ˜λŠ” `useWorker`)둜 μ˜€ν”„λ‘œλ”©ν•˜μ—¬ 메인 μŠ€λ ˆλ“œμ˜ λΈ”λ‘œν‚Ήμ„ λ°©μ§€ν•©λ‹ˆλ‹€. **6. React Server Components (RSC) ν™œμš©** Next.js와 같은 ν”„λ ˆμž„μ›Œν¬ ν™˜κ²½μ—μ„œλŠ” React Server Componentsλ₯Ό 적극 ν™œμš©ν•©λ‹ˆλ‹€. μΈν„°λž™μ…˜μ΄ ν•„μš” μ—†λŠ” 정적 UIλŠ” μ„œλ²„μ—μ„œ λ Œλ”λ§μ„ 끝마친 μ±„λ‘œ μ „μ†‘ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€ μ‚¬μ΄μ¦ˆλ₯Ό 획기적으둜 쀄이고 초기 νŽ˜μΈνŒ… 속도λ₯Ό λΉ„μ•½μ μœΌλ‘œ ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Design & Experience λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[React 19 Compiler|React 19 Compiler]], [[α„Œα…’α„Œα…©α„Œα…₯α†Ό (Reconciliation)|μž¬μ‘°μ • (Reconciliation)]], [[ᄉᅑᆼᄐᅒ α„€α…ͺᆫ라 α„Žα…¬α„Œα…₯ᆨᄒα…ͺ (Zustand, Jotai, Valtio)|μƒνƒœ 관리 μ΅œμ ν™” (Zustand, Jotai, Valtio)]], Code Splitting & Lazy Loading, [[React Server Components (RSC)|React Server Components (RSC)]] - **Projects/Contexts:** λŒ€κ·œλͺ¨ E-commerce 및 λŒ€μ‹œλ³΄λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ좕, [[고ᄉα…₯α†Όα„‚α…³α†Ό ᄆα…₯ᆯ타스레드 React α„‹α…’α†Έ α„‹α…‘α„α…΅α„α…¦α†¨α„Žα…₯|κ³ μ„±λŠ₯ λ©€ν‹°μŠ€λ ˆλ“œ React μ•± μ•„ν‚€ν…μ²˜]], Next.js 기반 App Router λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ - **Contradictions/Notes:** λ§Žμ€ κ°œλ°œμžλ“€μ΄ μ»΄ν¬λ„ŒνŠΈκ°€ λŠλ €μ§€λ©΄ μŠ΅κ΄€μ μœΌλ‘œ `useMemo`λ‚˜ `React.memo`λ₯Ό μΆ”κ°€(Premature Memoization)ν•˜μ§€λ§Œ, λ©”λͺ¨μ΄μ œμ΄μ…˜ μžμ²΄μ—λ„ 얕은 비ꡐ(Shallow Compare)λΌλŠ” μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•©λ‹ˆλ‹€. λ Œλ”λ§ μžμ²΄κ°€ λΉ λ₯΄κ³  ν”„λ‘­μŠ€ 변경이 λΉˆλ²ˆν•œ λ‹¨μˆœ μ»΄ν¬λ„ŒνŠΈμ— 이λ₯Ό λ‚¨μš©ν•˜λ©΄ 였히렀 λ©”λͺ¨λ¦¬μ™€ μ—°μ‚° μžμ›λ§Œ λ‚­λΉ„ν•˜λ―€λ‘œ λ°˜λ“œμ‹œ React DevTools Profiler둜 μΈ‘μ •ν•œ ν›„ μ μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ˜ν•œ React 19 μ»΄νŒŒμΌλŸ¬κ°€ 아무리 μžλ™ν™”λ₯Ό 해주어도, λ¬΄λΆ„λ³„ν•œ μƒνƒœ ꡬ쑰 λ“± 근본적인 μ•„ν‚€ν…μ²˜ 섀계 결함을 κ³ μ³μ£Όμ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. --- _Last updated: 2026-04-14_ - Raw Source: 00_Raw/2026-04-20/React Performance Optimization.md ---