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