# [[Uber Base Web React Component Library]] ## πŸ“Œ Brief Summary Uber Base Web은 Uberκ°€ 사내 및 μ™ΈλΆ€ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ UIλ₯Ό ν†΅ν•©ν•˜κΈ° μœ„ν•΄ κ°œλ°œν•˜μ—¬ 2018년에 μ˜€ν”ˆ μ†ŒμŠ€λ‘œ κ³΅κ°œν•œ React μ»΄ν¬λ„ŒνŠΈ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€ [1, 2]. λ””λ°”μ΄μŠ€μ— ꡬ애받지 μ•ŠλŠ” 기반 ν™˜κ²½μ„ μ œκ³΅ν•˜λ©°, 높은 μ‹ λ’°μ„±κ³Ό μ ‘κ·Όμ„±, 그리고 κ΄‘λ²”μœ„ν•œ μ»€μŠ€ν„°λ§ˆμ΄μ§•μ„ μ§€μ›ν•˜λŠ” μ•„ν‚€ν…μ²˜λ₯Ό νŠΉμ§•μœΌλ‘œ ν•©λ‹ˆλ‹€ [3]. λ³΅μž‘ν•˜κ³  ν™•μž₯ κ°€λŠ₯ν•œ ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½μ—μ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ UI μ»΄ν¬λ„ŒνŠΈλ₯Ό κ΅¬μΆ•ν•˜λŠ” 데 ν•„μš”ν•œ λ””μžμΈ 토큰과 μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ„ 효과적으둜 κ΅¬ν˜„ν•œ λŒ€ν‘œμ μΈ μ‚¬λ‘€μž…λ‹ˆλ‹€ [2, 4]. ## πŸ“– Core Content - **λ„μž… λ°°κ²½ 및 λͺ©μ :** UberλŠ” 수백 개의 λ‚΄λΆ€ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 제각각 μž‘λ™ν•˜μ—¬ λ°œμƒν•˜λŠ” ν•™μŠ΅ 곑선과 λΉ„νš¨μœ¨μ„±μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ Base Web을 λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€ [1, 2]. 이 λ””μžμΈ μ‹œμŠ€ν…œμ€ μ—”μ§€λ‹ˆμ–΄, λ””μžμ΄λ„ˆ, ν”„λ‘œλ•νŠΈ λ§€λ‹ˆμ €κ°€ κ³΅ν†΅μ˜ ꡬ성 μš”μ†Œ(building blocks)λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜‘μ—…ν•  수 μžˆλ„λ‘ λ•λŠ” 곡톡 μ–Έμ–΄ 역할을 ν•©λ‹ˆλ‹€ [3]. - **ν™•μž₯ κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈ 섀계 (Overrides Pattern):** Base Web μ•„ν‚€ν…μ²˜μ˜ κ°€μž₯ κ°•λ ₯ν•œ νŠΉμ§• 쀑 ν•˜λ‚˜λŠ” μ»€μŠ€ν„°λ§ˆμ΄μ§•μ„ μœ„ν•œ **Overrides API**μž…λ‹ˆλ‹€ [5, 6]. λ‹€μ–‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μš”κ΅¬μ‚¬ν•­μ„ μΆ©μ‘±ν•˜κΈ° μœ„ν•΄ μ»΄ν¬λ„ŒνŠΈμ— μˆ˜λ§Žμ€ prop을 μΆ”κ°€ν•˜λ©΄ μ½”λ“œκ°€ λ³΅μž‘ν•΄μ§€λŠ” 'prop soup' ν˜„μƒμ΄ λ°œμƒν•©λ‹ˆλ‹€ [4]. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ Base Web의 λͺ¨λ“  μ»΄ν¬λ„ŒνŠΈλŠ” `overrides` prop을 λ…ΈμΆœν•©λ‹ˆλ‹€ [4]. κ°œλ°œμžλŠ” 이 prop을 톡해 κΈ°λ³Έ μŠ€νƒ€μΌκ³Ό λ”₯ 병합(deep-merged)λ˜λŠ” μ»€μŠ€ν…€ μŠ€νƒ€μΌμ„ ν•˜μœ„ μš”μ†Œμ— μ£Όμž…ν•˜κ±°λ‚˜, μΆ”κ°€ 속성을 μ „λ‹¬ν•˜κ±°λ‚˜, ν”„λ¦¬μ  ν…Œμ΄μ…”λ„ μ»΄ν¬λ„ŒνŠΈ 자체λ₯Ό μ™„μ „νžˆ ꡐ체할 수 μžˆμŠ΅λ‹ˆλ‹€ [4, 7, 8]. - **μŠ€νƒ€μΌλ§ 및 μ ‘κ·Όμ„± (Styling & Accessibility):** μ„±λŠ₯을 μ΅œμ ν™”ν•˜κΈ° μœ„ν•΄ Base Web은 **Styletron**을 ν™œμš©ν•˜μ—¬ **Atomic CSS**λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€ [9]. 이λ₯Ό 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ΅œμ†Œν•œμ˜ CSS μ½˜ν…μΈ λ§Œ λ‹€μš΄λ‘œλ“œν•˜λ„λ‘ ν•˜μ—¬, λ„€νŠΈμ›Œν¬ 연결이 μ—΄μ•…ν•œ λͺ¨λ°”일 ν™˜κ²½μ—μ„œλ„ λΉ λ₯΄κ²Œ λ Œλ”λ§λ  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [9]. λ˜ν•œ, ν‚€λ³΄λ“œ λ‚΄λΉ„κ²Œμ΄μ…˜ 및 슀크린 리더 ν˜Έν™˜μ„± λ“± μ² μ €ν•œ μ ‘κ·Όμ„±(A11y) ν‘œμ€€μ„ λ‚΄μž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [9, 10]. - **μ‹ λ’°μ„± 보μž₯ (Reliability):** ν”½μ…€ λ‹¨μœ„μ˜ μ™„λ²½ν•œ λ ˆμ΄μ•„μ›ƒμ„ 보μž₯ν•˜κΈ° μœ„ν•΄ λ§€ μ»€λ°‹λ§ˆλ‹€ μ‹œκ°μ  νšŒκ·€(visual regression) μ„œλΉ„μŠ€λ₯Ό 톡해 μŠ€ν¬λ¦¬λ‹μ„ μ§„ν–‰ν•˜λ©°, Puppeteerλ₯Ό μ΄μš©ν•œ E2E(End-to-End) ν…ŒμŠ€νŠΈλ‘œ 버그λ₯Ό 사전에 μ°¨λ‹¨ν•©λ‹ˆλ‹€ [11]. - **λ””μžμΈ μ‹œμŠ€ν…œ κ΄€μΈ‘ 및 관리 (Design System Observability):** UberλŠ” ν™•μž₯ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό μ²΄κ³„μ μœΌλ‘œ κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ 'Base Counter'λΌλŠ” 도ꡬλ₯Ό ν™œμš©ν•©λ‹ˆλ‹€ [12, 13]. μ΄λŠ” λ·° 트리(view tree)λ₯Ό μˆœνšŒν•˜λ©° κ°œλ°œμžκ°€ μΌνšŒμ„± μ»€μŠ€ν…€ μ»΄ν¬λ„ŒνŠΈ λŒ€μ‹  ν‘œμ€€ Base μ»΄ν¬λ„ŒνŠΈλ₯Ό μ–Όλ§ˆλ‚˜ 잘 μ±„νƒν•˜κ³  μžˆλŠ”μ§€ 결정둠적(deterministic)으둜 μ‹œκ°ν™”ν•˜κ³  μΈ‘μ •ν•˜μ—¬ 규λͺ¨μ— λ§žλŠ” ν’ˆμ§ˆμ„ μœ μ§€ν•˜λ„λ‘ λ•μŠ΅λ‹ˆλ‹€ [13, 14]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Overrides Pattern]], [[React Component Library]], [[Design System]], [[Styletron]], [[Atomic CSS]] - **Projects/Contexts:** [[Uber Internal Web Applications]], [[Modern Frontend Engineering]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λͺ…μ‹œμ μΈ λͺ¨μˆœμ μ€ μ—†μœΌλ‚˜, Base Web은 μž¬μ‚¬μš©μ„± ν™•μž₯을 μœ„ν•΄ μ»΄ν¬λ„ŒνŠΈ μž‘μ„±μžκ°€ λͺ¨λ“  μ—£μ§€ μΌ€μ΄μŠ€λ§ˆλ‹€ μƒˆλ‘œμš΄ prop을 λ…ΈμΆœν•˜λŠ” λŒ€μ‹ , ν†΅ν•©λœ `overrides` API ν•˜λ‚˜λ‘œ ν•˜μœ„ μš”μ†Œλ₯Ό μ œμ–΄ν•˜κ²Œ ν•¨μœΌλ‘œμ¨ 라이브러리의 λΉ„λŒ€ν™”λ₯Ό μ„±κ³΅μ μœΌλ‘œ λ°©μ§€ν–ˆμŒμ΄ μ£Όμš” μ•„ν‚€ν…μ²˜μ  νŠΉμ§•μœΌλ‘œ κ°•μ‘°λ©λ‹ˆλ‹€ [4, 6]. --- *Last updated: 2026-04-26*