proxy.ts로 대체된 미들웨어입니다.updateTag()와 개선된 revalidateTag()를 제공합니다.useEffectEvent(), <Activity/>를 포함합니다.next/image 기본값 등 다양한 변경 사항이 있습니다."use cache" 지시문을 중심으로 하며, 컴파일러를 활용하여 사용되는 모든 곳에서 자동으로 캐시 키를 생성합니다.next.config.ts 파일에서 Cache Components를 활성화할 수 있습니다:참고: 베타 릴리스에서 이전에 발표된 대로, 이전의 실험적 experimental.ppr 플래그 및 구성 옵션은 Cache Components 구성으로 대체되었습니다.proxy.ts는 middleware.ts를 대체하며 앱의 네트워크 경계를 명확히 합니다. proxy.ts는 Node.js 런타임에서 실행됩니다.middleware.ts를 proxy.ts로 이름을 변경하고 내보낸 함수를 proxy로 이름을 변경하세요. 로직은 동일하게 유지됩니다.참고: middleware.ts 파일은 여전히 Edge 런타임 사용 사례에 사용할 수 있지만, 향후 버전에서 제거될 예정입니다.
create-next-app은 간소화된 설정 흐름, 업데이트된 프로젝트 구조 및 개선된 기본값으로 재설계되었습니다. 새로운 템플릿에는 기본적으로 App Router, TypeScript 우선 구성, Tailwind CSS 및 ESLint가 포함됩니다.reactCompiler 구성 옵션은 experimental에서 안정화로 승격되었습니다. 이 옵션을 활성화할 때 개발 및 빌드 중 컴파일 시간이 더 길어질 수 있습니다. React Compiler는 Babel에 의존하기 때문입니다.cacheLife 프로필 이름(예: 'max', 'hours', 'days') 또는 next.config에 정의된 커스텀 프로필을 허용합니다. 또한 인라인 { expire: number } 객체를 전달할 수 있습니다. 대부분의 경우 max를 사용하는 것이 좋습니다. 이는 장기 콘텐츠에 대한 백그라운드 재검증을 가능하게 합니다. 사용자가 태그가 지정된 콘텐츠를 요청하면 Next.js가 백그라운드에서 재검증하는 동안 즉시 캐시된 데이터를 받습니다.revalidateTag()는 SWR 동작으로 적절하게 태그가 지정된 캐시 항목만 무효화하려는 경우에 사용하세요. 이는 최종 일관성을 허용할 수 있는 정적 콘텐츠에 이상적입니다.마이그레이션 가이드: SWR 동작을 위해cacheLife프로필(권장:max)을 두 번째 인수로 추가하거나, 읽기-쓰기 일관성이 필요한 경우 Server Actions에서updateTag()를 사용하세요.
updateTag()는 읽기-쓰기 일관성을 제공하는 새로운 Server Actions 전용 API로, 동일한 요청 내에서 만료되고 즉시 새 데이터를 읽습니다:refresh()는 캐시되지 않은 데이터만 새로 고치는 새로운 Server Actions 전용 API입니다. 캐시에는 전혀 영향을 미치지 않습니다:router.refresh()를 보완합니다. 작업을 수행한 후 페이지의 다른 곳에 표시된 캐시되지 않은 데이터를 새로 고쳐야 할 때 사용하세요. 캐시된 페이지 셸과 정적 콘텐츠는 빠르게 유지되며, 알림 수, 실시간 메트릭 또는 상태 표시기와 같은 동적 데이터는 새로 고쳐집니다.display: none으로 숨기면서 상태를 유지하고 Effect를 정리하여 "백그라운드 활동"을 렌더링합니다.변경 사항 | 세부 사항 |
|---|---|
Node.js 20.9+ | 최소 버전은 이제 20.9.0 (LTS); Node.js 18은 더 이상 지원되지 않음 |
TypeScript 5+ | 최소 버전은 이제 5.1.0 |
브라우저 | Chrome 111+, Edge 111+, Firefox 111+, Safari 16.4+ |
제거됨 | 대체 |
|---|---|
AMP 지원 | 모든 AMP API 및 구성 제거 ( useAmp, export const config = { amp: true }) |
next lint명령어 | Biome 또는 ESLint를 직접 사용하세요; next build는 더 이상 린팅을 실행하지 않습니다. 코드모드가 제공됩니다: npx @next/codemod@canary next-lint-to-eslint-cli . |
devIndicators옵션 | appIsrStatus, buildActivity, buildActivityPosition이 구성에서 제거되었습니다. 인디케이터는 남아 있습니다. |
serverRuntimeConfig, publicRuntimeConfig | 환경 변수를 사용하세요 ( .env파일) |
experimental.turbopack위치 | 구성은 최상위 turbopack으로 이동되었습니다 (experimental에 더 이상 없음) |
experimental.dynamicIO플래그 | cacheComponents로 이름 변경됨 |
experimental.ppr플래그 | PPR 플래그 제거; Cache Components 프로그래밍 모델로 발전 중 |
export const experimental_ppr | 라우트 수준 PPR 내보내기 제거; Cache Components 프로그래밍 모델로 발전 중 |
자동 scroll-behavior: smooth | HTML 문서에 data-scroll-behavior="smooth"를 추가하여 다시 활성화 |
unstable_rootParams() | 대체 API를 작업 중이며, 곧 출시될 마이너 버전에 제공할 예정 |
동기 params, searchParams props 접근 | 비동기 사용 필수: await params, await searchParams |
동기 cookies(), headers(), draftMode()접근 | 비동기 사용 필수: await cookies(), await headers(), await draftMode() |
메타데이터 이미지 라우트 params 인수 | 비동기 params로 변경; generateImageMetadata의 id는 이제 Promise<string> |
next/image로컬 src 쿼리 문자열 | DDOS 공격을 방지하기 위해 images.localPatterns구성이 필요합니다 |
변경된 동작 | 세부 사항 |
|---|---|
기본 번들러 | Turbopack은 이제 모든 앱의 기본 번들러입니다; next build --webpack으로 옵트아웃 |
images.minimumCacheTTL기본값 | 60초에서 4시간(14400초)으로 변경; 캐시 제어 헤더가 없는 이미지의 재검증 비용 감소 |
images.imageSizes기본값 | 기본 크기에서 16제거 (프로젝트의 4.2%만 사용); srcset 크기 및 API 변형 감소 |
images.qualities기본값 | [1..100]에서 [75]로 변경; qualityprop은 이제 images.qualities의 가장 가까운 값으로 강제 변환 |
images.dangerouslyAllowLocalIP | 새로운 보안 제한으로 로컬 IP 최적화를 기본적으로 차단; 개인 네트워크에만 true로 설정 |
images.maximumRedirects기본값 | 무제한에서 최대 3회 리디렉션으로 변경; 드문 엣지 케이스에 대해 비활성화하거나 증가시킬 수 있습니다 |
@next/eslint-plugin-next기본값 | 이제 ESLint Flat Config 형식을 기본으로 사용하여, ESLint v10과 일치하며 레거시 구성 지원을 중단할 예정 |
프리페칭 캐시 동작 | 레이아웃 중복 제거 및 점진적 프리페칭으로 완전히 재작성 |
revalidateTag()시그니처 | SWR 동작을 위한 두 번째 인수로 cacheLife프로필이 필요 |
Turbopack의 Babel 구성 | Babel 구성이 발견되면 자동으로 Babel을 활성화 (이전에는 하드 오류로 종료) |
터미널 출력 | 더 명확한 형식, 더 나은 오류 메시지 및 개선된 성능 메트릭으로 재설계 |
개발 및 빌드 출력 디렉토리 | next dev및 next build는 이제 별도의 출력 디렉토리를 사용하여 동시 실행 가능 |
잠금 파일 동작 | 동일한 프로젝트에서 여러 next dev또는 next build인스턴스를 방지하기 위한 잠금 파일 메커니즘 추가 |
병렬 라우트 default.js | 모든 병렬 라우트 슬롯은 이제 명시적인 default.js파일이 필요합니다; 그렇지 않으면 빌드가 실패합니다. 이전 동작을 위해 notFound()를 호출하거나 null을 반환하는 default.js를 생성하세요 |
모던 Sass API | 모던 Sass 구문 및 새로운 기능을 지원하는 sass-loader를 v16으로 업그레이드 |
사용 중단됨 | 세부 사항 |
|---|---|
middleware.ts파일명 | 네트워크 경계 및 라우팅 초점을 명확히 하기 위해 proxy.ts로 이름 변경 |
next/legacy/image컴포넌트 | 성능 및 기능이 개선된 next/image를 사용하세요 |
images.domains구성 | 보안 제한이 개선된 images.remotePatterns구성을 사용하세요 |
revalidateTag()단일 인수 | SWR을 위해 revalidateTag(tag, profile)을 사용하거나, Actions에서 읽기-쓰기 일관성을 위해 updateTag(tag)를 사용하세요 |
next dev 및 next start 명령어에 대한 상당한 성능 최적화next.config.ts: --experimental-next-config-strip-types 플래그를 사용하여 next dev, next build, next start 명령어를 실행하여 next.config.ts에 대한 네이티브 TypeScript를 활성화합니다.아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!