๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Development/Next.js

[next.js] ๋นŒ๋“œ ์ตœ์ ํ™” - ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์—์„œ ๊ฐœ๋ฐœ ์ „์šฉ ์ฝ”๋“œ ์ œ์™ธํ•˜๊ธฐ

by DevIseo 2026. 2. 4.

ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก Next.js ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ์‹œ๊ฐ„์ด ์ ์  ๋Š˜์–ด๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์ฒด๊ฐํ•˜๊ฒŒ ๋๋‹ค.
“์ฝ”๋“œ๊ฐ€ ๋Š˜๋ฉด ๋นŒ๋“œ๊ฐ€ ๋А๋ ค์ง€๋Š” ๊ฑด ๋‹น์—ฐํ•œ ๊ฑฐ ์•„๋‹Œ๊ฐ€?” ์‹ถ์ง€๋งŒ,

์ž์„ธํžˆ ๋ณด๋ฉด ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๊นŒ์ง€ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ์‹œ๊ฐ„์„ ์žก์•„๋จน๋Š” ๊ตฌ๊ฐ„๋“ค์ด ์žˆ๋‹ค.

 

์ด๋ฒˆ ๊ธ€์€ ๊ทธ์ค‘ ํ•˜๋‚˜์˜€๋˜ React Query / Jotai DevTools๋ฅผ _app์— ์ •์  import๋กœ ๋„ฃ์–ด๋‘” ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•ด์„œ,

๋นŒ๋“œ ์‹œ๊ฐ„์„ ์ค„์ธ ๊ณผ์ •์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค.

 

1. ๋ฌธ์ œ: DevTools๋ฅผ ๊ทธ๋ƒฅ ๋„ฃ์œผ๋ฉด?

๊ฐœ๋ฐœ ํŽธ์˜๋ฅผ ์œ„ํ•ด @tanstack/react-query-devtools, jotai-devtools๋ฅผ ์“ฐ๋Š” ๊ฒฝ์šฐ,

๋ณดํ†ต์€ ์ƒ๋‹จ์—์„œ ์ •์  import ํ•œ ๋’ค _app ์•ˆ์—์„œ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ Œ๋”๋งํ•˜๊ฒŒ ๋œ๋‹ค.

import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
import { DevTools } from 'jotai-devtools';

function App() {
  return (
    <>
      {/* ... */}
      <ReactQueryDevtools initialIsOpen={false} />
      <DevTools position="bottom-left" />
    </>
  );
}

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ๋ถ€์ž‘์šฉ์ด ์ƒ๊ธด๋‹ค.

๋จผ์ € ํ”„๋กœ๋•์…˜์—์„œ๋„ DevTools ์ฝ”๋“œ๊ฐ€ ๋ฒˆ๋“ค์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. ์ •์  import๋Š” “์ด ํŒŒ์ผ์„ ๋ฌด์กฐ๊ฑด ๋ถˆ๋Ÿฌ์˜จ๋‹ค”๋Š” ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์—, Webpack·Next.js๊ฐ€ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๋ฅผ ํ•  ๋•Œ๋„ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ๋ฒˆ๋“ค์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” DevTools๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋ฐ, ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ๋‚ด๋ ค๊ฐ€์„œ ๋ฒˆ๋“ค ํฌ๊ธฐ์™€ ํŒŒ์‹ฑ ๋น„์šฉ์ด ๋Š˜์–ด๋‚œ๋‹ค.

 

๋‘˜์งธ๋กœ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ์ ์— DevTools ์ฒญํฌ๊นŒ์ง€ ๊ฐ™์ด ๋กœ๋“œ๋  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์ธ ๋ฒˆ๋“ค๊ณผ ํ•จ๊ป˜ ํ˜น์€ ๊ทธ ์งํ›„์— DevTools ๊ด€๋ จ ์ฒญํฌ๊ฐ€ ์š”์ฒญ๋˜๊ธฐ ๋•Œ๋ฌธ์—, “์ฒซ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„”(TTI)์ด ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœํ•  ๋•Œ๋„ ์ฒซ ๋กœ๋”ฉ์ด ๋ฌด๊ฑฐ์›Œ์ง€๋ฉด ์ฒด๊ฐ ์†๋„๊ฐ€ ๋–จ์–ด์ง„๋‹ค.

 

