Vigia

Nâng cấp next từ 14.x lên 15.x

So sánh API công khai của next 14.2.35 và 15.5.27, được tính tự động từ kiểu TypeScript. Chữ ký thay đổi là thay đổi có thể không tương thích, không phải điều chắc chắn.

Tóm tắt

Đường dẫn import bị xóa0
Export bị xóa4
Chữ ký thay đổi10
Thành viên lớp hoặc interface bị xóa6
Thành viên lớp hoặc interface thay đổi10
Mới bị ngừng hỗ trợ5
Thay đổi yêu cầu (engines, phụ thuộc peer)5
Export mới25

Export bị xóa

importexportkindTrước
next/constantsGOOGLE_FONT_PROVIDERvariable"https://fonts.googleapis.com/"
next/constantsDEV_MIDDLEWARE_MANIFESTvariable"_devMiddlewareManifest.json"
next/constantsOPTIMIZED_FONT_PROVIDERSvariable{ url: string; preconnect: string; }[]
next/constantsAUTOMATIC_FONT_OPTIMIZATION_MANIFESTvariable"font-manifest.json"

Chữ ký thay đổi

exportTrướcSau
next · default(options: NextServerOptions): NextServer(options: Omit<Options | Options, "conf"> & Partial<Pick<Options | Options, "conf">> & { turbo?: boolean | undefined; turbopack?: boolean | undefined; }): NextWrapperServer
next · PageConfig{ amp?: boolean | "hybrid" | undefined; api?: { responseLimit?: ResponseLimit | undefined; bodyParser?: false | { sizeLimit?: SizeLimit | undefined; } | undefined; externalResolver?: true | undefined; } | undefined; env?: string[] | undefined; maxDuration?: number | undefined; runtime?: ServerRuntime; unstable_runtimeJS?: false | undefined; unstable_JsPreload?: false | undefined; unstable_includeFiles?: string[] | undefined; unstable_excludeFiles?: string[] | undefined; }{ amp?: boolean | "hybrid" | undefined; api?: { responseLimit?: ResponseLimit | undefined; bodyParser?: false | { sizeLimit?: SizeLimit | undefined; } | undefined; externalResolver?: true | undefined; } | undefined; env?: string[] | undefined; maxDuration?: number | undefined; runtime?: ServerRuntime; unstable_runtimeJS?: false | undefined; unstable_JsPreload?: false | undefined; }
next · GetStaticPathsResult{ paths: (string | { params: Params; locale?: string | undefined; })[]; fallback: boolean | "blocking"; }{ paths: (string | { params: Params; locale?: string | undefined; })[]; fallback: GetStaticPathsFallback; }
next/link · LinkProps{ href: any; as?: any; replace?: boolean | undefined; scroll?: boolean | undefined; shallow?: boolean | undefined; passHref?: boolean | undefined; prefetch?: boolean | null | undefined; locale?: string | false | undefined; legacyBehavior?: boolean | undefined; onMouseEnter?: any; onTouchStart?: any; onClick?: any; }interface
next/error · ErrorProps{ statusCode: number; title?: string | undefined; withDarkMode?: boolean | undefined; }{ statusCode: number; hostname?: string | undefined; title?: string | undefined; withDarkMode?: boolean | undefined; }
next/dynamic · DynamicOptionsLoadableGeneratedOptions & { loading?: ((loadingProps: DynamicOptionsLoadingProps) => any) | undefined; loader?: LoaderMap | Loader<P> | undefined; loadableGenerated?: LoadableGeneratedOptions | undefined; ssr?: boolean | undefined; suspense?: boolean | undefined; }LoadableGeneratedOptions & { loading?: ((loadingProps: DynamicOptionsLoadingProps) => React.ReactNode) | undefined; loader?: LoaderMap | Loader<P> | undefined; loadableGenerated?: LoadableGeneratedOptions | undefined; ssr?: boolean | undefined; }
next/dynamic · LoadableOptionsLoadableGeneratedOptions & { loading?: ((loadingProps: DynamicOptionsLoadingProps) => any) | undefined; loader?: LoaderMap | Loader<P> | undefined; loadableGenerated?: LoadableGeneratedOptions | undefined; ssr?: boolean | undefined; suspense?: boolean | undefined; }LoadableGeneratedOptions & { loading?: ((loadingProps: DynamicOptionsLoadingProps) => React.ReactNode) | undefined; loader?: LoaderMap | Loader<P> | undefined; loadableGenerated?: LoadableGeneratedOptions | undefined; ssr?: boolean | undefined; }
next/headers · cookies(): ReadonlyRequestCookies(): Promise<ReadonlyRequestCookies>
next/headers · headers(): ReadonlyHeaders(): Promise<ReadonlyHeaders>
next/headers · draftMode(): DraftMode(): Promise<DraftMode>

Thành viên lớp hoặc interface bị xóa

