Programming

Next.js 16의 혁신: 캐싱부터 개발자 경험까지, 미래 지향적인 업데이트

danny-shim 2025. 10. 28. 11:08

안녕하세요, 웹 개발자 여러분! Next.js가 또 한 번 업계를 흔들고 있습니다. 2025년 10월 21일, Vercel은 Next.js 16을 공식 발표하며, Next.js Conf 2025를 앞두고 개발자 커뮤니티를 흥분시켰습니다. 이 버전은 Turbopack의 안정화, 캐싱 아키텍처의 대대적 개편, React 19 통합 등으로 가득 차 있어요. 만약 여러분이 React 기반의 풀스택 앱을 개발 중이라면, 이 업데이트는 반드시 확인해야 할 내용입니다. 오늘은 이 블로그 포스트를 바탕으로 Next.js 16의 핵심 포인트를 간결하게 정리해 보겠습니다. 업그레이드 해보고 싶으신가요? 함께 살펴보죠!

1. 캐싱의 새 시대: Cache Components와 Partial Prerendering 완성

Next.js의 가장 큰 변화는 캐싱 모델입니다. 이전 App Router의 암시적 캐싱에서 벗어나, 이제 명시적(opt-in) 캐싱을 도입했습니다. "use cache" 지시어를 사용해 페이지, 컴포넌트, 함수를 캐싱할 수 있으며, 컴파일러가 자동으로 캐시 키를 생성해 줍니다. 동적 코드는 기본적으로 요청 시 실행되며, 이는 풀스택 프레임워크의 기대와 맞아떨어집니다.

이 변화의 하이라이트는 Partial Prerendering (PPR) 의 완성입니다. 2023년에 도입된 PPR이 이제 안정화되어, Suspense를 통해 동적 부분을 정적 페이지에 선택적으로 포함할 수 있어요. 초기 로드 속도를 유지하면서도 동적 콘텐츠를 자유롭게 활용할 수 있게 됐죠. 활성화는 간단합니다:

// next.config.ts
const nextConfig = {
  cacheComponents: true,
};

실험적 플래그(experimental.ppr)는 제거되었으니, 이 설정으로 대체하세요. 더 자세한 내용은 Next.js Conf 2025에서 공개될 예정입니다.

또한, 캐싱 API가 강화됐어요:

  • revalidateTag(): 이제 cacheLife 프로필(예: 'max')을 요구하며, stale-while-revalidate(SWR) 전략을 지원합니다.
  • updateTag() (신규, Server Actions 전용): 즉시 캐시 만료 및 새로고침으로 read-your-writes를 구현.
  • refresh() (신규, Server Actions 전용): 캐시를 건드리지 않고 데이터만 새로고침.

이러한 변화로 앱의 성능이 크게 향상될 거예요. 예를 들어, 사용자 알림처럼 실시간 업데이트가 필요한 부분에서 유용하죠.

2. Turbopack의 안정화: 속도와 안정성의 정점

Turbopack이 이제 기본 번들러로 자리 잡았습니다! 새 프로젝트에서는 자동으로 적용되며, 프로덕션 빌드가 2~5배, Fast Refresh가 최대 10배 빨라집니다. Next.js 15.3+ 사용자 중 50% 이상이 개발 세션에서, 20%가 프로덕션 빌드에서 이미 사용 중이에요. 커스텀 webpack 설정이 필요하다면 --webpack 플래그로 옵트아웃하세요.

베타 기능으로는 Turbopack File System Caching이 추가됐습니다. 대형 프로젝트에서 컴파일러 아티팩트를 디스크에 저장해 재시작 속도를 높여줍니다:

// next.config.ts
const nextConfig = {
  experimental: {
    turbopackFileSystemCacheForDev: true,
  },
};

이 외에도 React Compiler 지원이 안정화됐어요. reactCompiler: true 설정으로 컴포넌트를 자동 메모이징해 재렌더링을 줄일 수 있지만, Babel 의존성으로 컴파일 시간이 길어질 수 있으니 주의하세요.

3. 개발자 경험(DX) 향상: 로그, 프록시, 그리고 AI 도구

개발 과정이 더 직관적으로 변했습니다:

  • 로그 개선: 개발 요청 로그에 컴파일/렌더링 시간 표시, 빌드 로그에 단계별 시간 출력으로 병목 현상을 쉽게 파악할 수 있어요.
  • proxy.ts 도입: middleware.ts를 대체하며, Node.js 런타임에서 실행됩니다. 단순히 파일과 함수 이름을 바꾸기만 하면 됩니다. Edge 런타임용으로는 더 이상 사용하지 마세요.
  • Next.js Devtools MCP: AI 기반 디버깅 도구로, 라우팅/캐싱/렌더링 지식을 AI 에이전트에 제공합니다. 로그 통합과 오류 자동 접근으로 문제 진단이 수월해졌어요.

또한, 라우팅 및 네비게이션이 최적화됐습니다. 공유 레이아웃 중복 다운로드를 줄이고, 증분 프리페칭으로 불필요한 요청을 최소화합니다. 뷰포트 이탈 시 취소, 호버 시 우선순위 부여 등으로 사용자 경험이 부드러워졌죠.

4. React 19 통합과 기타 하이라이트

Next.js 16은 React 19.2 Canary를 App Router에 적용합니다. View Transitions로 업데이트 애니메이션, useEffectEvent로 비반응 로직 처리, Activity로 백그라운드 렌더링 지원 등이 포함됐어요. 브라우저 호환성도 강화: Node.js 20.9+, TypeScript 5.1+ 필수입니다.

기타 개선:

  • create-next-app 재설계: App Router 기본, TypeScript 우선, Tailwind/ESLint 포함.
  • Build Adapters API (알파): 배포 플랫폼 커스텀 훅 지원.

주의할 점: Breaking Changes와 마이그레이션

좋은 소식만큼, 변화도 있어요. 주요 브레이킹 체인지:

  • AMP 지원 제거, next lint 폐지 (ESLint/Biome 사용).
  • middleware.tsproxy.ts 리네임.
  • revalidateTag() 시그니처 변경, 동기 API → 비동기 전환.
  • 이미지 최적화 기본값 조정 (TTL 4시간, 품질 75 등).

업그레이드는 CLI(npx @next/codemod@canary upgrade latest)나 수동 설치로 쉽습니다. 자세한 가이드는 공식 업그레이드 문서를 확인하세요.