# [[Next.js App Router|Next.js App Router]] ## ๐Ÿ“Œ Brief Summary [[Next.js|Next.js]] App Router๋Š” [[React Server Components|React Server Components]](RSC)๋ฅผ ํ•ต์‹ฌ ์•„ํ‚คํ…์ฒ˜๋กœ ๋„์ž…ํ•˜์—ฌ ๊ธฐ์กด์˜ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ Œ๋”๋ง ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚œ ์ƒˆ๋กœ์šด ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค [1]. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋กœ ๋™์ž‘ํ•˜์—ฌ ์„œ๋ฒ„์—์„œ HTML์„ ์™„์ „ํžˆ ๋ Œ๋”๋งํ•˜๋ฉฐ, ์ƒํƒœ ๊ด€๋ฆฌ๋‚˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ 'use client' ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค [2, 3]. ์ด๋Ÿฌํ•œ ์•„ํ‚คํ…์ฒ˜ ๋ณ€ํ™”๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ๊ณผ ๋ณด์•ˆ์„ ํ–ฅ์ƒ์‹œํ‚ค์ง€๋งŒ, ๊ธฐ์กด์˜ ์ƒํƒœ ๋ฐ ์ปจํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์Šคํƒ€์ผ๋ง ์ ‘๊ทผ ๋ฐฉ์‹์— ์ค‘๋Œ€ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค [4, 5]. ## ๐Ÿ“– Core Content * **React [[Server Components|Server Components]](RSC) ๋ชจ๋ธ์˜ ์ž‘๋™ ๋ฐฉ์‹** [[Next.js 15 App Router|Next.js 15 App Router]] ํ™˜๊ฒฝ์—์„œ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ JavaScript ์ฝ”๋“œ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์„œ๋ฒ„์—์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ํŒจ์นญํ•˜์—ฌ ๋ Œ๋”๋ง๋œ HTML๋งŒ์„ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค [2]. ๋ฐ˜๋ฉด ๋™์  ์ƒํƒœ ๋ณ€๊ฒฝ, ๋ธŒ๋ผ์šฐ์ € API ์ ‘๊ทผ, ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ํ•„์š”ํ•œ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ UI๋Š” ํŒŒ์ผ ์ตœ์ƒ๋‹จ์— `'use client'`๋ฅผ ๋ช…์‹œํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ ๊ฒฝ๊ณ„(Client Component Boundary)๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [3]. ํ•˜์ด๋“œ๋ ˆ์ด์…˜([[Hydration|Hydration]]) ํ”„๋กœ์„ธ์Šค๋Š” ์ด๋Ÿฌํ•œ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•ด์„œ๋งŒ ์ˆ˜ํ–‰๋˜์–ด ์ธํ„ฐ๋ž™ํ‹ฐ๋น„ํ‹ฐ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค [6]. * **์Šคํƒ€์ผ๋ง ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ถฉ๋Œ ๋ฐ ๊ถŒ์žฅ ์‚ฌํ•ญ** RSC๋Š” ์„œ๋ฒ„ ์ „์šฉ ์‹คํ–‰ ํ™˜๊ฒฝ์œผ๋กœ, [[React Context|React Context]]๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค [7, 8]. ์ด๋Š” ํ…Œ๋งˆ๋‚˜ ์ƒํƒœ๋ฅผ ์œ„ํ•ด Context API์— ์˜์กดํ•˜๋Š” ๋Ÿฐํƒ€์ž„ CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ([[styled-components|styled-components]], Emotion ๋“ฑ)๊ฐ€ App Router์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค [4, 7, 8]. ๋”ฐ๋ผ์„œ Next.js App Router๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ตœ์‹  ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ๋นŒ๋“œ ํƒ€์ž„์— ์ •์  CSS๋ฅผ ์ƒ์„ฑํ•˜๋Š” **Tailwind CSS**, **[[CSS Modules|CSS Modules]]**, ํ˜น์€ **vanilla-extract**([[Zero-Runtime CSS-in-JS|Zero-Runtime CSS-in-JS]])์˜ ๋„์ž…์ด ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [8-10]. * **CSS-in-JS ์ง€์› ๋ฐ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํŒจํ„ด** [[Next.js 15|Next.js 15]]๋Š” ๋Ÿฐํƒ€์ž„ CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ Œ๋”๋ง ์ค‘ CSS ๊ทœ์น™์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์ด๋ฅผ HTML์˜ ``์— ์ฃผ์ž…(`useServerInsertedHTML` ํ›… ํ™œ์šฉ)ํ•˜๋Š” **[[Style Registry|Style Registry]] ํŒจํ„ด**์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [11]. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ํด๋ž˜์Šค๋ช… ๋ถˆ์ผ์น˜(Hydration Mismatch)๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ์„ค์ •(์˜ˆ: `next.config.js` ๋‚ด ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜)์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค [12]. ์ตœ์‹  `styled-components` (v6.3.0 ์ด์ƒ)์˜ ๊ฒฝ์šฐ, RSC ํ™˜๊ฒฝ์„ ์ž๋™ ๊ฐ์ง€ํ•˜์—ฌ ๋ณ„๋„์˜ ์„ค์ • ์—†์ด ์ธ๋ผ์ธ `