ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
I Built a Job Tracker and These Bugs Nearly Finished Me โ€” Advice Welcome ๐Ÿ›
Dev.toDev.to
Frontend

Next.js App Router ๊ธฐ๋ฐ˜ Kanban ์‹œ์Šคํ…œ์˜ ์ƒํƒœ ๋™๊ธฐํ™” ๋ฐ Hydration ์ด์Šˆ ํ•ด๊ฒฐ

I Built a Job Tracker and These Bugs Nearly Finished Me โ€” Advice Welcome ๐Ÿ›

Solomon Isu2026๋…„ 5์›” 3์ผ3๋ถ„beginner

Context

Next.js 16, MongoDB, DnD Kit๋ฅผ ํ™œ์šฉํ•œ Kanban ์Šคํƒ€์ผ์˜ Job Tracker ๊ตฌ์ถ• ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๋ Œ๋”๋ง ๋ถˆ์ผ์น˜ ๋ฌธ์ œ ๋ถ„์„. Server Actions์™€ Client State ๊ฐ„์˜ ๋™๊ธฐํ™” ๋ถ€์žฌ๋กœ ์ธํ•œ UI ์—…๋ฐ์ดํŠธ ์ง€์—ฐ ๋ฐ Next.js์˜ ๊ณต๊ฒฉ์ ์ธ Caching ์ „๋žต์œผ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๊ฒฐ์—ฌ๊ฐ€ ์ฃผ์š” ๋ณ‘๋ชฉ์œผ๋กœ ์ž‘์šฉ.

Technical Solution

  • useEffect ๋‚ด setState ์ง์ ‘ ํ˜ธ์ถœ๋กœ ์ธํ•œ ๋ฌดํ•œ re-render ๋ฐœ์ƒ์„ useState ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •์„ ํ†ตํ•œ ๋ถˆํ•„์š”ํ•œ Side Effect ์ œ๊ฑฐ๋กœ ํ•ด๊ฒฐ
  • Type Narrowing ๋ถ€์žฌ๋กœ ์ธํ•œ TypeScript ํƒ€์ž… ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ Optional Chaining ๊ธฐ๋ฐ˜์˜ ์กฐ๊ฑด๋ถ€ ์ฒดํฌ๋ฅผ ํ†ตํ•ด ์ •์  ํƒ€์ž… ์•ˆ์ •์„ฑ ํ™•๋ณด
  • Server Action ์™„๋ฃŒ ํ›„ UI ๋ฏธ๋ฐ˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด useBoard๋ถ€ํ„ฐ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ์ด์–ด์ง€๋Š” Callback Chain ๊ตฌ์กฐ ์„ค๊ณ„
  • revalidatePath ํ˜ธ์ถœ ์‹œ ๋ฐœ์ƒํ•˜๋Š” Callback ํ•จ์ˆ˜ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜์—ฌ ์ˆ˜๋™ State Update ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ํ•˜์—ฌ UI ๋ฐ˜์‘์„ฑ ์œ ์ง€
  • "use cache" ์ง€์‹œ์–ด๋กœ ์ธํ•œ Stale Data ๋…ธ์ถœ ๋ฌธ์ œ๋ฅผ ์บ์‹ฑ ์ „๋žต ์ œ๊ฑฐ๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋ณด์žฅ
  • Server-Client ๊ฐ„ ID ์ƒ์„ฑ ๋ถˆ์ผ์น˜๋กœ ์ธํ•œ Hydration Mismatch ํ˜„์ƒ์„ isMounted ํŒจํ„ด์„ ์ ์šฉํ•œ Client-only Rendering์œผ๋กœ ํ•ด๊ฒฐ

- Next.js App Router ์‚ฌ์šฉ ์‹œ Server Action๊ณผ Client State ๊ฐ„์˜ ๋™๊ธฐํ™” ์ „๋žต(React Query, Zustand ๋“ฑ) ๊ฒ€ํ†  - DnD Kit์™€ ๊ฐ™์€ Client-side ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋„์ž… ์‹œ isMounted ํŒจํ„ด์„ ํ†ตํ•œ Hydration Warning ๋ฐฉ์ง€ - useEffect ์‚ฌ์šฉ ์ „ useState์˜ ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •์ด๋‚˜ Derived State๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•œ์ง€ ์šฐ์„  ํ™•์ธ - Next.js์˜ Caching ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์ถฉ๋Œํ•˜๋Š”์ง€ ๊ฒ€์ฆ

์›๋ฌธ ์ฝ๊ธฐ