Aktualizacja next z 14.x do 15.x
Porównanie publicznego API next 14.2.35 i 15.5.27, obliczone automatycznie na podstawie typów TypeScript. Zmieniona sygnatura to możliwa zmiana niekompatybilna, a nie pewność.
Podsumowanie
| Usunięte ścieżki importu | 0 |
|---|---|
| Usunięte eksporty | 4 |
| Zmienione sygnatury | 10 |
| Usunięte składowe klas lub interfejsów | 6 |
| Zmienione składowe klas lub interfejsów | 10 |
| Nowo wycofane | 5 |
| Zmiany wymagań (engines, zależności peer) | 5 |
| Nowe eksporty | 25 |
Usunięte eksporty
| import | export | kind | Przed |
|---|---|---|---|
next/constants | GOOGLE_FONT_PROVIDER | variable | "https://fonts.googleapis.com/" |
next/constants | DEV_MIDDLEWARE_MANIFEST | variable | "_devMiddlewareManifest.json" |
next/constants | OPTIMIZED_FONT_PROVIDERS | variable | { url: string; preconnect: string; }[] |
next/constants | AUTOMATIC_FONT_OPTIMIZATION_MANIFEST | variable | "font-manifest.json" |
Zmienione sygnatury
| export | Przed | Po |
|---|---|---|
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 · DynamicOptions | LoadableGeneratedOptions & { 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 · LoadableOptions | LoadableGeneratedOptions & { 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> |
Usunięte składowe klas lub interfejsów
| member | import | Przed |
|---|---|---|
NextConfig.swcMinify | next | boolean | undefined |
NextConfig.analyticsId | next | string | undefined |
NextConfig.optimizeFonts | next | boolean | undefined |
NextConfig.outputFileTracing | next | boolean | undefined |
Router._getFlightData | next/router | (dataHref: string): Promise<{ data: string; }> |
Head.makeStylesheetInert | next/document | (node: ReactNode[]): ReactNode[] |
Zmienione składowe klas lub interfejsów
| member | Przed | Po |
|---|---|---|
NextConfig.logging | { fetches?: { fullUrl?: boolean | undefined; } | undefined; } | undefined | false | 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; } | undefined | false | { 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.previewData | any | PreviewData |
NextPageContext.locales | string[] | undefined | readonly 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.locales | string[] | undefined | readonly string[] | undefined |
Router.domainLocales | DomainLocale[] | undefined | readonly DomainLocale[] | undefined |
Nowo wycofane
| export | @deprecated |
|---|---|
next · NextConfig.amp | built-in amp support will be removed in Next 16 |
next · NextConfig.publicRuntimeConfig | Runtime config is deprecated and will be removed in Next.js 16. |
next · NextConfig.serverRuntimeConfig | Runtime config is deprecated and will be removed in Next.js 16. |
next/config · default | Runtime config is deprecated and will be removed in Next.js 16. |
next/config · setConfig | Runtime config is deprecated and will be removed in Next.js 16. |
Zmiany wymagań (engines, zależności peer)
| Przed | Po | |
|---|---|---|
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 | — | * |
Nowe eksporty (25)
| import | export | kind |
|---|---|---|
next | NextAdapter | interface |
next | Instrumentation | namespace |
next/link | useLinkStatus | variable |
next/cache | unstable_cacheTag | variable |
next/cache | unstable_cacheLife | function |
next/cache | unstable_expireTag | variable |
next/cache | unstable_expirePath | variable |
next/server | after | variable |
next/server | connection | variable |
next/server | unstable_rootParams | variable |
next/server | UnsafeUnwrappedParams | variable |
next/server | UnsafeUnwrappedSearchParams | variable |
next/headers | UnsafeUnwrappedCookies | type |
next/headers | UnsafeUnwrappedHeaders | type |
next/headers | UnsafeUnwrappedDraftMode | type |
next/constants | WEBPACK_STATS | variable |
next/constants | AdapterOutputType | enum |
next/constants | DYNAMIC_CSS_MANIFEST | variable |
next/constants | DEV_CLIENT_MIDDLEWARE_MANIFEST | variable |
next/constants | TURBOPACK_CLIENT_BUILD_MANIFEST | variable |
next/constants | TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST | variable |
next/navigation | forbidden | function |
next/navigation | unauthorized | function |
next/navigation | unstable_rethrow | variable |
next/navigation | unstable_isUnrecognizedActionError | function |
Najczęściej zadawane pytania
Jakie są zmiany niekompatybilne przy aktualizacji next z 14 do 15?
Między next 14.2.35 a 15.5.27 Vigia znalazła 4 usuniętych eksportów, 10 zmienionych sygnatur i 16 usuniętych lub zmienionych składowych klas lub interfejsów.
Co zostało wycofane w next 15?
5 eksportów lub składowych oznaczono w next 15.5.27 jako wycofane.
Dla agentów
GET https://vigia.coredls.cloud/v1/packages/npm/next/upgrade?from=14.2.35&to=15.5.27