์…‹์งธ๋กœ ๋นŒ๋“œํ•  ๋•Œ๋งˆ๋‹ค DevTools ์˜์กด์„ฑ์„ ํŒŒ์‹ฑ·์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์—์„œ๋„ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ํ•ด์„ํ•˜๊ณ , tree-shaking·์ตœ์ ํ™” ๋Œ€์ƒ์œผ๋กœ ๋„ฃ์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋นŒ๋“œ ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์กฐ๊ธˆ์ด๋ผ๋„ ๋Š˜์–ด๋‚œ๋‹ค.

 

๊ฒฐ๊ตญ DevTools๊ฐ€ “๊ฐœ๋ฐœ์šฉ”์ž„์—๋„ ๋นŒ๋“œ ๊ณผ์ •์—์„œ ๊พธ์ค€ํžˆ ์ฒ˜๋ฆฌ ๋Œ€์ƒ์ด ๋œ๋‹ค

์ •๋ฆฌํ•˜๋ฉด, “๊ฐœ๋ฐœ์šฉ” ์ฝ”๋“œ์ธ DevTools๊ฐ€ ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค, ๋นŒ๋“œ ๊ณผ์ •, ๊ฐœ๋ฐœ ์‹œ ๋กœ๋”ฉ ๊ฒฝํ—˜ ๋ชจ๋‘์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค.

 

2. ํ•ด๊ฒฐ: ํ™˜๊ฒฝ ๋ถ„๊ธฐ + Dynamic Import

๋”ฐ๋ผ์„œ, ํ”„๋กœ์ ํŠธ์—์„œ๋Š” “ํ™˜๊ฒฝ์— ๋”ฐ๋ผ DevTools๋ฅผ ์•„์˜ˆ ๋ถ€๋ฅด์ง€ ์•Š๊ฑฐ๋‚˜, ๋ถ€๋ฅผ ๋•Œ๋งŒ ๋™์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ”๋กœ ๋ฐ”๊ฟจ๋‹ค.

๋‹ค์‹œ ์ •๋ฆฌํ•˜๋ฉด ์ด๋Ÿฐ ์ „๋žต์ด๋‹ค.

  • ํ”„๋กœ๋•์…˜์—์„œ๋Š” ์•„์˜ˆ DevTools๋ฅผ ๋ Œ๋”ํ•˜์ง€ ์•Š๋Š”๋‹ค
  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ํ•„์š”ํ•  ๋•Œ๋งŒ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•œ๋‹ค
  • DevTools๋Š” ๋ธŒ๋ผ์šฐ์ € API(window/document)์— ์˜์กดํ•˜๋ฏ€๋กœ SSR์€ ๋ˆ๋‹ค

 

์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

import dynamic from 'next/dynamic';

const isProd = process.env.NODE_ENV === 'production';

const ReactQueryDevtools = isProd
  ? () => null
  : dynamic(
      () =>
        import('@tanstack/react-query-devtools').then(
          (mod) => mod.ReactQueryDevtools,
        ),
      { ssr: false },
    );

const JotaiDevTools = isProd
  ? () => null
  : dynamic(() => import('jotai-devtools').then((mod) => mod.DevTools), {
      ssr: false,
    });

 

ํ”„๋กœ๋•์…˜(NODE_ENV === 'production')์ผ ๋•Œ๋Š” ReactQueryDevtools์™€ JotaiDevTools๋ฅผ  “์•„๋ฌด๊ฒƒ๋„ ๊ทธ๋ฆฌ์ง€ ์•Š๋Š” ์ปดํฌ๋„ŒํŠธ” () => null๋กœ ๋‘”๋‹ค.

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ์‹œ isProd๊ฐ€ true๋กœ ๊ณ ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์—, dynamic(() => import(...))๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ถ„๊ธฐ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š” dead code๊ฐ€ ๋œ๋‹ค. ๋ฒˆ๋“ค๋Ÿฌ๋Š” ์ด ๊ฒฝ๋กœ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ณ , DevTools ํŒจํ‚ค์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฝ”๋“œ๋Š” ์‹คํ–‰ ๊ฒฝ๋กœ์— ๋‚จ์ง€ ์•Š๋Š”๋‹ค.

 

๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” next/dynamic์œผ๋กœ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ๋™์  importํ•œ๋‹ค. “์•ฑ์ด ๋กœ๋“œ๋  ๋•Œ ํ•œ ๋ฒˆ์—”๊ฐ€ ์•„๋‹ˆ๋ผ,

ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹ค์ œ๋กœ ๋งˆ์šดํŠธ๋  ๋•Œ ๊ทธ๋•Œ ๊ฐ€์„œ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์š”์ฒญํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ssr: false๋ฅผ ์ฃผ์–ด ์„œ๋ฒ„์—์„œ๋Š” ์ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”ํ•˜์ง€ ์•Š๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ๋งˆ์šดํŠธ๋˜๋„๋ก ํ–ˆ๋‹ค.

 

DevTools๋Š” DOM·window ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ € ์ „์šฉ API๋ฅผ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์—, SSR ๋‹จ๊ณ„์—์„œ ๋ Œ๋”๋งํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ฑฐ๋‚˜ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ์„œ๋ฒ„์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์–ด์„œ ํด๋ผ์ด์–ธํŠธ ์ „์šฉ์œผ๋กœ ๋‘๋Š” ๊ฒƒ์ด ๋งž๋‹ค.

์‚ฌ์šฉํ•˜๋Š” ์ชฝ ์ฝ”๋“œ๋Š” ๊ธฐ์กด๊ณผ ๋™์ผํ•˜๋‹ค. _app ์•ˆ์—์„œ ๊ทธ๋Œ€๋กœ <JotaiDevTools />, <ReactQueryDevtools />๋งŒ ์“ฐ๋ฉด ๋˜๊ณ , ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์œ„์—์„œ ์ •์˜ํ•œ “๋นˆ ์ปดํฌ๋„ŒํŠธ” ๋˜๋Š” “๋™์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜จ DevTools”๊ฐ€ ๋ Œ๋”๋ง๋œ๋‹ค.

<JotaiDevTools position="bottom-left" />
<ReactQueryDevtools initialIsOpen={false} />

 

3. ์™œ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ข‹์€๊ฐ€?

3.1 ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค·๋นŒ๋“œ

Next.js·Webpack์€ ๋นŒ๋“œ ์‹œ์ ์— process.env.NODE_ENV๋ฅผ ์‹ค์ œ ๊ฐ’(์˜ˆ: 'production')์œผ๋กœ ์น˜ํ™˜ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์—์„œ๋Š” isProd๊ฐ€ ํ•ญ์ƒ true๊ฐ€ ๋˜๊ณ , ์‚ผํ•ญ ์—ฐ์‚ฐ์ž์—์„œ dynamic(() => import(...)) ์ชฝ์€ “์ ˆ๋Œ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ”๊ฐ€ ๋œ๋‹ค.

 

๋ฒˆ๋“ค๋Ÿฌ๋Š” ์ด๋Ÿฐ dead code๋ฅผ ์ œ๊ฑฐํ•  ์—ฌ์ง€๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค.

์ตœ์†Œํ•œ “ํ”„๋กœ๋•์…˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฌผ” ๊ด€์ ์—์„œ๋Š” DevTools ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” import(...) ๊ฒฝ๋กœ๋Š” ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

๊ทธ ๊ฒฐ๊ณผ, DevTools ํŒจํ‚ค์ง€๋Š” ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์— ๋“ค์–ด๊ฐ€์ง€ ์•Š์•„ ๋ฒˆ๋“ค ํฌ๊ธฐ๊ฐ€ ์ค„๊ณ , ๋นŒ๋“œํ•  ๋•Œ๋„ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ํŒŒ์‹ฑ·์ตœ์ ํ™”ํ•˜์ง€ ์•Š์•„ ๋นŒ๋“œ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ์ด๋ผ๋„ ๋‹จ์ถ•๋œ๋‹ค. “๊ฐœ๋ฐœ์šฉ” ์ฝ”๋“œ๊ฐ€ ํ”„๋กœ๋•์…˜ ๊ฒฐ๊ณผ๋ฌผ๊ณผ ๋นŒ๋“œ ๊ณผ์ • ์–‘์ชฝ์—์„œ ๋ถ„๋ฆฌ๋˜๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค.

 

