# [[styled-components|styled-components]] ## πŸ“Œ Brief Summary styled-componentsλŠ” [[JavaScript|JavaScript]] 파일 λ‚΄μ—μ„œ νƒœκ·Έλœ ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄(Tagged Template Literals)을 μ‚¬μš©ν•˜μ—¬ React μ»΄ν¬λ„ŒνŠΈμ˜ μŠ€νƒ€μΌμ„ μ§€μ •ν•˜λŠ” λŒ€ν‘œμ μΈ CSS-in-JS λΌμ΄λΈŒλŸ¬λ¦¬μ΄λ‹€ [1-3]. μŠ€νƒ€μΌμ„ κ°œλ³„ μ»΄ν¬λ„ŒνŠΈμ— μ§€μ—­μ μœΌλ‘œ μΊ‘μŠν™”ν•˜μ—¬ μ „μ—­ λ„€μž„μŠ€νŽ˜μ΄μŠ€ μΆ©λŒμ΄λ‚˜ μŠ€νƒ€μΌ λˆ„μˆ˜ ν˜„μƒμ„ λ°©μ§€ν•œλ‹€ [3-5]. Propsλ‚˜ μƒνƒœ([[State|State]]), ν…Œλ§ˆλ₯Ό ν™œμš©ν•œ 동적 μŠ€νƒ€μΌλ§ μΈ‘λ©΄μ—μ„œ λ›°μ–΄λ‚œ 개발자 κ²½ν—˜μ„ μ œκ³΅ν•˜μ§€λ§Œ, λŸ°νƒ€μž„μ— CSSλ₯Ό μƒμ„±ν•˜κ³  μ£Όμž…ν•˜λŠ” 방식 λ•Œλ¬Έμ— μ„±λŠ₯ μ˜€λ²„ν—€λ“œμ™€ λ²ˆλ“€ 크기 μ¦κ°€λΌλŠ” νŠΈλ ˆμ΄λ“œμ˜€ν”„κ°€ μ‘΄μž¬ν•œλ‹€ [6, 7]. ## πŸ“– Core Content * **μž‘λ™ 원리 및 개발자 κ²½ν—˜(DX):** styled-componentsλŠ” ES6의 νƒœκ·Έλœ ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ„ 톡해 μ»΄ν¬λ„ŒνŠΈμ™€ ν•΄λ‹Ή μŠ€νƒ€μΌμ„ ν•¨κ»˜ 배치(Co-location)ν•œλ‹€ [1, 5, 6]. `ThemeProvider`λ₯Ό μ΄μš©ν•œ λ‚΄μž₯ ν…Œλ§ˆ μ‹œμŠ€ν…œμ„ μ§€μ›ν•˜λ©° [6, 8], TypeScript와 μ›ν™œν•˜κ²Œ ν†΅ν•©λ˜μ–΄ Props 기반의 νƒ€μž… μ•ˆμ „ν•œ 동적 μŠ€νƒ€μΌλ§μ„ κ΅¬ν˜„ν•  수 μžˆλ‹€ [6, 9]. DOM으둜 μ „λ‹¬λ˜μ§€ μ•Šμ•„μ•Ό ν•˜λŠ” μŠ€νƒ€μΌ μ „μš© Propsλ₯Ό ν•„ν„°λ§ν•˜κΈ° μœ„ν•΄ 이름 μ•žμ— `$`λ₯Ό λΆ™μ΄λŠ” "Transient props" κΈ°λŠ₯μ΄λ‚˜ `shouldForwardProp` APIλ₯Ό μ œκ³΅ν•˜μ—¬ κΉ”λ”ν•œ DOM 트리λ₯Ό μœ μ§€ν•  수 μžˆλ‹€ [10-12]. * **λŸ°νƒ€μž„ μ„±λŠ₯ 및 ν™•μž₯μ„± 이슈:** μŠ€νƒ€μΌμ΄ μžλ°”μŠ€ν¬λ¦½νŠΈμ— λ‚΄μž₯λ˜μ–΄ λŸ°νƒ€μž„μ— λ™μ μœΌλ‘œ μ£Όμž…λ˜λ―€λ‘œ μ•±μ˜ CPU 사이클 μ†Œλͺ¨μ™€ JS λ²ˆλ“€ 크기(μ•½ 30kb μΆ”κ°€)κ°€ μ¦κ°€ν•˜λŠ” 단점이 μžˆλ‹€ [6, 13, 14]. 이 λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œλŠ” λ³΅μž‘ν•œ λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ 저사양 κΈ°κΈ°μ—μ„œ λ Œλ”λ§ μ„±λŠ₯ 병λͺ©(예: 10,000개 리슀트 λ Œλ”λ§ ν…ŒμŠ€νŠΈ μ‹œ Tailwind λŒ€λΉ„ μ•½ 63% 더 느린 148ms μ†Œμš”)을 μœ λ°œν•  수 μžˆλ‹€ [7, 14, 15]. * **[[React Server Components (RSC)|React Server Components (RSC]] 및 Next.js 15 ν˜Έν™˜μ„±:** 전톡적인 CSS-in-JS λΌμ΄λΈŒλŸ¬λ¦¬λŠ” React Context에 μ˜μ‘΄ν•˜κΈ° λ•Œλ¬Έμ—, Contextκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ(RSC) ν™˜κ²½κ³Ό 근본적으둜 ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” λ¬Έμ œκ°€ μžˆμ—ˆλ‹€ [13, 16-18]. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ [[Next.js App Router|Next.js App Router]]μ—μ„œλŠ” λ Œλ”λ§ 쀑 CSS κ·œμΉ™μ„ μˆ˜μ§‘ν•˜λŠ” '[[Style Registry|Style Registry]]' νŒ¨ν„΄κ³Ό `useServerInsertedHTML` 훅을 μ‚¬μš©ν•΄μ•Ό ν•˜λ©°, ν•˜μ΄λ“œλ ˆμ΄μ…˜ 뢈일치λ₯Ό 막기 μœ„ν•΄ `next.config.js`의 `styledComponents` 컴파일러 μ˜΅μ…˜μ„ ν™œμ„±ν™”ν•΄μ•Ό ν•œλ‹€ [18, 19]. μ΅œμ‹  v6.3.0 μ΄μƒμ—μ„œλŠ” RSC ν™˜κ²½μ„ μžλ™ κ°μ§€ν•˜μ—¬ 인라인 `