--- id: 7f8e9d2c-b1a3-4e5f-a0b2-c1d2e3f4a5b6 category: Dev confidence_score: 0.98 tags: [react, legacy, migration, refactoring, incremental-migration, architecture, frontend] last_reinforced: 2026-05-01 github_commit: "wikification-legacy-react" --- # Legacy React Migration & Refactoring Standard ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ๋ ˆ๊ฑฐ์‹œ React ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ํ˜„๋Œ€ํ™”๋Š” '์ „๋ฉด ์žฌ์ž‘์„ฑ(Rewrite)'์ด ์•„๋‹Œ '์ ์ง„์  ๋ฆฌํŒฉํ† ๋ง(Incremental Refactor)'์„ ์›์น™์œผ๋กœ ํ•˜๋ฉฐ, ํ…Œ์ŠคํŠธ ์•ˆ์ „๋ง ๊ตฌ์ถ•, ์ปค์Šคํ…€ ํ›…์„ ํ†ตํ•œ ๋กœ์ง ๋ถ„๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  FSD ์•„ํ‚คํ…์ฒ˜ ๋„์ž…์„ ํ†ตํ•ด ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) ### 1. ๋ฆฌํŒฉํ† ๋ง์˜ ํ™ฉ๊ธˆ๋ฅ : Refactor, Do Not Rewrite - **์•ˆ์ „๋ง ์„ ๊ตฌ์ถ•**: ์ฝ”๋“œ ์ˆ˜์ • ์ „ ์œ ๋‹› ํ…Œ์ŠคํŠธ ๋ฐ ์‹œ๊ฐ์  ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Storybook, Chromatic ๋“ฑ)๋ฅผ ํ†ตํ•ด ๊ธฐ์กด ๊ธฐ๋Šฅ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค. - **์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜**: ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ๋ฐ”๊พธ๋Š” ๋Œ€์‹ , ์•Œ๋ฆผ์ด๋‚˜ ์ž‘์€ ๊ธฐ๋Šฅ ๋‹จ์œ„์˜ ์Šคํ† ์–ด๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ตœ์‹  ์ƒํƒœ(Zustand, TanStack Query ๋“ฑ)๋กœ ์ „ํ™˜ํ•œ๋‹ค. ### 2. ์ปดํฌ๋„ŒํŠธ ๋ฐ ์–ธ์–ด์˜ ํ˜„๋Œ€ํ™” - **ํ•จ์ˆ˜ํ˜• ์ „ํ™˜**: ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํ›…(Hooks) ๊ธฐ๋ฐ˜์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉฐ, ๋ถˆํ•„์š”ํ•œ `useEffect` ์•ˆํ‹ฐํŒจํ„ด์„ ์ œ๊ฑฐํ•œ๋‹ค. - **TypeScript ๋„์ž…**: ์ •์  ํƒ€์ดํ•‘์„ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ด๋ฉฐ, ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•œ๋‹ค. - **๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ**: ๋น„๋Œ€ํ•œ ์ปดํฌ๋„ŒํŠธ(300์ค„ ์ด์ƒ)์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ **์ปค์Šคํ…€ ํ›…**์œผ๋กœ ์ถ”์ถœํ•˜์—ฌ UI์™€ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•œ๋‹ค. ### 3. ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ๊ฐœํŽธ - **์ƒํƒœ ๋ถ„ํ• **: ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ(TanStack Query), ์ „์—ญ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ(Zustand), URL ์ƒํƒœ ๋“ฑ์œผ๋กœ ๋ชฉ์ ์— ๋งž๊ฒŒ ํŒŒํŽธํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•œ๋‹ค. - **FSD ์•„ํ‚คํ…์ฒ˜ ๋„์ž…**: ๊ธฐ์ˆ ์  ํŒŒ์ผ ์œ ํ˜•(Type-based) ๊ตฌ์กฐ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ์ค‘์‹ฌ์˜ **Feature-Sliced Design**์œผ๋กœ ๊ฐœํŽธํ•˜์—ฌ ๋ชจ๋“ˆ ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์‘์ง‘๋„๋ฅผ ๋†’์ธ๋‹ค. ### 4. ์ฝ”๋“œ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋ฐ ํ‘œ์ค€ํ™” - **๋„ค์ด๋ฐ ๊ทœ์น™**: `kebab-case`(ํŒŒ์ผ๋ช…/ํด๋”๋ช…), `PascalCase`(์ปดํฌ๋„ŒํŠธ), `camelCase`(ํ›…/๋ณ€์ˆ˜) ๋“ฑ ์šด์˜์ฒด์ œ ๋ฐ ํŒ€ ํ˜‘์—… ํ‘œ์ค€์„ ์ˆ˜๋ฆฝํ•œ๋‹ค. - **์ž๋™ํ™”**: ESLint, Prettier, Husky๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ปค๋ฐ‹ ์‹œ์ ์— ์•„ํ‚คํ…์ฒ˜ ๊ฒฝ๊ณ„ ์œ„๋ฐ˜ ๋ฐ ํฌ๋งทํŒ…์„ ์ž๋™์œผ๋กœ ๊ฒ€์‚ฌํ•œ๋‹ค. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **์ถ”์ƒํ™”์˜ ํ•จ์ • (DRY vs KISS)**: ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ๊ณผ๋„ํ•œ ์ถ”์ƒํ™”๋Š” ์˜คํžˆ๋ ค ์ฝ”๋“œ๋ฅผ ๋ธ”๋ž™๋ฐ•์Šคํ™”ํ•˜์—ฌ ๋””๋ฒ„๊น…์„ ์–ด๋ ต๊ฒŒ ํ•œ๋‹ค. '์„ธ ๋ฒˆ ๋ฐ˜๋ณต๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ(Rule of Three)' ์›์น™์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค. - **๊ณผ๋„๊ธฐ์  ๋ณต์žก์„ฑ**: ์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘์—๋Š” ๋ ˆ๊ฑฐ์‹œ์™€ ์‹ ๊ทœ ์ƒํƒœ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ๊ณต์กดํ•˜์—ฌ ์ผ์‹œ์ ์œผ๋กœ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Œ์„ ์ธ์ง€ํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋กœ๋“œ๋งต์„ ๋ช…ํ™•ํžˆ ํ•ด์•ผ ํ•œ๋‹ค. - **์ดˆ๊ธฐ ์˜ค๋ฒ„ํ—ค๋“œ**: FSD ๋“ฑ์˜ ์—„๊ฒฉํ•œ ๊ตฌ์กฐ๋Š” ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ณผ๋„ํ•œ ์„ค๊ณ„(Overkill)๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ์— ๋งž์ถฐ ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉํ•œ๋‹ค. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Parent**: 10_Wiki/Topics/Development - **Related**: [[Feature-Sliced Design|Feature-Sliced Design]], TanStack Query, Zustand, Unit Testing, [[SOLID Principles|SOLID Principles]] - **Raw Source**: 00_Raw/๋ ˆ๊ฑฐ์‹œ React ์ฝ”๋“œ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, 00_Raw/Incremental Migration, 00_Raw/Legacy React Codebase Modernization, 00_Raw/Legacy React Codebase Refactoring, 00_Raw/React Codebase Refactoring, 00_Raw/แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„…แ…ตแ„‘แ…ขแ†จแ„แ…ฉแ„…แ…ตแ†ผ แ„†แ…ตแ†พ แ„แ…ฉแ„ƒแ…ณ แ„‹แ…ฒแ„Œแ…ตแ„‡แ…ฉแ„‰แ…ฎ ## ๐Ÿ’ป GitHub ๋™๊ธฐํ™” ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ 1. Stage: git add . 2. Commit: `git commit -m "[P-Reinforce] Wikify Legacy React Migration & Refactoring Standard"` 3. Push: `git push origin main`