3.2 ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋กœ๋”ฉ

dynamic(() => import(...))๋ฅผ ์“ฐ๋ฉด Webpack์ด ๊ทธ ๋ถ€๋ถ„์„ ๋ณ„๋„ ์ฒญํฌ(chunk)๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค.

์ฆ‰, ๋ฉ”์ธ ๋ฒˆ๋“ค(_app์ด ํฌํ•จ๋œ ์ฒญํฌ)๊ณผ DevTools๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ์ฒญํฌ๊ฐ€ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

์‹ค์ œ ๋กœ๋”ฉ ์ˆœ์„œ๋Š” ์ด๋ ‡๊ฒŒ ๋œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋จผ์ € ๋ฉ”์ธ ๋ฒˆ๋“ค์„ ๋ฐ›์•„์„œ ์•ฑ์„ ๊ทธ๋ฆฐ๋‹ค. ๊ทธ๋‹ค์Œ <ReactQueryDevtools />, <JotaiDevTools />๊ฐ€ ๋งˆ์šดํŠธ๋  ๋•Œ ๊ฐ๊ฐ์˜ ๋™์  import๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ DevTools ์ฒญํฌ๋ฅผ ์š”์ฒญํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ดˆ๊ธฐ ๋กœ๋”ฉ์—์„œ๋Š” DevTools ์ฝ”๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„ ๋˜๊ณ , “์ฒซ ํ™”๋ฉด์ด ๋‚˜์˜ค๋Š” ์‹œ๊ฐ„”์ด ์งง์•„์ง„๋‹ค. ๊ฐœ๋ฐœํ•  ๋•Œ ์ฒซ ํ™”๋ฉด์ด ๋นจ๋ฆฌ ๋œจ๊ณ , DevTools๋Š” ํ•„์š”ํ•  ๋•Œ๋งŒ ๋ณ„๋„๋กœ ๋กœ๋“œ๋˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค.

 

3.3 SSR

DevTools๋Š” window, document, React DevTools ํ™•์žฅ๊ณผ ๊ฐ™์€ DOM·๋ธŒ๋ผ์šฐ์ € ์ „์šฉ API์— ์˜์กดํ•œ๋‹ค.

์„œ๋ฒ„์—๋Š” ์ด๋Ÿฐ API๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, SSR ๋‹จ๊ณ„์—์„œ DevTools ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ฑฐ๋‚˜ ๋ถˆํ•„์š”ํ•œ polyfill·๋ถ„๊ธฐ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

next/dynamic์— ssr: false๋ฅผ ์ฃผ๋ฉด, ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋Š” ์„œ๋ฒ„์—์„œ๋Š” ์•„์˜ˆ ๋ Œ๋”๋˜์ง€ ์•Š๊ณ , ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ๋งˆ์šดํŠธ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ์„œ๋ฒ„ ๋ฒˆ๋“ค์—๋„ DevTools๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ “๋™์  import → ๋งˆ์šดํŠธ”๊ฐ€ ์ผ์–ด๋‚˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

DevTools์ฒ˜๋Ÿผ ๋ธŒ๋ผ์šฐ์ € ์ „์šฉ์ธ UI๋Š” ssr: false๋กœ ๋‘๋Š” ๊ฒƒ์ด ๋งž๋‹ค.


4. ๊ฒฐ๊ณผ : ๋นŒ๋“œ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ์ค„์—ˆ๋‹ค.

 

  • Before: Done in 183.94s
  • After: Done in 52.03s

๋ฐ˜๋ฉด, First Load JS shared by all์€ 4.23 MB๋กœ ๋™์ผํ–ˆ๋‹ค.
์ฆ‰ ์ด๋ฒˆ ๋ณ€๊ฒฝ์€ “๋ฒˆ๋“ค ํฌ๊ธฐ ๊ฐ์†Œ”๋ณด๋‹ค๋Š” ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ ๋ถ€๋‹ด ๊ฐ์†Œ(=๋นŒ๋“œ ์‹œ๊ฐ„ ๋‹จ์ถ•) ์ชฝ ํšจ๊ณผ๊ฐ€ ๋” ํฌ๊ฒŒ ๋‚˜ํƒ€๋‚œ ์ผ€์ด์Šค์— ๊ฐ€๊น๋‹ค.

 

