Next.js 16
웹 개발의 새로운 지평을 열다
Next.js 16이 공식 출시되었습니다. Cache Components, proxy.ts, Turbopack 안정화, React 19.2 등 웹 개발의 새로운 시대를 열어갈 혁신적인 기능들이 포함되어 있습니다.
공식 사이트: https://nextjs.org/blog/next-16
🚀 Next.js 16, 무엇이 특별한가?
Next.js 16은 웹 개발 프레임워크의 새로운 표준을 제시합니다. 이번 릴리스는 성능, 개발자 경험, 그리고 아키텍처 측면에서 획기적인 개선을 제공합니다.
주요 개선사항
- ✓Cache Components: 명시적 캐싱과 PPR(Partial Prerendering) 완성으로 인스턴트 네비게이션
- ✓proxy.ts: middleware.ts를 대체하여 네트워크 경계를 명확히 하는 새로운 방식
- ✓Turbopack (안정화): 모든 앱의 기본 번들러로 설정, 2-5배 빠른 빌드, 최대 10배 빠른 Fast Refresh
- ✓React 19.2: View Transitions, useEffectEvent(), Activity 컴포넌트 등 최신 React 기능
- ✓Next.js DevTools MCP: AI 기반 디버깅과 컨텍스트 인사이트를 위한 Model Context Protocol 통합
- ✓로깅 개선: 개발 및 빌드 과정에서 시간 소비 위치를 명확히 표시
💾 Cache Components: 명시적 캐싱의 새로운 패러다임
Cache Components는 Next.js의 캐싱 모델을 근본적으로 변화시킵니다. 이전 버전의 암묵적 캐싱과 달리, "use cache" 지시어를 통해 페이지, 컴포넌트, 함수를 명시적으로 캐시할 수 있습니다.
Cache Components의 주요 특징
- ⚡명시적 캐싱: "use cache" 지시어로 캐싱을 명확하게 제어
- 🔑자동 캐시 키 생성: 컴파일러가 자동으로 캐시 키 생성
- 🎯옵트인 방식: 모든 동적 코드는 기본적으로 요청 시점에 실행
- 🚀PPR 완성: Partial Prerendering을 완전히 구현하여 정적 페이지의 빠른 초기 로드와 동적 렌더링의 조화
💡 사용 예시
// next.config.ts
const nextConfig = {
cacheComponents: true,
};
export default nextConfig;
// 컴포넌트에서 사용
"use cache"
export async function getData() {
const res = await fetch('https://api.example.com/data');
return res.json();
}📊 PPR (Partial Prerendering)의 완성
PPR은 2023년 처음 소개되었지만, Cache Components를 통해 완전히 구현되었습니다. 이전에는 각 URL을 정적으로 렌더링할지 동적으로 렌더링할지 선택해야 했지만, 이제는 정적 페이지의 빠른 초기 로드를 유지하면서 필요한 부분만 동적으로 렌더링할 수 있습니다.
PPR의 장점
- ⚡빠른 초기 로드: 정적 콘텐츠는 즉시 로드되어 사용자 경험 향상
- 🔄동적 콘텐츠 지원: Suspense를 통해 필요한 부분만 동적으로 렌더링
- 🎯유연성: 정적과 동적의 경계를 넘어선 하이브리드 렌더링
🌐 proxy.ts: 미들웨어의 새로운 이름
proxy.ts는 middleware.ts를 대체하는 새로운 파일입니다. 네트워크 경계를 명확히 하고, Node.js 런타임에서 실행됩니다.
proxy.ts의 주요 특징
- 🎯명확한 네트워크 경계: 앱의 네트워크 경계를 명확하게 정의
- ⚙️Node.js 런타임: 예측 가능한 단일 런타임에서 실행
- 🔄마이그레이션: middleware.ts를 proxy.ts로 이름 변경하고 함수 이름을 proxy로 변경
💡 마이그레이션 방법
변경 사항:
- middleware.ts 파일을 proxy.ts로 이름 변경
- export default function을 proxy로 변경
- 로직은 그대로 유지
// Before (middleware.ts)
export default function middleware(request: NextRequest) {
return NextResponse.redirect(new URL('/home', request.url));
}
// After (proxy.ts)
export default function proxy(request: NextRequest) {
return NextResponse.redirect(new URL('/home', request.url));
}참고: middleware.ts는 Edge 런타임 사용 케이스를 위해 여전히 사용 가능하지만, deprecated 상태이며 향후 버전에서 제거될 예정입니다.
⚡ Turbopack: 안정화된 차세대 번들러
Turbopack이 이제 안정화되어 모든 Next.js 프로젝트의 기본 번들러가 되었습니다. Next.js 15.3+ 버전에서 이미 개발 세션의 50% 이상, 프로덕션 빌드의 20% 이상이 Turbopack을 사용하고 있습니다.
Turbopack의 성능 개선
- 🚀프로덕션 빌드: 2-5배 faster 빌드 속도
- ⚡Fast Refresh: 최대 10배 faster Hot Module Replacement
- 💾파일시스템 캐싱: 대규모 프로젝트에서 재시작 시 컴파일 시간 크게 단축
- 🔧웹팩 호환: 커스텀 웹팩 설정이 있는 경우 --webpack 플래그로 계속 사용 가능
📁 Turbopack 파일시스템 캐싱 (베타)
개발 모드에서 파일시스템 캐싱이 베타로 제공됩니다. 컴파일 아티팩트를 디스크에 저장하여 재시작 시에도 캐시를 활용할 수 있어 대규모 프로젝트에서 특히 유용합니다.
파일시스템 캐싱 활성화
// next.config.ts
const nextConfig = {
experimental: {
turbopackFileSystemCacheForDev: true,
},
};
export default nextConfig;⚛️ React 19.2: 최신 React 기능
Next.js 16은 React 19.2를 포함하여 최신 React 기능을 활용할 수 있습니다.
React 19.2의 주요 기능
- 🎬View Transitions: 페이지 전환 시 부드러운 애니메이션 효과
- 🪝useEffectEvent(): 이벤트 핸들러를 위한 새로운 Hook
- 📱Activity 컴포넌트: 모바일 앱과의 통합을 위한 새로운 컴포넌트
🛠️ Next.js DevTools MCP: AI 기반 디버깅
Next.js DevTools MCP는 Model Context Protocol 통합을 통해 AI 에이전트가 애플리케이션을 이해하고 디버깅할 수 있도록 돕는 새로운 도구입니다.
DevTools MCP의 기능
- 🧠Next.js 지식: 라우팅, 캐싱, 렌더링 동작에 대한 컨텍스트 제공
- 📋통합 로그: 브라우저와 서버 로그를 하나의 컨텍스트에서 확인
- 🐛자동 오류 접근: 상세한 스택 트레이스를 자동으로 제공
- 📍페이지 인식: 활성 라우트에 대한 컨텍스트 이해
⚠️ Breaking Changes: 주요 변경사항
Next.js 16에서는 여러 주요 변경사항이 있습니다. 마이그레이션 시 주의해야 할 사항들을 정리했습니다.
| 제거된 기능 | 대체 방법 |
|---|---|
| AMP 지원 | AMP API 및 설정 모두 제거됨 (useAmp, export const config = { amp: true }) |
| next lint 명령어 | Biome 또는 ESLint 직접 사용; next build는 더 이상 린팅 실행 안 함 |
| devIndicators 옵션 | appIsrStatus, buildActivity, buildActivityPosition 제거됨 (인디케이터는 유지) |
| serverRuntimeConfig, publicRuntimeConfig | 환경 변수(.env 파일) 사용 |
| experimental.ppr 플래그 | Cache Components 프로그래밍 모델로 발전 |
| 동기 params, searchParams 접근 | 비동기 사용: await params, await searchParams |
| 동기 cookies(), headers(), draftMode() 접근 | 비동기 사용: await cookies(), await headers(), await draftMode() |
| next/image 로컬 src 쿼리 문자열 | 이제 images.localPatterns 설정이 필요함 (열거 공격 방지) |
🔄 Behavior Changes: 동작 변경사항
Next.js 16에서 기본 동작이 변경된 기능들입니다.
| 변경된 동작 | 세부 사항 |
|---|---|
| 기본 번들러 | Turbopack이 모든 앱의 기본 번들러; next build --webpack으로 웹팩 사용 가능 |
| images.minimumCacheTTL 기본값 | 60초에서 4시간(14400초)으로 변경 |
| images.imageSizes 기본값 | 16 제거됨 (4.2% 프로젝트만 사용); srcset 크기 및 API 변형 감소 |
| images.qualities 기본값 | [1..100]에서 [75]로 변경; quality prop은 images.qualities의 가장 가까운 값으로 강제 변환 |
| images.dangerouslyAllowLocalIP | 새로운 보안 제한: 기본적으로 로컬 IP 최적화 차단; 사설 네트워크에서만 true로 설정 |
| images.maximumRedirects 기본값 | 무제한에서 최대 3회 리다이렉트로 변경; 0으로 설정하여 비활성화하거나 증가 가능 |
| revalidateTag() 시그니처 | 이제 stale-while-revalidate 동작을 위한 cacheLife 프로필이 두 번째 인자로 필요 |
| Parallel routes default.js | 모든 parallel route 슬롯은 명시적 default.js 파일 필요; 없으면 빌드 실패 |
📌 Deprecated: 향후 제거될 기능
다음 기능들은 Next.js 16에서 deprecated 되었으며, 향후 버전에서 제거될 예정입니다.
| Deprecated 기능 | 세부 사항 |
|---|---|
| middleware.ts 파일명 | proxy.ts로 이름 변경하여 네트워크 경계 및 라우팅 초점 명확화 |
| next/legacy/image 컴포넌트 | 개선된 성능과 기능을 위해 next/image 사용 |
| images.domains 설정 | 개선된 보안 제한을 위해 images.remotePatterns 설정 사용 |
| revalidateTag() 단일 인자 | SWR을 위해 revalidateTag(tag, profile) 사용하거나 Actions에서 read-your-writes를 위해 updateTag(tag) 사용 |
📊 로깅 개선: 더 나은 개발자 경험
Next.js 16에서는 개발 및 빌드 과정에서 시간이 어디에 소비되는지 명확하게 표시합니다.
개발 모드 로깅
- ⚙️Compile: 라우팅 및 컴파일 시간
- 🎨Render: 코드 실행 및 React 렌더링 시간
빌드 로깅
빌드 과정의 각 단계와 소요 시간이 표시됩니다:
▲ Next.js 16 (Turbopack) ✓ Compiled successfully in 615ms ✓ Finished TypeScript in 1114ms ✓ Collecting page data in 208ms ✓ Generating static pages in 239ms ✓ Finalizing page optimization in 5ms
🎬 Next.js 16 실제 사용 영상
🎥 영상 1: They Weren't Joking… Next.js 16 Changed EVERYTHING!
Next.js 16의 주요 기능 소개: Cache Components, DevTools MCP, proxy.ts, Turbopack 안정화까지
💬 개발자 의견
💻 영상 2: Next.js 16 Just Changed EVERYTHING (Cache Components, MCP, Proxy, Turbopack)
실전 개발자 관점에서 본 Next.js 16의 상세 분석과 실제 사용 경험
💬 개발자 의견
📚 영상 3: NextJS 16 FullStack Course - Build an Inventory Management Website
Next.js 16을 활용한 풀스택 인벤토리 관리 웹사이트 구축 강의
💬 개발자 의견
🚀 영상 4: Next.js 16 Full Course | Build and Deploy a Production-Ready Full Stack App
Next.js 16으로 프로덕션 준비 완료된 풀스택 애플리케이션을 구축하고 배포하는 완전한 강의
💬 개발자 의견
🚀 Next.js 16 업그레이드 가이드
Next.js 16으로 업그레이드하는 방법을 안내합니다.
자동 업그레이드 (권장)
npx @next/codemod@canary upgrade latest
수동 업그레이드
npm install next@latest react@latest react-dom@latest
주요 마이그레이션 체크리스트
- 1.middleware.ts를 proxy.ts로 이름 변경 및 함수명 변경
- 2.params, searchParams를 await로 변경
- 3.cookies(), headers(), draftMode()를 await로 변경
- 4.experimental.ppr 설정을 cacheComponents로 변경
- 5.parallel routes에 default.js 추가
- 6.AMP 관련 코드 제거 (사용 중인 경우)
- 7.next lint를 Biome 또는 ESLint 직접 사용으로 변경
💻 개발자에게 Next.js 16이 의미하는 것
Next.js 16은 웹 개발의 새로운 시대를 열어갑니다.
⚡ 성능 향상
Turbopack의 안정화와 파일시스템 캐싱으로 개발 및 빌드 성능이 크게 향상되었습니다. 대규모 프로젝트에서도 빠른 피드백을 받을 수 있습니다.
🎯 명확한 아키텍처
Cache Components와 proxy.ts를 통해 캐싱과 네트워크 경계가 더욱 명확해졌습니다. 개발자가 의도한 대로 동작하는 것을 더 쉽게 예측할 수 있습니다.
🛠️ 개발자 경험
개선된 로깅과 DevTools MCP로 디버깅이 더욱 쉬워졌습니다. AI 기반 도구가 개발 과정을 더욱 효율적으로 만들어줍니다.
🚀 미래 지향적
React 19.2와 최신 웹 표준을 지원하여 미래의 웹 개발 트렌드를 선도합니다. View Transitions 같은 최신 기능을 바로 사용할 수 있습니다.
🔗 더 알아보기
큐레이터 단비
AI 기술과 크리에이터 인사이트를 전하는 전문 큐레이터