memberimportTrước
NextConfig.swcMinifynextboolean | undefined
NextConfig.analyticsIdnextstring | undefined
NextConfig.optimizeFontsnextboolean | undefined
NextConfig.outputFileTracingnextboolean | undefined
Router._getFlightDatanext/router(dataHref: string): Promise<{ data: string; }>
Head.makeStylesheetInertnext/document(node: ReactNode[]): ReactNode[]

Thành viên lớp hoặc interface thay đổi

memberTrướcSau
NextConfig.logging{ fetches?: { fullUrl?: boolean | undefined; } | undefined; } | undefinedfalse | LoggingConfig | undefined
NextConfig.rewrites(() => Promise<Rewrite[] | { beforeFiles: Rewrite[]; afterFiles: Rewrite[]; fallback: Rewrite[]; }>) | undefined(() => Promise<Rewrite[] | { beforeFiles?: Rewrite[] | undefined; afterFiles?: Rewrite[] | undefined; fallback?: Rewrite[] | undefined; }>) | undefined
NextConfig.sassOptions{ [key: string]: any; } | undefined{ [key: string]: any; implementation?: string | undefined; } | undefined
NextConfig.devIndicators{ buildActivity?: boolean | undefined; buildActivityPosition?: "bottom-right" | "bottom-left" | "top-right" | "top-left" | undefined; } | undefinedfalse | { appIsrStatus?: boolean | undefined; buildActivity?: boolean | undefined; buildActivityPosition?: "top-left" | "top-right" | "bottom-left" | "bottom-right" | undefined; position?: "top-left" | "top-right" | "bottom-left" | "bottom-right" | undefined; } | undefined
NextApiRequest.previewDataanyPreviewData
NextPageContext.localesstring[] | undefinedreadonly string[] | undefined
default.static getInitialProps({ res, err, }: NextPageContext): ErrorProps | Promise<ErrorProps>({ req, res, err, }: NextPageContext): ErrorProps | Promise<ErrorProps>
default.static origGetInitialProps({ res, err, }: NextPageContext): ErrorProps | Promise<ErrorProps>({ req, res, err, }: NextPageContext): ErrorProps | Promise<ErrorProps>
Router.localesstring[] | undefinedreadonly string[] | undefined
Router.domainLocalesDomainLocale[] | undefinedreadonly DomainLocale[] | undefined

Mới bị ngừng hỗ trợ

export@deprecated
next · NextConfig.ampbuilt-in amp support will be removed in Next 16
next · NextConfig.publicRuntimeConfigRuntime config is deprecated and will be removed in Next.js 16.
next · NextConfig.serverRuntimeConfigRuntime config is deprecated and will be removed in Next.js 16.
next/config · defaultRuntime config is deprecated and will be removed in Next.js 16.
next/config · setConfigRuntime config is deprecated and will be removed in Next.js 16.

Thay đổi yêu cầu (engines, phụ thuộc peer)

TrướcSau
engines.node>=18.17.0^18.18.0 || ^19.8.0 || >= 20.0.0
peerDependencies.react^18.2.0^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
peerDependencies.react-dom^18.2.0^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
peerDependencies.@playwright/test^1.41.2^1.51.1
peerDependencies.babel-plugin-react-compiler—*
Export mới (25)
importexportkind
nextNextAdapterinterface
nextInstrumentationnamespace
next/linkuseLinkStatusvariable
next/cacheunstable_cacheTagvariable
next/cacheunstable_cacheLifefunction
next/cacheunstable_expireTagvariable
next/cacheunstable_expirePathvariable
next/serveraftervariable
next/serverconnectionvariable
next/serverunstable_rootParamsvariable
next/serverUnsafeUnwrappedParamsvariable
next/serverUnsafeUnwrappedSearchParamsvariable
next/headersUnsafeUnwrappedCookiestype
next/headersUnsafeUnwrappedHeaderstype
next/headersUnsafeUnwrappedDraftModetype
next/constantsWEBPACK_STATSvariable
next/constantsAdapterOutputTypeenum
next/constantsDYNAMIC_CSS_MANIFESTvariable
next/constantsDEV_CLIENT_MIDDLEWARE_MANIFESTvariable
next/constantsTURBOPACK_CLIENT_BUILD_MANIFESTvariable
next/constantsTURBOPACK_CLIENT_MIDDLEWARE_MANIFESTvariable
next/navigationforbiddenfunction
next/navigationunauthorizedfunction
next/navigationunstable_rethrowvariable
next/navigationunstable_isUnrecognizedActionErrorfunction

Câu hỏi thường gặp

Nâng cấp next từ 14 lên 15 có những thay đổi không tương thích nào?

Giữa next 14.2.35 và 15.5.27, Vigia tìm thấy 4 export bị xóa, 10 chữ ký thay đổi và 16 thành viên lớp hoặc interface bị xóa hay thay đổi.

Những gì bị ngừng hỗ trợ trong next 15?

5 export hoặc thành viên mới bị đánh dấu ngừng hỗ trợ trong next 15.5.27.

Dành cho tác tử

GET https://vigia.coredls.cloud/v1/packages/npm/next/upgrade?from=14.2.35&to=15.5.27