# [[Server Components|Server Components]] ## ๐Ÿ“Œ Brief Summary [[React Server Components|React Server Components]](RSC)๋Š” ๋นŒ๋“œ ํƒ€์ž„ ๋˜๋Š” ์š”์ฒญ ์‹œ์— ์„œ๋ฒ„์—์„œ๋งŒ ๋…์ ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋กœ JavaScript๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๋Š” React์˜ ๋ Œ๋”๋ง ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค [1]. Next.js App Router์™€ ํ•จ๊ป˜ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋„์ž…๋˜์–ด ํ”„๋ก ํŠธ์—”๋“œ ์ƒํƒœ๊ณ„์— ํฐ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์™”์œผ๋ฉฐ, ํŠนํžˆ [[React Context|React Context]]์— ์˜์กดํ•˜๋Š” ๊ธฐ์กด CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ [[Tailwind CSS|Tailwind CSS]]์™€ ๊ฐ™์€ ์ œ๋กœ ๋Ÿฐํƒ€์ž„(zero-runtime) ๋˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ์šฐ์„ (utility-first) ์Šคํƒ€์ผ๋ง ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ์˜ ์ „ํ™˜์„ ๊ฐ€์†ํ™”ํ•˜๋Š” ํ•ต์‹ฌ ์š”์ธ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [2-4]. ## ๐Ÿ“– Core Content * **RSC์˜ ๋™์ž‘ ๋ฐฉ์‹๊ณผ ํŠน์ง•:** Server Components๋Š” ๋ธŒ๋ผ์šฐ์ €๋กœ JavaScript๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ์ •์ ์œผ๋กœ ๋ Œ๋”๋ง๋œ HTML๋งŒ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค [1]. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋“ฑ์˜ ์„œ๋ฒ„ ๋กœ์ง์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒํ˜ธ์ž‘์šฉ(์ƒํƒœ ๊ด€๋ฆฌ, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ)์ด๋‚˜ ๋ธŒ๋ผ์šฐ์ € API๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ช…์‹œ์ ์œผ๋กœ `'use client'` ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ([[Client Components|Client Components]])๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ์ปดํฌ์ง€์…˜ ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [1, 5]. ์ด๋กœ ์ธํ•ด ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฒˆ๋“ค ํฌ๊ธฐ๊ฐ€ ๋Œ€ํญ ์ค„์–ด๋“ค๊ณ  ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค [6]. * **CSS-in-JS ์Šคํƒ€์ผ๋ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ํ˜ธํ™˜์„ฑ ํ•œ๊ณ„:** RSC ํ™˜๊ฒฝ์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ๊ณผ React Context๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [3, 7]. ๋”ฐ๋ผ์„œ ํ…Œ๋งˆ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด React Context์— ๊ฐ•ํ•˜๊ฒŒ ์˜์กดํ•˜๋˜ [[Styled Components|Styled Components]]๋‚˜ Emotion๊ณผ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ๊ธฐ๋ฐ˜ CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ RSC์™€ ๊ทผ๋ณธ์ ์œผ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ๊ฒช์Šต๋‹ˆ๋‹ค [2, 3, 7]. Next.js App Router์™€ ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ๊ธฐ์กด์˜ ๋Ÿฐํƒ€์ž„ CSS-in-JS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ•˜์ด๋“œ๋ ˆ์ด์…˜([[Hydration|Hydration]]) ๋ถˆ์ผ์น˜ ๋ฐ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 8]. * **RSC ํ™˜๊ฒฝ์—์„œ์˜ ์Šคํƒ€์ผ๋ง ๋ชจ๋ฒ” ์‚ฌ๋ก€:** * **์ œ๋กœ ๋Ÿฐํƒ€์ž„ ์Šคํƒ€์ผ๋ง ๊ถŒ์žฅ:** ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†๊ณ  ์„œ๋ฒ„ ์ปจํ…์ŠคํŠธ๋ฅผ ์š”๊ตฌํ•˜์ง€ ์•Š๋Š” Tailwind CSS๋‚˜ [[CSS Modules|CSS Modules]], [[vanilla-extract|vanilla-extract]] ๊ฐ™์€ ์ •์  CSS ์ƒ์„ฑ ๋ฐฉ์‹์ด RSC์™€ ์™„๋ฒฝํ•˜๊ฒŒ ํ˜ธํ™˜๋˜๋ฏ€๋กœ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [3, 9, 10]. * **์ •์  ์Šคํƒ€์ผ๊ณผ ๋ฐ์ดํ„ฐ ์†์„ฑ(Data attributes) ํ™œ์šฉ:** ํ”„๋กœํผํ‹ฐ ๋ณ€ํ™”์— ๋”ฐ๋ผ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹ , ์ •์  ์Šคํƒ€์ผ์„ ์„ ์–ธํ•˜๊ณ  ์ด์‚ฐ์ ์ธ ๋ณ€ํ˜•(variants)์— ๋Œ€ํ•ด์„œ๋Š” `&[data-size='lg']`์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์†์„ฑ(data attributes)์„ ํ™œ์šฉํ•˜์—ฌ ์ƒํƒœ๋ฅผ ํ† ๊ธ€ํ•˜๋Š” ๊ฒƒ์ด RSC ํ™˜๊ฒฝ์˜ ์ตœ์ ํ™” ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค [8, 11]. * **Styled Components์˜ RSC ์ง€์› ๋Œ€์‘:** Styled Components๋Š” v6.3.0 ์ด์ƒ๋ถ€ํ„ฐ ๋ณ„๋„์˜ `'use client'` ์ง€์‹œ์–ด ์—†์ด๋„ RSC ํ™˜๊ฒฝ์„ ์ž๋™ ๊ฐ์ง€ํ•˜๊ณ  ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [11]. * RSC ํ™˜๊ฒฝ์—์„œ๋Š” `ThemeProvider`์™€ `StyleSheetManager`๊ฐ€ ์ปจํ…์ŠคํŠธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด ๋™์ž‘๋„ ํ•˜์ง€ ์•Š๋Š”(no-op) ํ†ต๊ณผ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค [11, 12]. * ํ…Œ๋งˆ๋ฅผ ์œ„ํ•ด์„œ๋Š” React Context ๋Œ€์‹  CSS ์ปค์Šคํ…€ ์†์„ฑ(CSS custom properties/variables)์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” `createTheme` ํ—ฌํผ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [11, 13]. * Next.js App Router ํ™˜๊ฒฝ์—์„œ๋Š” ๋ Œ๋”๋ง ์ค‘ CSS ๊ทœ์น™์„ ์ˆ˜์ง‘ํ•˜์—ฌ HTML ํ—ค๋“œ์— ์ฃผ์ž…ํ•˜๋Š” '[[Style Registry|Style Registry]] ํŒจํ„ด'(`useServerInsertedHTML` ํ™œ์šฉ)์„ ํ†ตํ•ด SSR ํ•˜์ด๋“œ๋ ˆ์ด์…˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค [14]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[CSS-in-JS|CSS-in-JS]], Tailwind CSS, [[Styled Components|Styled Components]] - **Projects/Contexts:** [[Next.js App Router|Next.js App Router]] - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด ๊ธฐ์กด CSS-in-JS์˜ ํ…Œ๋งˆ ์ œ๊ณต ๋ฐฉ์‹(`ThemeProvider`)์€ React Context๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ์š”๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ RSC ํ™˜๊ฒฝ์—์„œ ํ…Œ๋งˆ๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด Context ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ ์ˆœ์ˆ˜ CSS ๋ณ€์ˆ˜([[CSS Variables|CSS Variables]]) ๊ธฐ๋ฐ˜์˜ ํ…Œ๋งˆ ๊ตฌํ˜„ ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผ๋ฒ•์„ ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค [11-13]. --- *Last updated: 2026-04-26*