--- id: wiki-2026-0508-hermes title: Hermes category: Frontend status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [auto-wikified, technical-documentation, frontend] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # Hermes ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) HermesλŠ” React Nativeμ—μ„œ λ‘œμ§μ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” κ³ λ„λ‘œ μ΅œμ ν™”λœ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이닀 [1-3]. React Native μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 싀행될 λ•Œ μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€μ„ νŒŒμ‹±ν•˜κ³  κ΅¬λ™ν•˜λŠ” 핡심 역할을 λ‹΄λ‹Ήν•œλ‹€ [2, 3]. JSI(JavaScript Interface)와 같은 React Native의 μƒˆλ‘œμš΄ μ•„ν‚€ν…μ²˜μ™€ κ²°ν•©ν•˜μ—¬ λͺ¨λ°”일 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ „λ°˜μ μΈ μ‹€ν–‰ μ„±λŠ₯κ³Ό λŸ°νƒ€μž„ νš¨μœ¨μ„±μ— 직접적인 영ν–₯을 λ―ΈμΉœλ‹€ [1]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰ 및 둜직 처리**: HermesλŠ” React Native ν”„λ ˆμž„μ›Œν¬ λ‚΄μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” 기반 엔진이닀 [3]. λͺ¨λ“  React Native 앱은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 둜직 ꡬ동을 μœ„ν•΄ 이 μ—”μ§„κ³Ό ν•¨κ»˜ λ°°ν¬λœλ‹€ [2, 4]. * **μƒˆλ‘œμš΄ μ•„ν‚€ν…μ²˜μ™€μ˜ 톡합**: React Native의 λ Œλ”λ§ 및 톡신 방식을 ν˜μ‹ ν•œ JSI(JavaScript Interface)λŠ” κ³ λ„λ‘œ μ΅œμ ν™”λœ Hermesλ₯Ό λΉ„λ‘―ν•œ λ‹€μ–‘ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진을 μ§€μ›ν•œλ‹€ [1]. 이λ₯Ό 기반으둜 μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ λ„€μ΄ν‹°λΈŒ μ½”λ“œ κ°„μ˜ 직접적이고 동기적인 바인딩이 κ°€λŠ₯ν•΄μ§„λ‹€ [1]. * **μ•± μš©λŸ‰(App Size)에 λ―ΈμΉ˜λŠ” 영ν–₯**: Hermes μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진을 ν¬ν•¨ν•˜μ—¬ λΉŒλ“œ 및 λ°°ν¬λ˜λŠ” React Native 앱은 λŒ€λž΅ 5~8 MB μˆ˜μ€€μ˜ κΈ°λ³Έ(baseline) APK 크기λ₯Ό κ°€μ§„λ‹€ [2, 4]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) **초기 μ‹œμž‘ μ§€μ—°(Startup Latency) 및 μ½œλ“œ μŠ€νƒ€νŠΈ 문제** React Native 앱은 μ‹œμž‘ν•  λ•Œ λ°˜λ“œμ‹œ Hermes μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진을 μ΄ˆκΈ°ν™”ν•˜κ³  JS λ²ˆλ“€μ„ νŒŒμ‹±ν•˜λŠ” 과정을 거쳐야 ν•˜λ©°, μ΄λŠ” μΈ‘μ • κ°€λŠ₯ν•œ μˆ˜μ€€μ˜ μ‹œμž‘ μ§€μ—°(Startup latency)을 μΆ”κ°€λ‘œ λ°œμƒμ‹œν‚¨λ‹€ [2]. 결과적으둜 λ„€μ΄ν‹°λΈŒ ARM μ½”λ“œλ‘œ 미리 컴파일(AOT)ν•˜λŠ” Flutter μ•±μ˜ μ½œλ“œ μŠ€νƒ€νŠΈ μ‹œκ°„(일반적으둜 200~400ms)κ³Ό λΉ„κ΅ν–ˆμ„ λ•Œ, Hermesλ₯Ό μ‚¬μš©ν•˜λŠ” React Native μ•±μ˜ μ½œλ“œ μŠ€νƒ€νŠΈ μ‹œκ°„μ€ 보톡 300~600ms둜 μƒλŒ€μ μœΌλ‘œ 더 λŠλ¦¬λ‹€ [2, 4]. μ΄λŸ¬ν•œ 지연은 μ„±λŠ₯ 벀치마크 μƒμ—μ„œλŠ” λˆˆμ— λ„λŠ” μ°¨μ΄μ§€λ§Œ, μ‹€μ œ λŒ€λΆ€λΆ„μ˜ μ•± μ‚¬μš©μžμ—κ²ŒλŠ” 결정적인 λ°©ν•΄ μš”μ†Œκ°€ λ˜μ§€λŠ” μ•ŠλŠ”λ‹€ [2]. ## πŸ”— 지식 μ—°κ²° (Graph) ### Related Concepts #### [관계 μœ ν˜• A (μ•„ν‚€ν…μ²˜/기반 기술)] - [[JSI (JavaScript Interface)]] - μ—°κ²° 이유: JSIλŠ” Hermes와 같은 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진을 μ§€μ›ν•˜λ©°, μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ λ„€μ΄ν‹°λΈŒ μ½”λ“œ κ°„μ˜ 동기적 바인딩을 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” ν† λŒ€μ΄κΈ° λ•Œλ¬Έμ΄λ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ΄μ „μ˜ 비동기 λΈŒλ¦Ώμ§€(Bridge) λͺ¨λΈμ—μ„œ λ²—μ–΄λ‚˜ μ–΄λ–»κ²Œ 직렬화 μ˜€λ²„ν—€λ“œ 없이 λΉ λ₯Έ λ„€μ΄ν‹°λΈŒ 톡신이 μ΄λ£¨μ–΄μ§€λŠ”μ§€ 이해할 수 μžˆλ‹€. - [[React Native New Architecture]] - μ—°κ²° 이유: Hermes 엔진은 Fabric λ Œλ”λŸ¬, TurboModules, JSI둜 κ΅¬μ„±λœ React Native의 μƒˆλ‘œμš΄ μ•„ν‚€ν…μ²˜ νŒŒμ΄ν”„λΌμΈ λ‚΄μ—μ„œ 핡심 μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰ ν™˜κ²½μœΌλ‘œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€ [5, 6]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ—”μ§„μ˜ 고도화가 크둜슀 ν”Œλž«νΌ ν”„λ ˆμž„μ›Œν¬ μ „μ²΄μ˜ μ„±λŠ₯ ν–₯상(λ™μ‹œμ„± λ Œλ”λ§, μ§€μ—° λ‘œλ”© λ“±)으둜 μ΄μ–΄μ§€λŠ” ꡬ쑰적 λ§₯락을 νŒŒμ•…ν•  수 μžˆλ‹€. #### [관계 μœ ν˜• B (비ꡐ/경쟁 기술)] - [[Flutter AOT Compilation (Dart)]] - μ—°κ²° 이유: Hermes 엔진이 μ‹€ν–‰ μ‹œμ μ— JSλ₯Ό νŒŒμ‹±ν•˜λŠ” 것과 λŒ€μ‘°μ μœΌλ‘œ, FlutterλŠ” μ½”λ“œλ₯Ό 사전에 λ„€μ΄ν‹°λΈŒλ‘œ μ»΄νŒŒμΌν•˜μ—¬ 초기 μ‹œμž‘ μ†λ„μ˜ 차이λ₯Ό λ§Œλ“€κΈ° λ•Œλ¬Έμ΄λ‹€ [2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λͺ¨λ°”일 ν”„λ ˆμž„μ›Œν¬κ°€ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” 방식(νŒŒμ‹± vs 사전 컴파일)에 λ”°λ₯Έ 초기 λ‘œλ”© 속도(Cold Start)의 νŠΈλ ˆμ΄λ“œμ˜€ν”„λ₯Ό λͺ…ν™•νžˆ 이해할 수 μžˆλ‹€. ### Deeper Research Questions - Hermes 엔진이 JSI와 κ²°ν•©λ˜μ—ˆμ„ λ•Œ ꡬ체적으둜 μ–΄λ–€ λ©”μ»€λ‹ˆμ¦˜μ„ 톡해 κΈ°μ‘΄ λΈŒλ¦Ώμ§€(Bridge)의 직렬화(Serialization) μ˜€λ²„ν—€λ“œλ₯Ό μ œκ±°ν•˜λŠ”κ°€? - Hermes의 μ—”μ§„ μ΄ˆκΈ°ν™” 및 JS λ²ˆλ“€ νŒŒμ‹± μ‹œκ°„(300~600ms)을 λ‹¨μΆ•ν•˜κΈ° μœ„ν•΄ λ²ˆλ“€ 크기λ₯Ό μ΅œμ ν™”ν•˜κ±°λ‚˜ μΊμ‹±ν•˜λŠ” κΈ°λ²•μ—λŠ” μ–΄λ–€ 것듀이 μžˆλŠ”κ°€? - λ‹€λ₯Έ μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„(예: V8, JavaScriptCore)κ³Ό λΉ„κ΅ν–ˆμ„ λ•Œ Hermesκ°€ λͺ¨λ°”일 ν™˜κ²½μ— νŠΉν™”λ˜μ–΄ κ°€μ§€λŠ” λ©”λͺ¨λ¦¬ 및 μ„±λŠ₯적 이점은 무엇인가? (μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.) - λŒ€κ·œλͺ¨ React Native μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ Hermes μ—”μ§„μ˜ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC) νŒ¨ν„΄μ΄ UI ν”„λ ˆμž„ λ“œλ‘­μ΄λ‚˜ μ• λ‹ˆλ©”μ΄μ…˜ μ„±λŠ₯에 λ―ΈμΉ˜λŠ” 영ν–₯은 무엇인가? (μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.) - μ•±μ˜ λ³΅μž‘λ„κ°€ 증가함에 따라 Hermes 기반 React Native μ•±κ³Ό Impeller/AOT 기반 Flutter μ•±μ˜ μ„±λŠ₯ 격차가 μ‚¬μš©μž κ²½ν—˜ μΈ‘λ©΄μ—μ„œ μ–΄λ–»κ²Œ λ‹€λ₯΄κ²Œ λ°œν˜„λ˜λŠ”κ°€? ### Practical Application Contexts - **Implementation:** React Native μ•± 개발 및 λΉŒλ“œ κ³Όμ •μ—μ„œ λ²ˆλ“€ 크기(5~8 MB κΈ°μ€€)λ₯Ό κ΄€λ¦¬ν•˜κ³ , ν”„λ ˆμž„μ›Œν¬ μ„±λŠ₯을 κ·ΉλŒ€ν™”ν•˜κΈ° μœ„ν•΄ JSI와 ν˜Έν™˜λ˜λŠ” μ΅œμ ν™”λœ μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„ 섀정을 ꡬ성할 λ•Œ ν™œμš©λœλ‹€. - **System Design:** λͺ¨λ°”일 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜ 섀계 μ‹œ, λΉ„μ¦ˆλ‹ˆμŠ€ 둜직(μžλ°”μŠ€ν¬λ¦½νŠΈ)κ³Ό λ„€μ΄ν‹°λΈŒ λ Œλ”λ§ κ°„μ˜ 처리 속도 및 톡신 병λͺ©μ„ ν‰κ°€ν•˜λŠ” μ§€ν‘œλ‘œ μž‘μš©ν•œλ‹€. - **Operation / Maintenance:** ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ μ•±μ˜ 초기 μ§„μž… 속도(μ½œλ“œ μŠ€νƒ€νŠΈ 300~600ms)λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ³  μ΅œμ ν™” 포인트λ₯Ό μ°ΎλŠ” 기쀀점이 λœλ‹€. - **Learning Path:** React Native κ°œλ°œμžκ°€ 기쑴의 λΈŒλ¦Ώμ§€ 기반 μ•„ν‚€ν…μ²˜μ—μ„œ λ²—μ–΄λ‚˜ μƒˆλ‘œμš΄ μ•„ν‚€ν…μ²˜(JSI, Fabric, TurboModules)둜 μ „ν™˜ν•˜λŠ” λ Œλ”λ§ 및 μ‹€ν–‰ νŒŒμ΄ν”„λΌμΈμ„ ν•™μŠ΅ν•  λ•Œ ν•„μˆ˜μ μœΌλ‘œ 이해해야 ν•˜λŠ” 기반 ν™˜κ²½μ΄λ‹€. - **My Project Relevance:** λͺ¨λ°”일 μ•± 개발 ν”„λ ˆμž„μ›Œν¬ μ„ μ • μ‹œ, React Nativeκ°€ κ°€μ§€λŠ” 'λ„€μ΄ν‹°λΈŒ μ»΄ν¬λ„ŒνŠΈ λ Œλ”λ§μ˜ 강점'κ³Ό 'μ—”μ§„ μ΄ˆκΈ°ν™” μ§€μ—°'μ΄λΌλŠ” μ„±λŠ₯적 κΈ°νšŒλΉ„μš©μ„ μ €μšΈμ§ˆν•˜λŠ” 데 직접적인 근거둜 μ‚¬μš©λœλ‹€. ### Adjacent Topics - [[React Native Performance Optimization]] - ν™•μž₯ λ°©ν–₯: λ²ˆλ“€ λΆ„ν• (Chunking), λ©”λͺ¨λ¦¬ 관리 λ“± Hermes μ—”μ§„ μœ„μ—μ„œ μ‹€ν–‰λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯을 μ‹€μ§ˆμ μœΌλ‘œ κ°œμ„ ν•˜λŠ” μ΅œμ ν™” κΈ°λ²•μœΌλ‘œ 지식을 ν™•μž₯ν•  수 μžˆλ‹€. - [[Cross-platform Mobile Development Frameworks]] - ν™•μž₯ λ°©ν–₯: λ Œλ”λ§ μ—”μ§„(Skia, Impeller)을 μ‚¬μš©ν•˜λŠ” Flutter와 μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„(Hermes)을 μ‚¬μš©ν•˜λŠ” React Native의 철학적, μ•„ν‚€ν…μ²˜μ  μ ‘κ·Ό 방식을 ν­λ„“κ²Œ 비ꡐ 연ꡬ할 수 μžˆλ‹€. --- *Last updated: 2026-05-03* ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*