# [[Base Web]] ## πŸ“Œ Brief Summary Base Web은 μˆ˜λ§Žμ€ λ‚΄λΆ€ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 일관성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ μš°λ²„(Uber)μ—μ„œ κ°œλ°œν•˜κ³  2018년에 μ˜€ν”ˆμ†ŒμŠ€λ‘œ κ³΅κ°œν•œ React μ»΄ν¬λ„ŒνŠΈ 라이브러리이자 λ””μžμΈ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€ [1-3]. 기기에 ꡬ애받지 μ•ŠλŠ” λ²”μš©μ μΈ κΈ°λ°˜μ„ μ œκ³΅ν•˜μ—¬, ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλ“€μ΄ 반볡적인 UI ꡬ좕 μž‘μ—…μ„ ν”Όν•˜κ³  μ•ˆμ •μ μ΄λ©° 접근성이 λ›°μ–΄λ‚œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉ λ₯΄κ³  μ‰½κ²Œ λ§Œλ“€ 수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€ [2]. 특히 λ³΅μž‘ν•œ μ»΄ν¬λ„ŒνŠΈμ˜ μ»€μŠ€ν„°λ§ˆμ΄μ§• μ‹œ λ°œμƒν•˜λŠ” 속성(prop) λΉ„λŒ€ν™” 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ κ³ μœ ν•œ 'μ˜€λ²„λΌμ΄λ“œ(Overrides)' νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λŠ” 것이 핡심적인 νŠΉμ§•μž…λ‹ˆλ‹€ [4, 5]. ## πŸ“– Core Content - **λ„μž… λ°°κ²½ 및 νš¨μœ¨μ„± μ¦λŒ€**: μš°λ²„λŠ” 사내 수백 개의 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μš΄μ˜ν•˜λ©΄μ„œ λ°œμƒν•˜λŠ” 개발 λ¦¬μ†ŒμŠ€ 낭비와 UI 뢈일치λ₯Ό μ€„μ΄κ³ μž κ³΅ν†΅λœ λ””μžμΈ μ–Έμ–΄λ₯Ό 담은 Base Web을 κ΅¬μΆ•ν–ˆμŠ΅λ‹ˆλ‹€ [1, 6]. λ‚΄λΆ€ 데이터에 λ”°λ₯΄λ©΄, μ»€μŠ€ν…€ μ»΄ν¬λ„ŒνŠΈλ₯Ό κ΅¬μΆ•ν•˜λŠ” 것에 λΉ„ν•΄ 개발 μ†λ„λŠ” 3λ°° λΉ λ₯΄κ³ , μ‹œκ°μ  λΆˆμΌμΉ˜λŠ” 4λ°° κ°μ†Œν•˜λ©°, μ½”λ“œ 양을 50%λ‚˜ μ€„μ—¬μ£ΌλŠ” κ°•λ ₯ν•œ 생산성 ν–₯상 효과λ₯Ό λ³΄μ˜€μŠ΅λ‹ˆλ‹€ [7]. - **μ‹ λ’°μ„±(Reliability) 및 μ ‘κ·Όμ„±(Accessibility) 보μž₯**: λͺ¨λ“  React μ»΄ν¬λ„ŒνŠΈμ— μ‹œκ°μ  νšŒκ·€(visual regression) ν…ŒμŠ€νŠΈλ₯Ό 거치며, Puppeteerλ₯Ό ν™œμš©ν•œ 쒅단 κ°„(E2E) ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•˜μ—¬ ν”½μ…€ λ‹¨μœ„μ˜ μ •ν™•μ„±κ³Ό 버그 μ—†λŠ” ν™˜κ²½μ„ 보μž₯ν•©λ‹ˆλ‹€ [8]. λ˜ν•œ ν‚€λ³΄λ“œ 탐색과 ν™”λ©΄ νŒλ…κΈ°(screen reader), ARIA 역할을 μ™„λ²½νžˆ μ§€μ›ν•˜μ—¬ μ ‘κ·Όμ„± 기쀀을 μΆ©μ‘±ν•©λ‹ˆλ‹€ [9, 10]. λͺ¨λ°”일 ν™˜κ²½ 및 λ„€νŠΈμ›Œν¬κ°€ μ—΄μ•…ν•œ μ‚¬μš©μžλ₯Ό μœ„ν•΄ Styletron을 적용, μ•„ν† λ―Ή(atomic) μŠ€νƒ€μΌλ§μœΌλ‘œ λ²ˆλ“€ 크기λ₯Ό μ΅œμ ν™”ν•©λ‹ˆλ‹€ [9]. - **ν™•μž₯ κ°€λŠ₯ν•œ μ•„ν‚€ν…μ²˜: μ˜€λ²„λΌμ΄λ“œ(Overrides) νŒ¨ν„΄**: μž¬μ‚¬μš© κ°€λŠ₯ν•œ UI μ»΄ν¬λ„ŒνŠΈ 섀계 μ‹œ 무수히 λ§Žμ€ 속성이 λˆ„μ λ˜λŠ” "prop soup" ν˜„μƒμ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄ Base Web의 λͺ¨λ“  μ»΄ν¬λ„ŒνŠΈλŠ” `overrides` prop을 λ…ΈμΆœν•©λ‹ˆλ‹€ [5, 11]. 이 νŒ¨ν„΄μ„ 톡해 κ°œλ°œμžλŠ” μƒˆλ‘œμš΄ 속성을 μΆ”κ°€ν•˜μ§€ μ•Šκ³ λ„ μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ˜ νŠΉμ • ν•˜μœ„ μš”μ†Œ(sub-element)에 μ»€μŠ€ν…€ μ†μ„±μ΄λ‚˜ μŠ€νƒ€μΌμ„ μ£Όμž…ν•  수 있으며, 심지어 λ‚΄λΆ€ μ»΄ν¬λ„ŒνŠΈ 자체λ₯Ό μ™„μ „νžˆ λ‹€λ₯Έ ν”„λ ˆμ  ν…Œμ΄μ…˜ μ»΄ν¬λ„ŒνŠΈλ‘œ ꡐ체할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€ [12-14]. μ΄λŠ” μ΅œμƒμœ„ APIλ₯Ό κΉ”λ”ν•˜κ²Œ μœ μ§€ν•˜λ©΄μ„œλ„ κ³ λ„μ˜ μ»€μŠ€ν„°λ§ˆμ΄μ§•μ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€ [12]. - **λ””μžμΈ μ‹œμŠ€ν…œ κ΄€μΈ‘μ„±(Observability)**: μš°λ²„λŠ” λŒ€κ·œλͺ¨λ‘œ λ””μžμΈ μ‹œμŠ€ν…œμ˜ 채택을 μž₯λ €ν•˜κΈ° μœ„ν•΄ 'Base Counter'λΌλŠ” 도ꡬλ₯Ό λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€ [15, 16]. μ΄λŠ” ν™”λ©΄μ˜ λ·° 트리λ₯Ό λΆ„μ„ν•˜μ—¬ Base μ»΄ν¬λ„ŒνŠΈμ™€ μΌνšŒμ„± μ»€μŠ€ν…€ μ»΄ν¬λ„ŒνŠΈμ˜ μ‚¬μš© λΉ„μœ¨μ„ κ²°μ •λ‘ μ μœΌλ‘œ μΈ‘μ •ν•˜λ©°, λ””μžμΈ ν’ˆμ§ˆ μ§€ν‘œλ₯Ό μ—”μ§€λ‹ˆμ–΄λ§ μ§€ν‘œμ™€ λ™μΌν•œ μˆ˜μ€€μœΌλ‘œ κ΄€λ¦¬ν•˜μ—¬ ν™•μž₯ κ°€λŠ₯ν•œ ν”„λ‘ νŠΈμ—”λ“œ 관리λ₯Ό μ‹€ν˜„ν•©λ‹ˆλ‹€ [15, 17, 18]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Design Systems]], [[Reusable UI Components]], [[Overrides Pattern]], [[Accessibility (A11y)]], [[Styletron]] - **Projects/Contexts:** [[Uber's Internal Web Applications]], [[Scalable Frontend Architecture]] - **Contradictions/Notes:** μ»΄ν¬λ„ŒνŠΈ 라이브러리 ꡬ좕 μ‹œ ν™•μž₯성을 ν™•λ³΄ν•˜λŠ” 방식에 κ΄€ν•˜μ—¬, μ†ŒμŠ€μ—μ„œλŠ” Base Web이 λ³΅μž‘ν•œ μ—£μ§€ μΌ€μ΄μŠ€λ₯Ό 닀루기 μœ„ν•΄ [[Overrides Pattern]]을 μ‚¬μš©ν•˜λŠ” λŒ€ν‘œμ  μ‚¬λ‘€λ‘œ μ„€λͺ…ν•©λ‹ˆλ‹€ [5]. 이와 λ³‘ν–‰ν•˜μ—¬, 졜근 React μƒνƒœκ³„μ—μ„œλŠ” μŠ€νƒ€μΌλ§κ³Ό UI λ‘œμ§μ„ μ™„μ „νžˆ λΆ„λ¦¬ν•˜λŠ” [[Headless Components]]λ‚˜ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ—¬λŸ¬ ν•˜μœ„ ꡬ쑰둜 μͺΌκ°œμ–΄ μƒνƒœλ₯Ό κ³΅μœ ν•˜λŠ” [[Compound Components]] νŒ¨ν„΄λ„ λ›°μ–΄λ‚œ μž¬μ‚¬μš©μ„± λŒ€μ•ˆμœΌλ‘œ ν•¨κ»˜ μ œμ‹œλ˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [19-21]. --- *Last updated: 2026-04-26*