# [[React Compiler]] ## πŸ“Œ Brief Summary React Compiler(κ³Όκ±° λͺ…μΉ­ React Forget)λŠ” Metaμ—μ„œ κ°œλ°œν•˜μ—¬ 2025λ…„ 10월에 μ•ˆμ •ν™”λœ React μ• ν”Œλ¦¬μΌ€μ΄μ…˜μš© λΉŒλ“œ νƒ€μž„ μ΅œμ ν™” λ„κ΅¬μž…λ‹ˆλ‹€ [1, 2]. κ°œλ°œμžκ°€ μˆ˜λ™μœΌλ‘œ μž‘μ„±ν•˜λ˜ λ©”λͺ¨μ΄μ œμ΄μ…˜(`React.memo`, `useMemo`, `useCallback`) λ‘œμ§μ„ λΉŒλ“œ λ‹¨κ³„μ—μ„œ λΆ„μ„ν•˜μ—¬ μžλ™μœΌλ‘œ μ‚½μž…ν•¨μœΌλ‘œμ¨ λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§μ„ λ°©μ§€ν•©λ‹ˆλ‹€ [1, 3]. 이λ₯Ό 톡해 ν”„λ‘ νŠΈμ—”λ“œ μ½”λ“œμ˜ 가독성을 높이고 μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚€λ©°, INP(Interaction to Next Paint)와 같은 λ Œλ”λ§ μ„±λŠ₯ μ§€ν‘œλ₯Ό 효과적으둜 κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1, 4, 5]. ## πŸ“– Core Content **μž‘λ™ 원리 및 μ£Όμš” νŠΉμ§•** * **μ„Έλ°€ν•œ μžλ™ μ΅œμ ν™”:** React CompilerλŠ” 전체 μ»΄ν¬λ„ŒνŠΈλ₯Ό κ°μ‹ΈλŠ” κΈ°μ‘΄ 방식과 달리, κ°œλ³„ JSX μ—˜λ¦¬λ¨ΌνŠΈμ™€ λ‚΄λΆ€ 계산 둜직 λ“± 훨씬 μ„Έλ°€ν•œ(Granular) μˆ˜μ€€μ—μ„œ λ Œλ”λ§ κ²°κ³Όλ₯Ό μΊμ‹±ν•˜μ—¬ μž…λ ₯값이 λ³€κ²½λ˜μ§€ μ•ŠμœΌλ©΄ μž¬μ‚¬μš©ν•©λ‹ˆλ‹€ [4, 6]. * **도ꡬ μƒνƒœκ³„ 톡합:** Babel ν”ŒλŸ¬κ·ΈμΈ ν˜•νƒœλ‘œ κ΅¬ν˜„λ˜μ–΄ Vite, Next.js, Rsbuild와 같은 ν˜„λŒ€μ μΈ λΉŒλ“œ 도ꡬ와 μ‰½κ²Œ 톡합할 수 μžˆμŠ΅λ‹ˆλ‹€ [7, 8]. React 19에 μ΅œμ ν™”λ˜μ–΄ μžˆμœΌλ‚˜ React 17 및 18 λ²„μ „μ—μ„œλ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [9]. * **React Developer Tools 지원:** React Developer Tools (v5.0 이상)의 Components 및 Profiler 탭을 톡해 μ»΄νŒŒμΌλŸ¬κ°€ μ„±κ³΅μ μœΌλ‘œ μ²˜λ¦¬ν•œ μ»΄ν¬λ„ŒνŠΈμ—λŠ” 'Memo ✨' λ°°μ§€κ°€ ν‘œμ‹œλ˜μ–΄ λ™μž‘ μ—¬λΆ€λ₯Ό μ‹œκ°μ μœΌλ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€ [8, 10]. **μ£Όμš” μž₯점** * **클린 μ½”λ“œ 및 μœ μ§€λ³΄μˆ˜μ„± (Clean Code):** λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ μœ„ν•œ λΆˆν•„μš”ν•œ 래퍼(wrapper) μ½”λ“œλ₯Ό μ œκ±°ν•˜μ—¬ μ†ŒμŠ€ μ½”λ“œκ°€ 직관적이고 깔끔해지며, κ°œλ°œμžκ°€ μˆ˜λ™μœΌλ‘œ 쒅속성 배열을 관리할 λ•Œ λ°œμƒν•  수 μžˆλŠ” 휴먼 μ—λŸ¬λ₯Ό μ›μ²œ μ°¨λ‹¨ν•©λ‹ˆλ‹€ [3-5, 7]. * **μž…μ¦λœ ν”„λ‘œλ•μ…˜ μ„±λŠ₯:** Meta의 Instagram, Quest Storeλ₯Ό λΉ„λ‘―ν•΄ Sanity Studio, Wakelet λ“±μ˜ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ λ Œλ”λ§ μ„±λŠ₯ ν–₯상, λ‘œλ”© 속도 κ°μ†Œ 및 μ΅œλŒ€ 30%에 이λ₯΄λŠ” INP κ°œμ„ μ„ κΈ°λ‘ν–ˆμŠ΅λ‹ˆλ‹€ [5]. **ν•œκ³„ 및 λ„μž… μ‹œ 고렀사항** * **React κ·œμΉ™(Rules of React)의 μ—„κ²©ν•œ μ€€μˆ˜ ν•„μš”:** μ»΄νŒŒμΌλŸ¬λŠ” 정적 뢄석을 기반으둜 μž‘λ™ν•˜λ―€λ‘œ, μƒνƒœ λΆˆλ³€μ„±μ΄λ‚˜ λ Œλ”λ§ 쀑 λΆ€μˆ˜ 효과 κΈˆμ§€ 같은 React의 핡심 κ·œμΉ™μ„ μ§€μΌœμ•Όλ§Œ μ΅œμ ν™”κ°€ μ΄λ€„μ§‘λ‹ˆλ‹€. 이λ₯Ό κ°•μ œν•˜κΈ° μœ„ν•΄ `eslint-plugin-react-hooks` μ‚¬μš©μ΄ κ°•λ ₯히 ꢌμž₯λ©λ‹ˆλ‹€ [9, 11, 12]. * **라이브러리 ν˜Έν™˜μ„± 문제:** λ§€ λ Œλ”λ§λ§ˆλ‹€ μƒˆλ‘œμš΄ 객체 μ°Έμ‘°λ₯Ό λ°˜ν™˜ν•˜λŠ” 일뢀 μ„œλ“œνŒŒν‹° ν›…(예: TanStack Query의 `useMutation()`, React Router의 `useLocation()`)을 μ‚¬μš©ν•  경우 λ©”λͺ¨μ΄μ œμ΄μ…˜ 체인이 λŠμ–΄μ Έ μ„±λŠ₯ μ΅œμ ν™”κ°€ μ œν•œλ  수 μžˆμŠ΅λ‹ˆλ‹€ [12, 13]. * **λ””λ²„κΉ…μ˜ λ‚œν•΄ν•¨:** μ»΄νŒŒμΌλŸ¬κ°€ λΈ”λž™λ°•μŠ€μ²˜λŸΌ λ™μž‘ν•˜λ―€λ‘œ, μ˜λ„μΉ˜ μ•Šμ€ λ¦¬λ Œλ”λ§ λ°œμƒ μ‹œ μ†ŒμŠ€ μ½”λ“œμƒμ—μ„œ 원인을 μ°ΎκΈ° μ–΄λ €μš°λ©° Profiler 도ꡬ에 크게 μ˜μ‘΄ν•΄μ•Ό ν•©λ‹ˆλ‹€ [14]. * **λ ˆκ±°μ‹œ ν”„λ‘œμ νŠΈμ˜ 기술 뢀채:** React κ·œμΉ™ μœ„λ°˜μ΄ μž¦μ€ 였래된 λŒ€ν˜• μ½”λ“œλ² μ΄μŠ€μ— μ μš©ν•˜λ €λ©΄ μƒλ‹Ήν•œ λ¦¬νŒ©ν† λ§ λΉ„μš©μ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [12, 15]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Memoization]], [[Performance Optimization]], [[Clean Code]], [[Rules of React]], [[Vite]] - **Projects/Contexts:** [[Frontend Scalable Architecture]], [[Legacy Codebase Refactoring]] - **Contradictions/Notes:** React Compilerλ₯Ό μ μš©ν•˜λ©΄ λŒ€λΆ€λΆ„μ˜ `React.memo`λŠ” μ€‘λ³΅λ˜μ–΄ μ œκ±°ν•  수 μžˆμ§€λ§Œ [15], μ„œλ“œνŒŒν‹° 라이브러리 ν˜Έν™˜μ„± λ¬Έμ œλ‚˜ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν•˜λŠ” νŠΉμ • μ—£μ§€ μΌ€μ΄μŠ€μ—μ„œλŠ” μ—¬μ „νžˆ λͺ…μ‹œμ μΈ μ œμ–΄λ₯Ό μœ„ν•΄ `useMemo`와 `useCallback`을 병행해야 ν•œλ‹€κ³  μ†ŒμŠ€λŠ” μ§€μ ν•©λ‹ˆλ‹€ [12, 16]. --- *Last updated: 2026-04-26*