# [[React 18 & 19 Performance Optimization|React 18 & 19 Performance Optimization]] ## πŸ“Œ Brief Summary [[React 18|React 18]] 및 19의 μ„±λŠ₯ μ΅œμ ν™”λŠ” λ™μ‹œμ„± λ Œλ”λ§, μžλ™ λ°°μΉ­(Automatic Batching), 그리고 λΉŒλ“œ νƒ€μž„ 컴파일러λ₯Ό 톡해 λΆˆν•„μš”ν•œ λ Œλ”λ§μ„ μ΅œμ†Œν™”ν•˜κ³  UI λ°˜μ‘μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” 기술적 진보λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€ [1-4]. React 18은 λ‹€μ–‘ν•œ 비동기 이벀트의 μƒνƒœ μ—…λ°μ΄νŠΈλ₯Ό ν•œ λ²ˆμ— λ¬ΆλŠ” μžλ™ λ°°μΉ­κ³Ό `useTransition`을 ν†΅ν•œ λ™μ‹œμ„± 훅을 λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€ [3, 5, 6]. [[React 19|React 19]]λŠ” React Compilerλ₯Ό λ„μž…ν•˜μ—¬ μˆ˜λ™ λ©”λͺ¨μ΄μ œμ΄μ…˜μ˜ 뢀담을 μ—†μ• κ³ , [[React Server Components|React Server Components]](RSC) μ•„ν‚€ν…μ²˜λ₯Ό 톡해 ν΄λΌμ΄μ–ΈνŠΈλ‘œ μ „μ†‘λ˜λŠ” [[JavaScript|JavaScript]] λ²ˆλ“€ 크기λ₯Ό 획기적으둜 μ€„μ˜€μŠ΅λ‹ˆλ‹€ [2, 4, 7, 8]. ## πŸ“– Core Content * **React 18 μžλ™ λ°°μΉ­(Automatic [[Batching|Batching]])** React 18λΆ€ν„°λŠ” ν”„λ‘œλ―ΈμŠ€, `setTimeout`, λ„€μ΄ν‹°λΈŒ 이벀트 ν•Έλ“€λŸ¬ λ‚΄λΆ€μ—μ„œ λ°œμƒν•˜λŠ” μƒνƒœ μ—…λ°μ΄νŠΈκΉŒμ§€ λͺ¨λ‘ ν•œ 번의 λ¦¬λ Œλ”λ§μœΌλ‘œ λ¬Άμ–΄μ„œ μ²˜λ¦¬ν•˜λŠ” μžλ™ 배칭이 기본으둜 μ μš©λ©λ‹ˆλ‹€ [3, 9, 10]. 이λ₯Ό 톡해 [[Virtual DOM|Virtual DOM]] λ””ν•‘(Diffing) 연산을 μ΅œμ†Œν™”ν•˜λ©°, νŠΉμ • 데이터 집약적인 λŒ€μ‹œλ³΄λ“œ μ‚¬λ‘€μ—μ„œλŠ” λ Œλ”λ§ 횟수λ₯Ό μ΅œλŒ€ 40% 쀄이고 ν”„λ ˆμž„ 속도λ₯Ό 25% ν–₯μƒμ‹œν‚€λŠ” μ„±κ³Όλ₯Ό λƒˆμŠ΅λ‹ˆλ‹€ [1, 11, 12]. λ§Œμ•½ 즉각적인 DOM μ—…λ°μ΄νŠΈκ°€ λ°˜λ“œμ‹œ ν•„μš”ν•œ 경우라면 `[[flushSync|flushSync]]` APIλ₯Ό μ‚¬μš©ν•˜μ—¬ μžλ™ 배칭을 μš°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [12-14]. * **λ™μ‹œμ„± λ Œλ”λ§ κΈ°λŠ₯(Concurrent Features)** React 18/19의 λ™μ‹œμ„± 훅인 `useTransition`κ³Ό `[[useDeferredValue|useDeferredValue]]`λŠ” 메인 μŠ€λ ˆλ“œκ°€ μ°¨λ‹¨λ˜λŠ” 것을 λ°©μ§€ν•©λ‹ˆλ‹€ [5, 12, 13]. νƒ€μ΄ν•‘μ΄λ‚˜ 클릭과 같은 κΈ΄κΈ‰ν•œ μƒν˜Έμž‘μš© μ—…λ°μ΄νŠΈμ™€, λŒ€μš©λŸ‰ 리슀트 필터링 λ“± λΉ„κΈ΄κΈ‰ μƒνƒœ μ—…λ°μ΄νŠΈλ₯Ό 뢄리 μ²˜λ¦¬ν•˜μ—¬ μ•±μ˜ INP(Interaction to Next Paint) μ§€ν‘œλ₯Ό 크게 κ°œμ„ ν•©λ‹ˆλ‹€ [5, 12, 15-17]. * **[[React 19 Compiler|React 19 Compiler]]와 μžλ™ λ©”λͺ¨μ΄μ œμ΄μ…˜** 2025λ…„ 말 μ•ˆμ •ν™”λœ React CompilerλŠ” λΉŒλ“œ νƒ€μž„μ— 좔상 ꡬ문 트리(AST)λ₯Ό λΆ„μ„ν•˜μ—¬ 데이터 흐름을 νŒŒμ•…ν•˜κ³  졜적의 μœ„μΉ˜μ— μžλ™μœΌλ‘œ λ©”λͺ¨μ΄μ œμ΄μ…˜ 경계λ₯Ό μ‚½μž…ν•©λ‹ˆλ‹€ [2, 18-21]. 이 μ»΄νŒŒμΌλŸ¬λŠ” μ°Έμ‘° 동일성 문제둜 λ°œμƒν•˜λŠ” 연쇄적인 λ¦¬λ Œλ”λ§(Re-render Cascade)을 근본적으둜 λ°©μ§€ν•˜λ©°, κ°œλ°œμžκ°€ 직접 `useMemo`, `useCallback`, `React.memo`λ₯Ό μˆ˜λ™μœΌλ‘œ μž‘μ„±ν•΄μ•Ό ν•˜λŠ” 인지적 뢀담을 λœμ–΄μ€λ‹ˆλ‹€ [2, 4, 22, 23]. μ •λ°€ν•œ μžλ™ λ©”λͺ¨μ΄μ œμ΄μ…˜ 덕뢄에 Meta λ‚΄λΆ€ ν…ŒμŠ€νŠΈμ—μ„œλŠ” λ Œλ”λ§ νšŸμˆ˜κ°€ 60% κ°μ†Œν•˜κ³  μ‚¬μš©μž μƒν˜Έμž‘μš© 속도가 2.5λ°° ν–₯μƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€ [24]. * **[[React Server Components (RSC)|React Server Components (RSC]] ν™œμš©** RSCλŠ” λ Œλ”λ§κ³Ό μ»΄ν¬λ„ŒνŠΈ 둜직이 μ„œλ²„μ—μ„œλ§Œ λ°°νƒ€μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” μƒˆλ‘œμš΄ μ•„ν‚€ν…μ²˜λ‘œ, ν΄λΌμ΄μ–ΈνŠΈ JavaScript λ²ˆλ“€ μ‚¬μ΄μ¦ˆμ— μΆ”κ°€ λ°”μ΄νŠΈλ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(0 λ°”μ΄νŠΈ) [7, 8, 25, 26]. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ—¬λŸ¬ 번 λ°œμƒν•˜λŠ” 데이터 페칭 왕볡(waterfall)을 μœ λ°œν•˜λŠ” λŒ€μ‹ , μ„œλ²„μ—μ„œ 직접 λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ 둜컬 μ‹œμŠ€ν…œμ— μ•ˆμ „ν•˜κ²Œ μ ‘κ·Όν•˜μ—¬ μ²˜λ¦¬ν•œ λ’€, μ§λ ¬ν™”λœ React λͺ…λ Ή(React Flight ν”„λ‘œν† μ½œ)κ³Ό HTMLλ§Œμ„ ν΄λΌμ΄μ–ΈνŠΈμ— μŠ€νŠΈλ¦¬λ°ν•˜μ—¬ 초기 λ‘œλ”© 속도와 λ³΄μ•ˆμ„ κ°œμ„ ν•©λ‹ˆλ‹€ [27-31]. * **기본적인 μ„±λŠ₯ μ΅œμ ν™” 기법** μ΅œμ‹  λ Œλ”λ§ κΈ°λŠ₯ 외에도, μ„±λŠ₯ 확보λ₯Ό μœ„ν•΄μ„œλŠ” κΈ΄ λͺ©λ‘ λ Œλ”λ§ μ‹œ 가상화λ₯Ό μ μš©ν•˜λŠ” `react-window` 라이브러리 μ‚¬μš©, 라우트 λ‹¨μœ„μ˜ `React.lazy()`λ₯Ό μ΄μš©ν•œ μ½”λ“œ λΆ„ν• , 그리고 인라인 객체 및 ν•¨μˆ˜μ˜ λΆˆν•„μš”ν•œ 생성 λ°©μ§€ 같은 원칙적인 μ΅œμ ν™”κ°€ κΎΈμ€€νžˆ ꢌμž₯λ©λ‹ˆλ‹€ [32-35]. ## πŸ”— Knowledge Connections - **Related Topics:** `[[Automatic Batching|Automatic Batching]]`, `React Compiler`, `Concurrent Rendering`, `[[React Server Components|React Server Components]]` - **Projects/Contexts:** `[[Next.js App Router|Next.js App Router]]`, `[[Virtual DOM|Virtual DOM]]` - **Contradictions/Notes:** μ†ŒμŠ€ μžλ£Œμ— λ”°λ₯΄λ©΄ React Compilerκ°€ μ΅œμ ν™”μ˜ 90% 이상을 μžλ™ν™”ν•˜κ³  λŒ€λΆ€λΆ„μ˜ 경우 `useMemo`와 `useCallback`을 λŒ€μ²΄ν•˜μ§€λ§Œ, Effect 쒅속성을 λͺ…μ‹œμ μœΌλ‘œ μ œμ–΄ν•΄μ•Ό ν•˜κ±°λ‚˜ 타사 라이브러리의 μ°Έμ‘° μ•ˆμ •μ„±μ΄ ν•„μˆ˜μ μΈ λ°€λ¦¬μ΄ˆ λ‹¨μœ„μ˜ μ€‘μš”ν•œ μ„±λŠ₯ 경둜(Critical performance path)μ—μ„œλŠ” μ—¬μ „νžˆ μˆ˜λ™ λ©”λͺ¨μ΄μ œμ΄μ…˜μ΄ "μ΄μŠ€μΌ€μ΄ν”„ ν•΄μΉ˜(Escape Hatch)"둜 μž‘λ™ν•΄μ•Ό ν•œλ‹€κ³  κ°•μ‘°ν•©λ‹ˆλ‹€ [36-39]. --- *Last updated: 2026-04-25*