๊ฒฐ๋ก ์ ์œผ๋กœ: “ํ”„๋กœ๋•์…˜์—์„œ ํ•„์š” ์—†๋Š” ์ฝ”๋“œ๊ฐ€ _app ๊ฒฝ๋กœ์— ์–นํ˜€ ์žˆ๋˜ ๊ตฌ์กฐ”๋ฅผ ๋ถ„๋ฆฌํ–ˆ๋”๋‹ˆ ๋นŒ๋“œ ์‹œ๊ฐ„ ๊ฐœ์„ ์ด ํฌ๊ฒŒ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

 

 

5. ์ •๋ฆฌ

๊ตฌ๋ถ„ ์ผ๋ฐ˜ import  ํ™˜๊ฒฝ ๋ถ„๊ธฐ + Dynamic Import
ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค DevTools ํฌํ•จ ๊ฐ€๋Šฅ ์ œ์™ธ๋จ (dead code ์ œ๊ฑฐ)
๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋กœ๋”ฉ ๋ฉ”์ธ ๋ฒˆ๋“ค๊ณผ ํ•จ๊ป˜ ๋กœ๋“œ ๋ณ„๋„ ์ฒญํฌ๋กœ ์ง€์—ฐ ๋กœ๋“œ
๋นŒ๋“œ ๋งค๋ฒˆ DevTools ์ฒ˜๋ฆฌ ํ”„๋กœ๋•์…˜์—์„œ๋Š” ๋ฏธํฌํ•จ

 

Next.js์—์„œ DevTools๋ฅผ ์“ธ ๋•Œ “ํ™˜๊ฒฝ ๋ถ„๊ธฐ + dynamic import + ssr: false” ์กฐํ•ฉ์„ ์“ฐ๋ฉด, ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์—๋Š” DevTools๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ , ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ์‹œ๊ฐ„์€ ์ค„๋ฉฐ, ๊ฐœ๋ฐœ ์‹œ์—๋Š” ์ดˆ๊ธฐ ๋กœ๋”ฉ์ด ๊ฐ€๋ฒผ์›Œ์ง„๋‹ค.

“๊ฐœ๋ฐœ์šฉ ์ฝ”๋“œ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋งŒ, ํ•„์š”ํ•  ๋•Œ๋งŒ” ๋กœ๋“œ ๋˜๋„๋ก ๋ถ„๋ฆฌํ•˜๋Š” ํŒจํ„ด์ด ๋œ๋‹ค.

 

 

๋‹ค์Œ์— ๊ฐ™์ด ๋ณด๋ฉด ์ข‹์€ ๊ฒƒ๋“ค

- Bundle Analyzer๋กœ DevTools ์ฒญํฌ ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ

 

2026.02.03 - [Development/Next.js] - [Next.js] ์„ฑ๋Šฅ ์ตœ์ ํ™” - ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ๊ฐœ์„  (feat. bundle-analyzer)

์ด ๊ธ€๊ฐ๋ณด๋‹ค ๋จผ์ € ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ, ํ•ด๋‹น ๊ธ€๊ฐ์ด ๋” ๋จผ์ € ์ž‘์—…ํ–ˆ๋˜ ์ผ์ด์—ˆ๋‹ค.

์•„์ง ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ๊ฐœ์„ ๊ณผ ๋นŒ๋“œ ์‹œ๊ฐ„ ๋‹จ์ถ• ๋ธŒ๋žœ์น˜๋ฅผ ๋จธ์ง€ํ•˜๋Š” ์ž‘์—…์„ ํ•˜์ง€ ์•Š์•˜์–ด์„œ..

๋จธ์ง€ ํ›„ ํ•ด๋‹น ๊ธ€์— ๊ฒฐ๊ณผ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด๊ฒ ๋‹ค..

 

 

๋Œ“๊ธ€