--- id: 5e8f4a2b-1c9d-4e8b-a2f3-7d9e1c6b4a2d category: "10_Wiki/Topics/Development" confidence_score: 0.95 tags: [react, frontend, engineering, standard, 2025, performance, architecture] last_reinforced: 2026-05-01 github_commit: "initial-wikification" --- # Modern React & Frontend Engineering Standard (2025 ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > 2025๋…„์˜ ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋ง์€ ๋‹จ์ˆœํ•œ UI ๊ฐœ๋ฐœ์„ ๋„˜์–ด, FSD ์•„ํ‚คํ…์ฒ˜, ๋นŒ๋“œ ํƒ€์ž„ ์ž๋™ํ™”(React Compiler), ๊ทธ๋ฆฌ๊ณ  ๋ชฉ์ ๋ณ„๋กœ ํŒŒํŽธํ™”๋œ ์ƒํƒœ ๊ด€๋ฆฌ ์ฒด๊ณ„๋ฅผ ํ†ตํ•ด ํ™•์žฅ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ์ •๊ตํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์—”์ง€๋‹ˆ์–ด๋ง์œผ๋กœ ์ง„ํ™”ํ–ˆ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) ### 1. ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜: Feature-Sliced Design (FSD) - **๊ณ„์ธต์  ๊ตฌ์กฐํ™”**: `app` -> `pages` -> `widgets` -> `features` -> `entities` -> `shared` ์ˆœ์˜ ๋ ˆ์ด์–ด๋ง์„ ํ†ตํ•ด ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค. - **๋‹จ๋ฐฉํ–ฅ ์˜์กด์„ฑ**: ์ƒ์œ„ ๋ ˆ์ด์–ด๋Š” ํ•˜์œ„ ๋ ˆ์ด์–ด๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ•์ œํ•˜์—ฌ ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ์›์ฒœ ์ฐจ๋‹จํ•˜๊ณ  ๋ชจ๋“ˆ ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค. - **Public API (index.ts)**: ๊ฐ ์Šฌ๋ผ์ด์Šค๋Š” `index.ts`๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์™ธ๋ถ€์™€ ์†Œํ†ตํ•˜์—ฌ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์บก์Аํ™”ํ•œ๋‹ค. ### 2. ์ƒํƒœ ๊ด€๋ฆฌ์˜ ์ „๋ฌธํ™” ๋ฐ ํŒŒํŽธํ™” - **์„œ๋ฒ„ ์ƒํƒœ**: TanStack Query (React Query)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์บ์‹ฑ, ๋™๊ธฐํ™”, ๋น„๋™๊ธฐ ์ƒํƒœ๋ฅผ ์ „๋‹ด ๊ด€๋ฆฌํ•œ๋‹ค. - **์ „์—ญ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ**: Zustand๋ฅผ ํ™œ์šฉํ•˜์—ฌ Selector ๊ธฐ๋ฐ˜์˜ ์„ธ๋ฐ€ํ•œ ๋ฆฌ๋ Œ๋”๋ง ์ œ์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, Redux๋Š” ๋ณต์žก๋„๊ฐ€ ๊ทน๋„๋กœ ๋†’์€ ๋Œ€๊ทœ๋ชจ ํ˜‘์—… ํ™˜๊ฒฝ์—์„œ๋งŒ ์ œํ•œ์ ์œผ๋กœ ์ฑ„ํƒํ•œ๋‹ค. - **๋กœ์ปฌ ๋ฐ UI ์ƒํƒœ**: `useState`, `useReducer`, ๋˜๋Š” ์ •์ ์ธ ์„ค์ •๊ฐ’์˜ ๊ฒฝ์šฐ `Context API`๋ฅผ ์ ์žฌ์ ์†Œ์— ๋ฐฐ์น˜ํ•œ๋‹ค. ### 3. ์„ฑ๋Šฅ ์—”์ง€๋‹ˆ์–ด๋ง (Build & Runtime) - **Vite & ESM**: ๊ธฐ์กด ๋ฒˆ๋“ค๋Ÿฌ ๋Œ€๋น„ ๋น„์•ฝ์ ์œผ๋กœ ๋น ๋ฅธ HMR๊ณผ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์†๋„๋ฅผ ๋ณด์žฅํ•œ๋‹ค. - **React Compiler**: ๋นŒ๋“œ ํƒ€์ž„์— AST ๋ถ„์„์„ ํ†ตํ•ด `useMemo`, `useCallback` ๋“ฑ์„ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•˜์—ฌ ์ˆ˜๋™ ๋ฉ”๋ชจ์ด์ œ์ด์…˜์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. - **์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…**: `React.lazy`์™€ Vite์˜ `manualChunks` ์„ค์ •์„ ํ†ตํ•ด ๋ผ์šฐํŠธ ๋‹จ์œ„๋กœ ๋ฒˆ๋“ค์„ ์ชผ๊ฐœ์–ด ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„(LCP)๋ฅผ ๊ฐœ์„ ํ•œ๋‹ค. ### 4. ์šด์˜ ํšŒ๋ณต์„ฑ ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค - **Error Boundaries**: ํŠน์ • ์ปดํฌ๋„ŒํŠธ์˜ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ์ „์ฒด ์•ฑ ์ค‘๋‹จ(White Screen)์œผ๋กœ ๋ฒˆ์ง€์ง€ ์•Š๋„๋ก ๊ตฌํš๋ณ„๋กœ ์•ˆ์ „์žฅ์น˜๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค. - **Observability**: Sentry, LogRocket ๋“ฑ์„ ์—ฐ๋™ํ•˜์—ฌ ์‹ค์ œ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜ ๋ฆฌํ”Œ๋ ˆ์ด ๋ฐ ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค. - **์—„๊ฒฉํ•œ ์ปจ๋ฒค์…˜**: `kebab-case`(ํŒŒ์ผ๋ช…), `PascalCase`(์ปดํฌ๋„ŒํŠธ), `camelCase`(ํ›…/๋ณ€์ˆ˜) ๋„ค์ด๋ฐ์„ ์ž๋™ํ™” ํ›…(Husky, ESLint)์œผ๋กœ ๊ฐ•์ œํ•œ๋‹ค. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๋ฉ”๋ชจ์ด์ œ์ด์…˜์˜ ํ•จ์ •**: `React.memo`์˜ ์–•์€ ๋น„๊ต ๋น„์šฉ์ด ์‹ค์ œ ๋ Œ๋”๋ง ๋น„์šฉ๋ณด๋‹ค ํด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, React Profiler ์ธก์ • ์—†๋Š” ๋ฌด๋ถ„๋ณ„ํ•œ ์ตœ์ ํ™”๋Š” ์ง€์–‘ํ•ด์•ผ ํ•œ๋‹ค. - **FSD vs Flat Structure**: ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” FSD๊ฐ€ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŒ€์˜ ์ˆ™๋ จ๋„์— ๋”ฐ๋ผ `shared` ๋ ˆ์ด์–ด ๋น„๋Œ€ํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. - **Compiler ๋ธ”๋ž™๋ฐ•์Šค**: ์ž๋™ ์ตœ์ ํ™”๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ์—ฃ์ง€ ์ผ€์ด์Šค(๋ถˆ์•ˆ์ •ํ•œ ์ฐธ์กฐ ๋ฐ˜ํ™˜ ๋“ฑ)์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์ž์˜ ์ˆ˜๋™ ๋Œ€์‘ ํŒจํ„ด์ด ์—ฌ์ „ํžˆ ํ•„์š”ํ•˜๋‹ค. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Parent**: 10_Wiki/Topics/Development - **Related**: [[Feature-Sliced Design|Feature-Sliced Design]], Zustand, React Compiler, [[Error Boundaries|Error Boundaries]] - **Raw Source**: 00_Raw/2025 ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋ง ํ‘œ์ค€ ํ™•๋ฆฝ, 00_Raw/๋Œ€๊ทœ๋ชจ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ, 00_Raw/Modern React Application Development (2025 ## ๐Ÿ’ป GitHub ๋™๊ธฐํ™” ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ 1. Stage: git add . 2. Commit: `git commit -m "[P-Reinforce] Wikify Modern React Engineering Standard 2025"` 3. Push: `git push origin main`