Vigia

Memperbarui next dari 14.x ke 15.x

Perbandingan API publik next 14.2.35 dan 15.5.27, dihitung otomatis dari tipe TypeScript-nya. Tanda tangan yang berubah adalah kemungkinan perubahan tidak kompatibel, bukan kepastian.

Ringkasan

Jalur impor yang dihapus0
Ekspor yang dihapus4
Tanda tangan yang berubah10
Anggota kelas atau antarmuka yang dihapus6
Anggota kelas atau antarmuka yang berubah10
Baru ditandai usang5
Perubahan persyaratan (engines, dependensi peer)5
Ekspor baru25

Ekspor yang dihapus

importexportkindSebelum
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"

Tanda tangan yang berubah

exportSebelumSesudah
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>

Anggota kelas atau antarmuka yang dihapus

memberimportSebelum
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[]

Anggota kelas atau antarmuka yang berubah

memberSebelumSesudah
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

Baru ditandai usang

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.

Perubahan persyaratan (engines, dependensi peer)

SebelumSesudah
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—*
Ekspor baru (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

Pertanyaan umum

Apa saja perubahan tidak kompatibel saat memperbarui next dari 14 ke 15?

Antara next 14.2.35 dan 15.5.27, Vigia menemukan 4 ekspor yang dihapus, 10 tanda tangan yang berubah, dan 16 anggota kelas atau antarmuka yang dihapus atau berubah.

Apa yang ditandai usang di next 15?

5 ekspor atau anggota baru ditandai usang di next 15.5.27.

Untuk agen

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