Skip to content

Upgrading next 13 to 14

Unknown13.5.11 → 14.2.35Security15New1Fixed11

UnknownUpgrade verdict

355 of 366 releases publish no notes, so breaking changes can't be ruled out.

  • Some releases in this range publish no notes, so DepDelta can't rule out breaking changes.
  • DepDelta found no commit log for them either.
Top 3 of 15 that need code or config changes

next publishes an official migration guide for version 14. It covers more than the release notes do.

Upgrading to Next.js 14 ↗

Node.js requirement changed in 14.0.0: >=16.14.0 → >=18.17.0.

Adds graceful-fs ^4.2.11.

Drops watchpack.

Installs 23 packages in all (was 24).

Security15
Points to the Next.js Security Update for details about this security patch.
Next has a Denial of Service with Server Components - Incomplete Fix Follow-Up
High · CVSS 7.5
Next Vulnerable to Denial of Service with Server Components
High · CVSS 7.5
Next.js Improper Middleware Redirect Handling Leads to SSRF
Moderate · CVSS 6.5
Next.js Content Injection Vulnerability for Image Optimization
Moderate · CVSS 4.3
Next.js Affected by Cache Key Confusion for Image Optimization API Routes
Moderate · CVSS 6.2
Information exposure in Next.js dev server due to lack of origin verification
Low
Next.js may leak x-middleware-subrequest-id to external hosts
Low
Contains a security patch for CVE-2025-29927.
Critical · CVSS 9.1
Next.js Race Condition to Cache Poisoning
Low · CVSS 3.7
Next.js Allows a Denial of Service (DoS) with Server Actions
Moderate · CVSS 5.3
Next.js authorization bypass vulnerability
High · CVSS 7.5
Next.js Cache Poisoning
High · CVSS 7.5
Denial of Service condition in Next.js image optimization
Moderate · CVSS 5.9
Next.js Server-Side Request Forgery in Server Actions
High · CVSS 7.5

Generated by DepDelta from published .d.ts files. Not mixed with prose notes.

  • removed: export { revalidatePath } from 'next/dist/server/web/spec-extension/revalidate-path'
  • removed: export { revalidateTag } from 'next/dist/server/web/spec-extension/revalidate-tag'
  • added: export { revalidatePath } from 'next/dist/server/web/spec-extension/revalidate'
  • added: export { revalidateTag } from 'next/dist/server/web/spec-extension/revalidate'
  • added: export { unstable_noStore } from 'next/dist/server/web/spec-extension/unstable-no-store'
  • removed: property Window.__NEXT_PRELOADREADY?: (ids?: (string | number)[]) => Promise<void>
  • removed: property Window.__PRERENDER_MANIFEST?: string
  • added: property Window.__INTERCEPTION_ROUTE_REWRITE_MANIFEST?: string
  • added: property Window.__NEXT_FONT_MANIFEST?: any
  • added: property Window.__REACT_LOADABLE_MANIFEST?: any
  • added: property Window.__RSC_MANIFEST?: any
  • added: property Window.__RSC_SERVER_MANIFEST?: any
  • added: property Window.__SUBRESOURCE_INTEGRITY_MANIFEST?: string
  • added: var __next_log_error__: undefined | ((err: unknown) => void)
  • added: export * from '../pages/_app'
  • added: export { default } from '../pages/_app'
  • added: export * from '../shared/lib/app-dynamic'
  • added: export { default } from '../shared/lib/app-dynamic'
  • added: export * from '../shared/lib/constants'
  • added: export * from '../pages/_document'
  • added: export { default } from '../pages/_document'
  • added: export * from '../shared/lib/dynamic'
  • added: export { default } from '../shared/lib/dynamic'
  • added: export * from '../shared/lib/head'
  • added: export { default } from '../shared/lib/head'
  • added: export * from '../client/components/headers'
  • added: export * from '../shared/lib/image-external'
  • added: export { default } from '../shared/lib/image-external'
  • added: export * from '../client/link'
  • added: export { default } from '../client/link'
  • added: export * from '../client/components/navigation'
  • added: export * from '../client/components/navigation.react-server'
  • added: export * from '../server/og/image-response'
  • added: export * from '../client/router'
  • added: export { default } from '../client/router'
  • added: export * from '../client/script'
  • added: export { default } from '../client/script'
  • added: export * from '../server/web/exports/index'
  • removed: property MiddlewareConfig.matchers?: MiddlewareMatcher[]
  • changed: function getPageStaticInfo(params: { pageFilePath: string; nextConfig: Partial<NextConfig>; isDev?: boolean; page?: string; pageType: 'pages' | 'app' | 'root' }): Promise<PageStaticInfo> → function getPageStaticInfo(params: { pageFilePath: string; nextConfig: Partial<NextConfig>; isDev?: boolean; page?: string; pageType: PAGE_TYPES }): Promise<PageStaticInfo>
  • changed: function getRSCModuleInformation(source: string, isServerLayer: boolean): RSCMeta → function getRSCModuleInformation(source: string, isReactServerLayer: boolean): RSCMeta
  • changed: property PageStaticInfo.middleware?: MiddlewareConfig → property PageStaticInfo.middleware?: MiddlewareConfigParsed
  • added: interface MiddlewareConfigParsed extends Omit<MiddlewareConfig, 'matcher'>
  • added: property MiddlewareConfig.matcher?: string | string[] | MiddlewareMatcher[]
  • added: property MiddlewareConfigParsed.matchers?: MiddlewareMatcher[]
  • added: property NextBabelLoaderOptions.srcDir: string
  • changed: const NextBuildContext: Partial<{ compilerIdx?: number; pluginState: Record<string, any>; dir: string; buildId: string; config: NextConfigComplete; appDir: string; pagesDir: string; r… → const NextBuildContext: Partial<{ compilerIdx?: number; pluginState: Record<string, any>; dir: string; buildId: string; encryptionKey: string; config: NextConfigComplete; appDir: stri…
  • added: index MappedPages[page: string]: string
  • added: interface MappedPages
  • changed: function collectBuildTraces({ dir, config, distDir, pageKeys, pageInfos, staticPages, nextBuildSpan, hasSsrAmpPages, buildTraceContext, outputFileTracingRoot }: { dir: string; distDir: string; pageKeys: { app?: string[]; pages: string[] }; staticPages: string[]; hasSsrAmpPages: boolean; outputFileTracingRoot: string; pageInfos: [string, PageInfo][]; nextBuildSpan?: Span; config: NextConfigComplet… → function collectBuildTraces({ dir, config, distDir, pageInfos, staticPages, nextBuildSpan, hasSsrAmpPages, buildTraceContext, outputFileTracingRoot }: { dir: string; distDir: string; staticPages: string[]; hasSsrAmpPages: boolean; outputFileTracingRoot: string; pageInfos: PageInfos | SerializedPageInfos; nextBuildSpan?: Span; config: NextConfigComplete; buildTraceContext?: BuildTraceContext }): P…
  • changed: function runCompiler(config: webpack.Configuration, { runWebpackSpan, inputFileSystem }: { runWebpackSpan: Span; inputFileSystem?: any }): Promise<[result: CompilerResult, inputFileSystem?: any]> → function runCompiler(config: webpack.Configuration, { runWebpackSpan, inputFileSystem }: { runWebpackSpan: Span; inputFileSystem?: webpack.Compiler['inputFileSystem'] }): Promise<[result: CompilerResult, inputFileSystem?: webpack.Compiler['inputFileSystem']]>
  • added: function createAppRouterApiAliases(isServerOnlyLayer: boolean): Record<string, string>
  • added: function createNextApiEsmAliases(): Record<string, string>
  • added: function createRSCAliases(bundledReactChannel: string, { layer, isEdgeServer, reactProductionProfiling }: { layer: WebpackLayerName; isEdgeServer: boolean; reactProductionProfiling: boolean }): CompilerAliases
  • added: function createServerOnlyClientOnlyAliases(isServer: boolean): CompilerAliases
  • added: function createWebpackAliases({ distDir, isClient, isEdgeServer, isNodeServer, dev, config, pagesDir, appDir, dir, reactProductionProfiling, hasRewrites }: { distDir: string; isClient: boolean; isEdgeServer: boolean; isNodeServer: boolean; dev: boolean; config: NextConfigComplete; pagesDir: string | undefined; appDir: string | undefined; dir: string; reactProductionProfiling: boolean; hasRewrites…
  • added: function getOptimizedModuleAliases(): CompilerAliases
  • changed: function createPagesMapping({ isDev, pageExtensions, pagePaths, pagesType, pagesDir }: { isDev: boolean; pageExtensions: string[]; pagePaths: string[]; pagesType: 'pages' | 'root' | 'app'; pagesDir: string | undefined }): { [page: string]: string } → function createPagesMapping({ isDev, pageExtensions, pagePaths, pagesType, pagesDir }: { isDev: boolean; pageExtensions: PageExtensions; pagePaths: string[]; pagesType: PAGE_TYPES; pagesDir: string | undefined }): MappedPages
  • changed: function getEdgeServerEntry(opts: { rootDir: string; absolutePagePath: string; buildId: string; bundlePath: string; config: NextConfigComplete; isDev: boolean; isServerComponent: boolean; page: string; pages: { [page: string]: string }; middleware?: Partial<MiddlewareConfig>; pagesType: 'app' | 'pages' | 'root'; appDirLoader?: string; hasInstrumentationHook?: boolean; preferredRegion: string | st… → function getEdgeServerEntry(opts: { rootDir: string; absolutePagePath: string; buildId: string; bundlePath: string; config: NextConfigComplete; isDev: boolean; isServerComponent: boolean; page: string; pages: MappedPages; middleware?: Partial<MiddlewareConfigParsed>; pagesType: PAGE_TYPES; appDirLoader?: string; hasInstrumentationHook?: boolean; preferredRegion: string | string[] | undefined; mid…
  • changed: function getPageFromPath(pagePath: string, pageExtensions: string[]): string → function getPageFromPath(pagePath: string, pageExtensions: PageExtensions): string
  • changed: function getStaticInfoIncludingLayouts({ isInsideAppDir, pageExtensions, pageFilePath, appDir, config, isDev, page }: { isInsideAppDir: boolean; pageExtensions: string[]; pageFilePath: string; appDir: string | undefined; config: NextConfigComplete; isDev: boolean | undefined; page: string }): Promise<PageStaticInfo> → function getStaticInfoIncludingLayouts({ isInsideAppDir, pageExtensions, pageFilePath, appDir, config, isDev, page }: { isInsideAppDir: boolean; pageExtensions: PageExtensions; pageFilePath: string; appDir: string | undefined; config: NextConfigComplete; isDev: boolean | undefined; page: string }): Promise<PageStaticInfo>
  • changed: function runDependingOnPageType<T>(params: { onClient: () => T; onEdgeServer: () => T; onServer: () => T; page: string; pageRuntime: ServerRuntime; pageType?: 'app' | 'pages' | 'root' }): void → function runDependingOnPageType<T>(params: { onClient: () => T; onEdgeServer: () => T; onServer: () => T; page: string; pageRuntime: ServerRuntime; pageType?: PAGE_TYPES }): void
  • changed: function sortByPageExts(pageExtensions: string[]): (a: string, b: string) => number → function sortByPageExts(pageExtensions: PageExtensions): (a: string, b: string) => number
  • changed: property CreateEntrypointsParams.appPaths?: Record<string, string> → property CreateEntrypointsParams.appPaths?: MappedPages
  • changed: property CreateEntrypointsParams.pageExtensions: string[] → property CreateEntrypointsParams.pageExtensions: PageExtensions
  • changed: property CreateEntrypointsParams.pages: { [page: string]: string } → property CreateEntrypointsParams.pages: MappedPages
  • changed: property CreateEntrypointsParams.rootPaths?: Record<string, string> → property CreateEntrypointsParams.rootPaths?: MappedPages
  • added: function getInstrumentationEntry(opts: { absolutePagePath: string; isEdgeServer: boolean; isDev: boolean }): { import: string; filename: string; layer: 'instrument' }
  • changed: function isResourceInPackages(resource: string, packageNames?: string[], packageDirMapping?: Map<string, string>): boolean | undefined → function isResourceInPackages(resource: string, packageNames?: string[], packageDirMapping?: Map<string, string>): boolean
  • changed: function makeExternalHandler({ config, optOutBundlingPackageRegex, dir, hasAppDir }: { config: NextConfigComplete; optOutBundlingPackageRegex: RegExp; dir: string; hasAppDir: boolean }): (context: string, request: string, dependencyType: string, layer: WebpackLayerName | null, getResolve: (options: any) => (resolveContext: string, resolveRequest: string) => Promise<[string | null, boolean]>) => P… → function makeExternalHandler({ config, optOutBundlingPackages, optOutBundlingPackageRegex, dir }: { config: NextConfigComplete; optOutBundlingPackages: string[]; optOutBundlingPackageRegex: RegExp; dir: string }): (context: string, request: string, dependencyType: string, layer: WebpackLayerName | null, getResolve: (options: any) => (resolveContext: string, resolveRequest: string) => Promise<[str…
  • changed: function resolveExternal(dir: string, esmExternalsConfig: NextConfigComplete['experimental']['esmExternals'], context: string, request: string, isEsmRequested: boolean, hasAppDir: boolean, getResolve: (options: any) => (resolveContext: string, resolveRequest: string) => Promise<[string | null, boolean]>, isLocalCallback?: (res: string) => any, baseResolveCheck?: boolean, esmResolveOptions?: any,… → function resolveExternal(dir: string, esmExternalsConfig: NextConfigComplete['experimental']['esmExternals'], context: string, request: string, isEsmRequested: boolean, _optOutBundlingPackages: string[], getResolve: (options: ResolveOptions) => (resolveContext: string, resolveRequest: string) => Promise<[string | null, boolean]>, isLocalCallback?: (res: string) => any, baseResolveCheck?: boolean,…
  • removed: function buildCustomRoute(type: 'header', route: Header): ManifestHeaderRoute
  • removed: function buildCustomRoute(type: 'redirect', route: Redirect, restrictedRedirectPaths: string[]): ManifestRedirectRoute
  • removed: function buildCustomRoute(type: 'rewrite', route: Rewrite): ManifestRewriteRoute
  • changed: default function build(dir: string, reactProductionProfiling: boolean | undefined, debugOutput: boolean | undefined, runLint: boolean | undefined, noMangling: boolean | undefined, appDirOnly: boolean | undefined, turboNextBuild: boolean | undefined, turboNextBuildRoot: null | undefined, buildMode: 'default' | 'experimental-compile' | 'experimental-generate'): Promise<void> → default function build(dir: string, reactProductionProfiling: boolean | undefined, debugOutput: boolean | undefined, runLint: boolean | undefined, noMangling: boolean | undefined, appDirOnly: boolean | undefined, turboNextBuild: boolean | undefined, experimentalBuildMode: 'default' | 'compile' | 'generate'): Promise<void>
  • changed: interface DynamicSsgRoute extends ExperimentalBypassForInfo, DataRouteRouteInfo → interface DynamicSsgRoute extends ExperimentalBypassForInfo, DataRouteRouteInfo, ExperimentalPPRInfo
  • changed: interface SsgRoute extends ExperimentalBypassForInfo, DataRouteRouteInfo → interface SsgRoute extends ExperimentalBypassForInfo, DataRouteRouteInfo, ExperimentalPPRInfo
  • added: property DynamicSsgRoute.prefetchDataRouteRegex: string | null | undefined
  • changed: function loadEntrypoint(entrypoint: 'app-page' | 'app-route' | 'edge-app-route' | 'middleware' | 'pages' | 'pages-api', replacements: Record<`VAR_${string}`, string>, injections?: Record<string, string>): Promise<string> → function loadEntrypoint(entrypoint: 'app-page' | 'app-route' | 'edge-app-route' | 'edge-ssr' | 'edge-ssr-app' | 'middleware' | 'pages' | 'pages-api', replacements: Record<`VAR_${string}`, string>, injections?: Record<string, string>, imports?: Record<string, string | null>): Promise<string>
  • changed: default function loadJsConfig(dir: string, config: NextConfigComplete): Promise<{ useTypeScript: boolean; jsConfig: { compilerOptions: Record<string, any> } | undefined; resolvedBaseUrl: string | undefined }> → default function loadJsConfig(dir: string, config: NextConfigComplete): Promise<{ useTypeScript: boolean; jsConfig: JsConfig; resolvedBaseUrl: ResolvedBaseUrl }>
  • added: type JsConfig = { compilerOptions: Record<string, any> } | undefined
  • added: type ResolvedBaseUrl = { baseUrl: string; isImplicit: boolean } | undefined
  • removed: function renderToStaticMarkup(): void
  • removed: function renderToString(): void
  • added: function normalizeCatchAllRoutes(appPaths: Record<string, string[]>, normalizer?: AppPathnameNormalizer): void
  • changed: function reportTrigger(trigger: string): void → function reportTrigger(trigger: string, url?: string): void
  • changed: const prefixes: { readonly wait: string; readonly error: string; readonly warn: string; readonly ready: string; readonly info: string; readonly event: string; readonly trace:… → const prefixes: { readonly wait: string; readonly error: string; readonly warn: string; readonly ready: '▲'; readonly info: string; readonly event: string; readonly trace: str…
  • added: function formatTrigger(trigger: string): string
  • added: type PageExtensions = string[]
  • added: const createProgress: (total: number, label: string) => () => void
  • changed: default function createSpinner(text: string, options?: ora.Options, logFn?: (...data: any[]) => void): ora.Ora | undefined → default function createSpinner(text: string, options?: ora.Options, logFn?: (...data: any[]) => void): (ora.Ora & { setText: (text: string) => void }) | undefined
  • added: function __nextjs_pure<T>(expr: T): T
  • removed: const teardownCrashReporter: () => void
  • removed: enum ServerClientChangeType
  • removed: interface ServerClientChange
  • removed: interface Update
  • removed: member ServerClientChangeType.Both = 'Both'
  • removed: member ServerClientChangeType.Client = 'Client'
  • removed: member ServerClientChangeType.Server = 'Server'
  • removed: method Endpoint.changed(): Promise<AsyncIterableIterator<TurbopackResult<ServerClientChange>>>
  • removed: property Binding.teardownCrashReporter?: any
  • removed: property Issue.category: string
  • removed: property ProjectOptions.serverAddr: string
  • removed: property ServerClientChange.type: ServerClientChangeType
  • removed: property Update.update: unknown
  • changed: function createDefineEnv({ allowedRevalidateHeaderKeys, clientRouterFilters, config, dev, distDir, fetchCacheKeyPrefix, hasRewrites, middlewareMatchers, previewModeId }: Omit<DefineEnvPluginOptions, 'isClient' | 'isNodeOrEdgeCompilation' | 'isEdgeServer' | 'isNodeServer'>): DefineEnv → function createDefineEnv({ isTurbopack, clientRouterFilters, config, dev, distDir, fetchCacheKeyPrefix, hasRewrites, middlewareMatchers }: Omit<DefineEnvPluginOptions, 'isClient' | 'isNodeOrEdgeCompilation' | 'isEdgeServer' | 'isNodeServer'>): DefineEnv
  • changed: function loadBindings(): Promise<Binding> → function loadBindings(useWasmBinary?: boolean): Promise<Binding>
  • changed: method Project.updateInfoSubscribe(): AsyncIterableIterator<TurbopackResult<UpdateInfo>> → method Project.updateInfoSubscribe(aggregationMs: number): AsyncIterableIterator<TurbopackResult<UpdateMessage>>
  • changed: property Issue.description: string → property Issue.description?: StyledString
  • changed: property Issue.detail: string → property Issue.detail?: StyledString
  • changed: property Issue.source?: { source: { ident: string; content?: string }; start: { line: number; column: number }; end: { line: number; column: number } } → property Issue.source?: { source: { ident: string; content?: string }; range?: { start: { line: number; column: number }; end: { line: number; column: number } } }
  • changed: property Issue.title: string → property Issue.title: StyledString
  • changed: type Route = { type: 'conflict' } | { type: 'app-page'; htmlEndpoint: Endpoint; rscEndpoint: Endpoint } | { type: 'app-route'; endpoint: Endpoint } | { type: 'page'; htmlEn… → type Route = { type: 'conflict' } | { type: 'app-page'; pages: { originalName: string; htmlEndpoint: Endpoint; rscEndpoint: Endpoint }[] } | { type: 'app-route'; originalNa…
  • changed: type WrittenEndpoint = { type: 'nodejs'; entryPath: string; serverPaths: ServerPath[]; config: EndpointConfig } | { type: 'edge'; files: string[]; serverPaths: ServerPath[]; globalVa… → type WrittenEndpoint = { type: 'nodejs'; entryPath: string; clientPaths: string[]; serverPaths: ServerPath[]; config: EndpointConfig } | { type: 'edge'; clientPaths: string[]; server…
  • added: interface Instrumentation
  • added: interface TurbopackStackFrame
  • added: method Endpoint.clientChanged(): Promise<AsyncIterableIterator<TurbopackResult>>
  • added: method Endpoint.serverChanged(includeIssues: boolean): Promise<AsyncIterableIterator<TurbopackResult>>
  • added: method Project.getSourceForAsset(filePath: string): Promise<string | null>
  • added: method Project.traceSource(stackFrame: TurbopackStackFrame): Promise<TurbopackStackFrame | null>
  • added: property Binding.css: { lightning: { transform(transformOptions: any): Promise<any>; transformStyleAttr(attrOptions: any): Promise<any> } }
  • added: property Entrypoints.instrumentation?: Instrumentation
  • added: property Instrumentation.edge: Endpoint
  • added: property Instrumentation.nodeJs: Endpoint
  • added: property Issue.stage: string
  • added: property ProjectOptions.buildId: string
  • added: property ProjectOptions.dev: boolean
  • added: property ProjectOptions.encryptionKey: string
  • added: property ProjectOptions.previewProps: __ApiPreviewProps
  • added: property TurbopackStackFrame.column?: number | null
  • added: property TurbopackStackFrame.file: string
  • added: property TurbopackStackFrame.isInternal?: boolean
  • added: property TurbopackStackFrame.isServer: boolean
  • added: property TurbopackStackFrame.line?: number
  • added: property TurbopackStackFrame.methodName?: string
  • added: type StyledString = { type: 'text'; value: string } | { type: 'code'; value: string } | { type: 'strong'; value: string } | { type: 'stack'; value: StyledString[] } | { type: 'lin…
  • added: type Update = IssuesUpdate | PartialUpdate
  • added: type UpdateMessage = { updateType: 'start' } | { updateType: 'end'; value: UpdateInfo }
  • removed: property JestTransformerConfig.hasServerComponents?: boolean
  • changed: property JestTransformerConfig.resolvedBaseUrl?: string → property JestTransformerConfig.resolvedBaseUrl?: ResolvedBaseUrl
  • added: property JestTransformerConfig.serverComponents?: boolean
  • removed: type BundleType = 'client' | 'server' | 'default'
  • changed: function getJestSWCOptions({ isServer, filename, esm, modularizeImports, swcPlugins, compilerOptions, jsConfig, resolvedBaseUrl, pagesDir, hasServerComponents }: { isServer: boolean; filename: string; esm: boolean; modularizeImports?: NextConfig['modularizeImports']; swcPlugins: ExperimentalConfig['swcPlugins']; compilerOptions: NextConfig['compiler']; jsConfig: any; resolvedBaseUrl?: string; pag… → function getJestSWCOptions({ isServer, filename, esm, modularizeImports, swcPlugins, compilerOptions, jsConfig, resolvedBaseUrl, pagesDir }: { isServer: boolean; filename: string; esm: boolean; modularizeImports?: NextConfig['modularizeImports']; swcPlugins: ExperimentalConfig['swcPlugins']; compilerOptions: NextConfig['compiler']; jsConfig: any; resolvedBaseUrl?: ResolvedBaseUrl; pagesDir?: stri…
  • changed: function getLoaderSWCOptions({ filename, development, isServer, pagesDir, appDir, isPageFile, hasReactRefresh, modularizeImports, optimizeServerReact, optimizePackageImports, swcPlugins, compilerOptions, jsConfig, supportedBrowsers, swcCacheDir, relativeFilePathFromRoot, hasServerComponents, isServerLayer, isServerActionsEnabled, bundleTarget }: { filename: string; development: boolean; isServer:… → function getLoaderSWCOptions({ filename, development, isServer, pagesDir, appDir, isPageFile, hasReactRefresh, modularizeImports, optimizeServerReact, optimizePackageImports, swcPlugins, compilerOptions, jsConfig, supportedBrowsers, swcCacheDir, relativeFilePathFromRoot, serverComponents, bundleLayer, esm }: { filename: string; development: boolean; isServer: boolean; pagesDir?: string; appDir?:…
  • removed: export { headerHooks }
  • removed: export { staticGenerationBailout }
  • added: function patchFetch(): void
  • added: const ComponentMod: any
  • added: default function nHandler(opts: { page: string; request: RequestData }): Promise<import('../../server/web/types').FetchEventResult>
  • added: const ComponentMod: any
  • added: default function nHandler(opts: { page: string; request: RequestData }): Promise<import('../../server/web/types').FetchEventResult>
  • added: function envProxy(envVars: EnvVars): RestoreOriginalFunction
  • added: function turborepoTraceAccess<T>(f: () => T | Promise<T>, parent: TurborepoAccessTraceResult): Promise<T> | T
  • added: function writeTurborepoAccessTraceResult({ distDir, traces }: { distDir: string; traces: Array<TurborepoAccessTraceResult> }): Promise<void>
  • added: export { SerializableTurborepoAccessTraceResult } from './types'
  • added: export { TurborepoAccessTraceResult } from './result'
  • added: export { turborepoTraceAccess } from './helpers'
  • added: export { writeTurborepoAccessTraceResult } from './helpers'
  • added: class TurborepoAccessTraceResult
  • added: constructor TurborepoAccessTraceResult(envVars?: EnvVars, addresses?: Addresses, fsPaths?: FS)
  • added: method TurborepoAccessTraceResult.merge(other: TurborepoAccessTraceResult): this
  • added: method TurborepoAccessTraceResult.serialize(): SerializableTurborepoAccessTraceResult
  • added: method TurborepoAccessTraceResult.toPublicTrace(): PublicTurborepoAccessTraceResult
  • added: static method TurborepoAccessTraceResult.fromSerialized(serialized: SerializableTurborepoAccessTraceResult): TurborepoAccessTraceResult
  • added: function tcpProxy(addresses: Addresses): RestoreOriginalFunction
  • added: interface Address
  • added: property Address.addr: string
  • added: property Address.port: string
  • added: type Addresses = Array<Address>
  • added: type EnvVars = Set<string | Symbol>
  • added: type FS = Set<string>
  • added: type PublicTurborepoAccessTraceResult = Readonly<{ filePaths: Array<string>; network: boolean; envVarKeys: Array<string> }>
  • added: type RestoreOriginalFunction = () => void
  • added: type SerializableTurborepoAccessTraceResult = Readonly<{ fs: Array<string>; addresses: Addresses; envVars: Array<string> }>
  • removed: const collectGenerateParams: (segment: any, parentSegments?: string[], generateParams?: GenerateParams) => Promise<GenerateParams>
  • removed: function isWebpackServerLayer(layer: WebpackLayerName | null | undefined): boolean
  • removed: property PageInfo.isSsg: boolean
  • removed: property PageInfo.static: boolean
  • removed: type GenerateParams = Array<{ config?: AppConfig; isDynamicSegment?: boolean; segmentPath: string; getStaticPaths?: GetStaticPaths; generateStaticParams?: any; isLayout?: boolean }>
  • changed: function buildAppStaticPaths({ page, distDir, configFileName, generateParams, isrFlushToDisk, incrementalCacheHandlerPath, requestHeaders, maxMemoryCacheSize, fetchCacheKeyPrefix, staticGenerationAsyncStorage, serverHooks }: { page: string; configFileName: string; generateParams: GenerateParams; incrementalCacheHandlerPath?: string; distDir: string; isrFlushToDisk?: boolean; fetchCacheKeyPrefix?:… → function buildAppStaticPaths({ dir, page, distDir, configFileName, generateParams, isrFlushToDisk, cacheHandler, requestHeaders, maxMemoryCacheSize, fetchCacheKeyPrefix, ppr, ComponentMod }: { dir: string; page: string; configFileName: string; generateParams: GenerateParamsResults; distDir: string; isrFlushToDisk?: boolean; fetchCacheKeyPrefix?: string; cacheHandler?: string; maxMemoryCacheSize?:…
  • changed: function buildStaticPaths({ page, getStaticPaths, staticPathsResult, configFileName, locales, defaultLocale, appDir }: { page: string; getStaticPaths?: GetStaticPaths; staticPathsResult?: UnwrapPromise<ReturnType<GetStaticPaths>>; configFileName: string; locales?: string[]; defaultLocale?: string; appDir?: boolean }): Promise<Omit<UnwrapPromise<ReturnType<GetStaticPaths>>, 'paths'> & { paths: str… → function buildStaticPaths({ page, getStaticPaths, staticPathsResult, configFileName, locales, defaultLocale, appDir }: { page: string; getStaticPaths?: GetStaticPaths; staticPathsResult?: GetStaticPathsResult; configFileName: string; locales?: string[]; defaultLocale?: string; appDir?: boolean }): Promise<Omit<GetStaticPathsResult, 'paths'> & { paths: string[]; encodedPaths: string[] }>
  • changed: function getDefinedNamedExports(page: string, distDir: string, runtimeEnvConfig: any): Promise<ReadonlyArray<string>> → function getDefinedNamedExports({ page, distDir, runtimeEnvConfig }: { page: string; distDir: string; runtimeEnvConfig: any }): Promise<ReadonlyArray<string>>
  • changed: function hasCustomGetInitialProps(page: string, distDir: string, runtimeEnvConfig: any, checkingApp: boolean): Promise<boolean> → function hasCustomGetInitialProps({ page, distDir, runtimeEnvConfig, checkingApp }: { page: string; distDir: string; runtimeEnvConfig: any; checkingApp: boolean }): Promise<boolean>
  • changed: function isPageStatic({ page, distDir, configFileName, runtimeEnvConfig, httpAgentOptions, locales, defaultLocale, parentId, pageRuntime, edgeInfo, pageType, originalAppPath, isrFlushToDisk, maxMemoryCacheSize, incrementalCacheHandlerPath }: { page: string; distDir: string; configFileName: string; runtimeEnvConfig: any; httpAgentOptions: NextConfigComplete['httpAgentOptions']; locales?: string[];… → function isPageStatic({ dir, page, distDir, configFileName, runtimeEnvConfig, httpAgentOptions, locales, defaultLocale, parentId, pageRuntime, edgeInfo, pageType, originalAppPath, isrFlushToDisk, maxMemoryCacheSize, cacheHandler, ppr }: { dir: string; page: string; distDir: string; configFileName: string; runtimeEnvConfig: any; httpAgentOptions: NextConfigComplete['httpAgentOptions']; locales?: s…
  • changed: function printTreeView(lists: { pages: ReadonlyArray<string>; app?: ReadonlyArray<string> }, pageInfos: Map<string, PageInfo>, { distPath, buildId, pagesDir, pageExtensions, buildManifest, appBuildManifest, middlewareManifest, useStaticPages404, gzipSize }: { distPath: string; buildId: string; pagesDir?: string; pageExtensions: string[]; buildManifest: BuildManifest; appBuildManifest?: AppBuildMa… → function printTreeView(lists: { pages: ReadonlyArray<string>; app: ReadonlyArray<string> | undefined }, pageInfos: Map<string, PageInfo>, { distPath, buildId, pagesDir, pageExtensions, buildManifest, appBuildManifest, middlewareManifest, useStaticPages404, gzipSize }: { distPath: string; buildId: string; pagesDir?: string; pageExtensions: PageExtensions; buildManifest: BuildManifest; appBuildMani…
  • changed: type AppConfig = { revalidate?: number | false; dynamicParams?: true | false; dynamic?: 'auto' | 'error' | 'force-static' | 'force-dynamic'; fetchCache?: 'force-cache' | 'only-… → type AppConfig = { revalidate?: number | false; dynamicParams?: true | false; dynamic?: AppConfigDynamic; fetchCache?: 'force-cache' | 'only-cache'; preferredRegion?: string }
  • added: function collectGenerateParams(tree: LoaderTree): Promise<GenerateParamsResults>
  • added: function deserializePageInfos(input: SerializedPageInfos): PageInfos
  • added: function isWebpackClientOnlyLayer(layer: WebpackLayerName | null | undefined): boolean
  • added: function isWebpackServerOnlyLayer(layer: WebpackLayerName | null | undefined): boolean
  • added: function serializePageInfos(input: PageInfos): SerializedPageInfos
  • added: property PageInfo.hasEmptyPrelude?: boolean
  • added: property PageInfo.hasPostponed?: boolean
  • added: property PageInfo.isDynamicAppRoute?: boolean
  • added: property PageInfo.isPPR: boolean
  • added: property PageInfo.isSSG: boolean
  • added: property PageInfo.isStatic: boolean
  • added: type AppConfigDynamic = 'auto' | 'error' | 'force-static' | 'force-dynamic'
  • added: type GenerateParamsResults = GenerateParamsResult[]
  • added: type PageInfos = Map<string, PageInfo>
  • added: type SerializedPageInfos = [string, PageInfo][]
  • changed: function webpackBuildImpl(compilerName?: keyof typeof COMPILER_INDEXES): Promise<{ duration: number; pluginState: any; buildTraceContext?: BuildTraceContext }> → function webpackBuildImpl(compilerName: keyof typeof COMPILER_INDEXES | null): Promise<{ duration: number; pluginState: any; buildTraceContext?: BuildTraceContext; telemetryState?: TelemetryPluginState }>
  • changed: function workerMain(workerData: { compilerName: keyof typeof COMPILER_INDEXES; buildContext: typeof NextBuildContext }): Promise<{ duration: number; pluginState: any; buildTraceContext?: BuildTraceContext | undefined }> → function workerMain(workerData: { compilerName: keyof typeof COMPILER_INDEXES; buildContext: typeof NextBuildContext; traceState: TraceState }): Promise<Awaited<ReturnType<typeof webpackBuildImpl>> & { debugTraceEvents: TraceEvent[] }>
  • changed: function webpackBuild(compilerNames?: typeof ORDERED_COMPILER_NAMES): Promise<any> → function webpackBuild(withWorker: boolean, compilerNames: typeof ORDERED_COMPILER_NAMES | null): ReturnType<typeof webpackBuildWithWorker>
  • changed: default function getBaseWebpackConfig(dir: string, { buildId, config, compilerType, dev, entrypoints, isDevFallback, pagesDir, reactProductionProfiling, rewrites, originalRewrites, originalRedirects, runWebpackSpan, appDir, middlewareMatchers, noMangling, jsConfig, resolvedBaseUrl, supportedBrowsers, clientRouterFilters, previewModeId, fetchCacheKeyPrefix, allowedRevalidateHeaderKeys }: { buildId: string… → default function getBaseWebpackConfig(dir: string, { buildId, encryptionKey, config, compilerType, dev, entrypoints, isDevFallback, pagesDir, reactProductionProfiling, rewrites, originalRewrites, originalRedirects, runWebpackSpan, appDir, middlewareMatchers, noMangling, jsConfig, resolvedBaseUrl, supportedBrowsers, clientRouterFilters, fetchCacheKeyPrefix, edgePreviewProps }: { buildId: string; encryptio…
  • changed: function loadProjectInfo({ dir, config, dev }: { dir: string; config: NextConfigComplete; dev: boolean }): Promise<{ jsConfig: { compilerOptions: Record<string, any> } | undefined; resolvedBaseUrl: string | undefined; supportedBrowsers: string[] | undefined }> → function loadProjectInfo({ dir, config, dev }: { dir: string; config: NextConfigComplete; dev: boolean }): Promise<{ jsConfig: JsConfig; resolvedBaseUrl: ResolvedBaseUrl; supportedBrowsers: string[] | undefined }>
  • added: const NEXT_PROJECT_ROOT: string
  • added: const NEXT_PROJECT_ROOT_DIST: string
  • added: const babelIncludeRegexes: RegExp[]
  • added: function hasExternalOtelApiPackage(): boolean
  • added: const edgeConditionNames: string[]
  • added: function getMainField(compilerType: CompilerNameValues, preferEsm: boolean): string[]
  • added: function dashesCamelCase(str: string): string
  • added: function normalizeSourceMapForRuntime(map: any, loaderContext: any): string
  • added: function getExportCode(exports: CssExport[], replacements: ApiReplacement[], options: any): string
  • added: function getImportCode(imports: CssImport[], options: any): string
  • added: function getModuleCode(result: { map: any; css: any }, api: ApiParam[], replacements: ApiReplacement[], options: any, loaderContext: LoaderContext<any>): string
  • added: interface ApiParam
  • added: interface ApiReplacement
  • added: interface CssExport
  • added: interface CssImport
  • added: property ApiParam.dedupe?: boolean
  • added: property ApiParam.importName?: string
  • added: property ApiParam.index?: number
  • added: property ApiParam.layer?: string
  • added: property ApiParam.media?: string
  • added: property ApiParam.supports?: string
  • added: property ApiParam.url?: string
  • added: property ApiReplacement.hash?: string
  • added: property ApiReplacement.importName: string
  • added: property ApiReplacement.localName?: string
  • added: property ApiReplacement.needQuotes?: boolean
  • added: property ApiReplacement.replacementName: string
  • added: property CssExport.name: string
  • added: property CssExport.value: string
  • added: property CssImport.icss?: boolean
  • added: property CssImport.importName: string
  • added: property CssImport.index?: number
  • added: property CssImport.type?: 'url' | string
  • added: property CssImport.url: string
  • added: default LightningCssLoader
  • added: export { LightningCssMinifyPlugin } from './minify'
  • added: enum ECacheKey
  • added: member ECacheKey.loader = 'loader'
  • added: member ECacheKey.minify = 'minify'
  • added: const raw = true
  • added: function LightningCssLoader(this: LoaderContext<any>, source: string, prevMap?: Record<string, any>): Promise<void>
  • added: class LightningCssMinifyPlugin
  • added: constructor LightningCssMinifyPlugin(opts?: any)
  • added: method LightningCssMinifyPlugin.apply(compiler: Compiler): void
  • added: const getTargets: (opts: { targets?: string[]; key: any }) => any
  • changed: function createStaticMetadataFromRoute(resolvedDir: string, { segment, metadataResolver, isRootLayoutOrRootPage, pageExtensions, basePath }: { segment: string; metadataResolver: MetadataResolver; isRootLayoutOrRootPage: boolean; pageExtensions: string[]; basePath: string }): Promise<CollectingMetadata | null> → function createStaticMetadataFromRoute(resolvedDir: string, { segment, metadataResolver, isRootLayoutOrRootPage, pageExtensions, basePath }: { segment: string; metadataResolver: MetadataResolver; isRootLayoutOrRootPage: boolean; pageExtensions: PageExtensions; basePath: string }): Promise<CollectingMetadata | null>
  • changed: type EdgeSSRLoaderQuery = { absolute500Path: string; absoluteAppPath: string; absoluteDocumentPath: string; absoluteErrorPath: string; absolutePagePath: string; buildId: string; dev: bo… → type EdgeSSRLoaderQuery = { absolute500Path: string; absoluteAppPath: string; absoluteDocumentPath: string; absoluteErrorPath: string; absolutePagePath: string; dev: boolean; isServerCo…
  • changed: function getRender({ dev, page, appMod, pageMod, errorMod, error500Mod, pagesType, Document, buildManifest, prerenderManifest, reactLoadableManifest, renderToHTML, clientReferenceManifest, subresourceIntegrityManifest, serverActionsManifest, serverActionsBodySizeLimit, config, buildId, nextFontManifest, incrementalCacheHandler }: { pagesType: 'app' | 'pages' | 'root'; dev: boolean; page: string;… → function getRender({ dev, page, appMod, pageMod, errorMod, error500Mod, pagesType, Document, buildManifest, reactLoadableManifest, interceptionRouteRewrites, renderToHTML, clientReferenceManifest, subresourceIntegrityManifest, serverActionsManifest, serverActions, config, buildId, nextFontManifest, incrementalCacheHandler }: { pagesType: PAGE_TYPES; dev: boolean; page: string; appMod: any; pageMo…
  • added: default function nextErrorBrowserBinaryLoader(this: webpack.LoaderContext<any>): void
  • changed: default function transformSource(this: any): string → default function transformSource(this: webpack.LoaderContext<NextFlightClientEntryLoaderOptions>): string
  • changed: type ClientComponentImports = string[] → type ClientComponentImports = Record<string, Set<string>>
  • changed: type NextFlightClientEntryLoaderOptions = { modules: ClientComponentImports; server: boolean | 'true' | 'false' } → type NextFlightClientEntryLoaderOptions = { modules: string[] | string; server: boolean | 'true' | 'false' }
  • added: type FlightClientEntryModuleItem = { request: string; ids: string[] }
  • removed: function createActionProxy(id: string, bound: null | any[], action: any, originalAction?: any): void
  • added: function getAssumedSourceType(mod: webpack.Module, sourceType: SourceType): SourceType
  • added: function registerServerReference(id: string, action: any): any
  • changed: function nextMetadataImageLoader(this: any, content: Buffer): Promise<string> → function nextMetadataImageLoader(this: webpack.LoaderContext<Options>, content: Buffer): Promise<string>
  • removed: property SWCLoaderOptions.bundleTarget: BundleType
  • removed: property SWCLoaderOptions.hasServerComponents?: boolean
  • removed: property SWCLoaderOptions.isServerLayer: boolean
  • added: property SWCLoaderOptions.bundleLayer?: WebpackLayerName
  • added: property SWCLoaderOptions.esm?: boolean
  • added: property SWCLoaderOptions.serverComponents?: boolean
  • added: property SWCLoaderOptions.transpilePackages?: string[]
  • removed: const NoopLoader: webpack.LoaderDefinitionFunction
  • removed: default NoopLoader
  • removed: function getActions(mod: { resource: string; buildInfo?: any }): undefined | string[]
  • added: function getActionsFromBuildInfo(mod: { resource: string; buildInfo?: any }): undefined | string[]
  • added: function getLoaderModuleNamedExports(resourcePath: string, context: webpack.LoaderContext<any>): Promise<string[]>
  • added: function isActionServerLayerEntryModule(mod: { resource: string; buildInfo?: any }): boolean
  • added: class CssChunkingPlugin
  • added: constructor CssChunkingPlugin(strict: boolean)
  • added: method CssChunkingPlugin.apply(compiler: Compiler): void
  • removed: property DefineEnvPluginOptions.allowedRevalidateHeaderKeys: string[] | undefined
  • removed: property DefineEnvPluginOptions.previewModeId: string | undefined
  • changed: function getDefineEnv({ allowedRevalidateHeaderKeys, clientRouterFilters, config, dev, distDir, fetchCacheKeyPrefix, hasRewrites, isClient, isEdgeServer, isNodeOrEdgeCompilation, isNodeServer, middlewareMatchers, previewModeId }: DefineEnvPluginOptions): { 'process.env.__NEXT_EXPERIMENTAL_REACT'?: string | undefined; 'process.env.TURBOPACK': string; 'global.GENTLY'?: string | undefined; 'process.… → function getDefineEnv({ isTurbopack, clientRouterFilters, config, dev, distDir, fetchCacheKeyPrefix, hasRewrites, isClient, isEdgeServer, isNodeOrEdgeCompilation, isNodeServer, middlewareMatchers }: DefineEnvPluginOptions): SerializedDefineEnv
  • changed: property DefineEnvPluginOptions.clientRouterFilters?: { staticFilter: ReturnType<import('../../../shared/lib/bloom-filter').BloomFilter['export']>; dynamicFilter: ReturnType<import('../../../shared/lib/bloom-filter').BloomFilter['export']> } → property DefineEnvPluginOptions.clientRouterFilters?: { staticFilter: BloomFilter; dynamicFilter: BloomFilter }
  • added: property DefineEnvPluginOptions.isTurbopack: boolean
  • removed: property FlightClientEntryPlugin.serverActionsBodySizeLimit?: SizeLimit
  • removed: property FlightClientEntryPlugin.useServerActions: boolean
  • changed: method FlightClientEntryPlugin.collectClientActionsFromDependencies({ compilation, dependencies }: { compilation: any; dependencies: ReturnType<typeof webpack.EntryPlugin.createDependency>[] }): Map<string, string[]> → method FlightClientEntryPlugin.collectClientActionsFromDependencies({ compilation, dependencies }: { compilation: webpack.Compilation; dependencies: ReturnType<typeof webpack.EntryPlugin.createDependency>[] }): Map<string, string[]>
  • changed: method FlightClientEntryPlugin.collectComponentInfoFromServerEntryDependency({ entryRequest, compilation, resolvedModule }: { entryRequest: string; compilation: any; resolvedModule: any }): { cssImports: CssImports; clientComponentImports: ClientComponentImports; actionImports: [string, string[]][] } → method FlightClientEntryPlugin.collectComponentInfoFromServerEntryDependency({ entryRequest, compilation, resolvedModule }: { entryRequest: string; compilation: webpack.Compilation; resolvedModule: any }): { cssImports: CssImports; clientComponentImports: ClientComponentImports; actionImports: [string, string[]][] }
  • changed: method FlightClientEntryPlugin.createActionAssets(compilation: webpack.Compilation, assets: webpack.Compilation['assets']): void → method FlightClientEntryPlugin.createActionAssets(compilation: webpack.Compilation, assets: webpack.Compilation['assets']): Promise<void>
  • changed: method FlightClientEntryPlugin.createClientEntries(compiler: webpack.Compiler, compilation: any): Promise<void> → method FlightClientEntryPlugin.createClientEntries(compiler: webpack.Compiler, compilation: webpack.Compilation): Promise<void>
  • changed: type ActionManifest = { [key in 'node' | 'edge']: { [actionId: string]: { workers: { [name: string]: string | number }; layer: { [name: string]: string } } } } → type ActionManifest = { encryptionKey: string; node: Actions; edge: Actions }
  • added: property FlightClientEntryPlugin.encryptionKey: string
  • removed: property ClientReferenceManifestPlugin.ASYNC_CLIENT_MODULES: Set<string>
  • changed: type ClientReferenceManifest = { moduleLoading: { prefix: string; crossOrigin: string | null }; clientModules: ManifestNode; ssrModuleMapping: { [moduleId: string]: ManifestNode }; edgeSSRMo… → type ClientReferenceManifest = { readonly moduleLoading: { prefix: string; crossOrigin: string | null }; clientModules: ManifestNode; ssrModuleMapping: { [moduleId: string]: ManifestNode };…
  • changed: constructor JsConfigPathsPlugin(paths: Paths, resolvedBaseUrl: string) → constructor JsConfigPathsPlugin(paths: Paths, resolvedBaseUrl: ResolvedBaseUrl)
  • changed: property JsConfigPathsPlugin.resolvedBaseUrl: string → property JsConfigPathsPlugin.resolvedBaseUrl: ResolvedBaseUrl
  • changed: constructor MiddlewarePlugin({ dev, sriEnabled }: { dev: boolean; sriEnabled: boolean }) → constructor MiddlewarePlugin({ dev, sriEnabled, rewrites, edgeEnvironments }: Options)
  • changed: property MiddlewareManifest.version: 2 → property MiddlewareManifest.version: 3
  • added: property EdgeFunctionDefinition.env: Record<string, string>
  • changed: constructor TraceEntryPointsPlugin({ rootDir, appDir, pagesDir, appDirEnabled, traceIgnores, esmExternals, outputFileTracingRoot, turbotrace }: { rootDir: string; appDir: string | undefined; pagesDir: string | undefined; appDirEnabled?: boolean; traceIgnores?: string[]; outputFileTracingRoot?: string; esmExternals?: NextConfigComplete['experimental']['esmExternals']; turbotrace?: NextConfigComple… → constructor TraceEntryPointsPlugin({ rootDir, appDir, pagesDir, optOutBundlingPackages, appDirEnabled, traceIgnores, esmExternals, outputFileTracingRoot, turbotrace }: { rootDir: string; appDir: string | undefined; pagesDir: string | undefined; optOutBundlingPackages: string[]; appDirEnabled?: boolean; traceIgnores?: string[]; outputFileTracingRoot?: string; esmExternals?: NextConfigComplete['exp…
  • removed: property NextJsRequireCacheHotReloader.hasServerComponents: boolean
  • changed: constructor NextJsRequireCacheHotReloader(opts: { hasServerComponents: boolean }) → constructor NextJsRequireCacheHotReloader(opts: { serverComponents: boolean })
  • added: property NextJsRequireCacheHotReloader.serverComponents: boolean
  • added: class OptionalPeerDependencyResolverPlugin
  • added: method OptionalPeerDependencyResolverPlugin.apply(resolver: Resolver): void
  • changed: constructor ProfilingPlugin({ runWebpackSpan }: { runWebpackSpan: Span }) → constructor ProfilingPlugin({ runWebpackSpan, rootDir }: { runWebpackSpan: Span; rootDir: string })
  • added: property ProfilingPlugin.rootDir: string
  • changed: constructor ReactLoadablePlugin(opts: { filename: string; pagesDir?: string; runtimeAsset?: string; dev: boolean }) → constructor ReactLoadablePlugin(opts: { filename: string; pagesDir?: string; appDir?: string; runtimeAsset?: string; dev: boolean })
  • added: type TelemetryPluginState = { usages: ReturnType<TelemetryPlugin['usages']>; packagesUsedInServerSideProps: ReturnType<TelemetryPlugin['packagesUsedInServerSideProps']> }
  • added: function getDynamicCodeEvaluationError(message: string, module: webpack.NormalModule, compilation: webpack.Compilation, compiler: webpack.Compiler): SimpleWebpackError
  • changed: function traverseModules(compilation: webpack.Compilation, callback: (mod: any, chunk: webpack.Chunk, chunkGroup: (typeof compilation.chunkGroups)[0], modId: string | number) => any, filterChunkGroup?: (chunkGroup: webpack.ChunkGroup) => boolean): void → function traverseModules(compilation: Compilation, callback: (mod: any, chunk: Chunk, chunkGroup: (typeof compilation.chunkGroups)[0], modId: string | null) => any, filterChunkGroup?: (chunkGroup: ChunkGroup) => boolean): void
  • added: function formatBarrelOptimizedResource(resource: string, matchResource: string): string
  • added: function getModuleReferencesInOrder(module: Module, moduleGraph: ModuleGraph): ModuleGraphConnection[]
  • removed: export * from './utils'
  • added: export { getDefinedNamedExports } from './utils'
  • added: export { hasCustomGetInitialProps } from './utils'
  • added: export { isPageStatic } from './utils'
  • changed: const nextBuild: CliCommand → const nextBuild: (options: NextBuildOptions, directory?: string) => Promise<void>
  • removed: const validArgs: arg.Spec
  • changed: const nextDev: CliCommand → const nextDev: (options: NextDevOptions, portSource: PortSource, directory?: string) => Promise<void>
  • removed: const validArgs: arg.Spec
  • changed: const nextExport: CliCommand → const nextExport: () => never
  • removed: const validArgs: arg.Spec
  • changed: const nextInfo: CliCommand → const nextInfo: (options: NextInfoOptions) => Promise<void>
  • removed: const validArgs: arg.Spec
  • changed: const nextLint: CliCommand → const nextLint: (options: NextLintOptions, directory?: string) => Promise<void>
  • removed: const validArgs: arg.Spec
  • changed: const nextStart: CliCommand → const nextStart: (options: NextStartOptions, directory?: string) => Promise<void>
  • removed: const validArgs: arg.Spec
  • changed: const nextTelemetry: CliCommand → const nextTelemetry: (options: NextTelemetryOptions, arg: string) => void
  • removed: const validArgs: arg.Spec
  • added: const actionAsyncStorage: ActionAsyncStorage
  • removed: const actionAsyncStorage: ActionAsyncStorage
  • added: export { actionAsyncStorage }
  • changed: default function AppRouter(props: AppRouterProps & { globalErrorComponent: ErrorComponent }): React.JSX.Element → default function AppRouter(props: AppRouterProps & { globalErrorComponent: ErrorComponent }): import('react/jsx-runtime').JSX.Element
  • added: function createEmptyCacheNode(): CacheNode
  • removed: const NEXT_ROUTER_PREFETCH: 'Next-Router-Prefetch'
  • removed: const RSC: 'RSC'
  • removed: const RSC_VARY_HEADER: 'RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Url'
  • added: const NEXT_DID_POSTPONE_HEADER: 'x-nextjs-postponed'
  • added: const NEXT_ROUTER_PREFETCH_HEADER: 'Next-Router-Prefetch'
  • added: const RSC_HEADER: 'RSC'
  • changed: function bailoutToClientRendering(): boolean | never → function bailoutToClientRendering(reason: string): void | never
  • removed: function clientHookInServerComponentError(hookName: string): void | never
  • added: function ClientPageRoot({ Component, props }: { Component: React.ComponentType<any>; props: { [props: string]: any } }): import('react/jsx-runtime').JSX.Element
  • changed: default function DefaultLayout({ children }: { children: React.ReactNode }): React.JSX.Element → default function DefaultLayout({ children }: { children: React.ReactNode }): import('react/jsx-runtime').JSX.Element
  • changed: function DevRootNotFoundBoundary({ children }: { children: React.ReactNode }): React.JSX.Element → function DevRootNotFoundBoundary({ children }: { children: React.ReactNode }): import('react/jsx-runtime').JSX.Element
  • changed: function ErrorBoundary({ errorComponent, errorStyles, children }: ErrorBoundaryProps & { children: React.ReactNode }): JSX.Element → function ErrorBoundary({ errorComponent, errorStyles, errorScripts, children }: ErrorBoundaryProps & { children: React.ReactNode }): JSX.Element
  • changed: function GlobalError({ error }: { error: any }): React.JSX.Element → function GlobalError({ error }: { error: any }): import('react/jsx-runtime').JSX.Element
  • changed: method ErrorBoundaryHandler.render(): string | number | boolean | React.ReactFragment | React.PromiseLikeOfReactNode | React.JSX.Element | null | undefined → method ErrorBoundaryHandler.render(): React.ReactNode
  • changed: property ErrorBoundaryProps.errorComponent: ErrorComponent → property ErrorBoundaryProps.errorComponent: ErrorComponent | undefined
  • added: property ErrorBoundaryProps.errorScripts?: React.ReactNode | undefined
  • removed: function getRedirectStatusCodeFromError<U extends string>(error: RedirectError<U>): number
  • removed: const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'
  • changed: constructor DynamicServerError(type: string) → constructor DynamicServerError(description: string)
  • added: function isDynamicServerError(err: unknown): err is DynamicServerError
  • added: readonly property DynamicServerError.description: string
  • removed: function createInfinitePromise(): Promise<void>
  • added: function isHydrationError(error: unknown): boolean
  • changed: default function OuterLayoutRouter({ parallelRouterKey, segmentPath, childProp, error, errorStyles, templateStyles, loading, loadingStyles, hasLoading, template, notFound, notFoundStyles, styles }: { parallelRouterKey: string; segmentPath: FlightSegmentPath; childProp: ChildProp; error: ErrorComponent; errorStyles: React.ReactNode | undefined; templateStyles: React.ReactNode | undefined; template: React.… → default function OuterLayoutRouter({ parallelRouterKey, segmentPath, error, errorStyles, errorScripts, templateStyles, templateScripts, template, notFound, notFoundStyles }: { parallelRouterKey: string; segmentPath: FlightSegmentPath; error: ErrorComponent | undefined; errorStyles: React.ReactNode | undefined; errorScripts: React.ReactNode | undefined; templateStyles: React.ReactNode | undefined; templat…
  • removed: class ReadonlyURLSearchParams
  • removed: constructor ReadonlyURLSearchParams(urlSearchParams: URLSearchParams)
  • removed: export { RedirectType } from './redirect'
  • removed: export { ServerInsertedHTMLContext } from '../../shared/lib/server-inserted-html.shared-runtime'
  • removed: export { notFound } from './not-found'
  • removed: export { permanentRedirect } from './redirect'
  • removed: export { redirect } from './redirect'
  • removed: export { useServerInsertedHTML } from '../../shared/lib/server-inserted-html.shared-runtime'
  • removed: method ReadonlyURLSearchParams.append(): void
  • removed: method ReadonlyURLSearchParams.delete(): void
  • removed: method ReadonlyURLSearchParams.set(): void
  • removed: method ReadonlyURLSearchParams.sort(): void
  • removed: method ReadonlyURLSearchParams[Symbol.iterator](): IterableIterator<[string, string]>
  • removed: property ReadonlyURLSearchParams.entries: URLSearchParams['entries']
  • removed: property ReadonlyURLSearchParams.forEach: URLSearchParams['forEach']
  • removed: property ReadonlyURLSearchParams.get: URLSearchParams['get']
  • removed: property ReadonlyURLSearchParams.getAll: URLSearchParams['getAll']
  • removed: property ReadonlyURLSearchParams.has: URLSearchParams['has']
  • removed: property ReadonlyURLSearchParams.keys: URLSearchParams['keys']
  • removed: property ReadonlyURLSearchParams.size: any | URLSearchParams['size']
  • removed: property ReadonlyURLSearchParams.toString: URLSearchParams['toString']
  • removed: property ReadonlyURLSearchParams.values: URLSearchParams['values']
  • removed: property ReadonlyURLSearchParams[INTERNAL_URLSEARCHPARAMS_INSTANCE]: URLSearchParams
  • changed: function useRouter(): import('../../shared/lib/app-router-context.shared-runtime').AppRouterInstance → function useRouter(): AppRouterInstance
  • added: export { ReadonlyURLSearchParams } from './navigation.react-server'
  • added: export { RedirectType } from './navigation.react-server'
  • added: export { ServerInsertedHTMLContext }
  • added: export { notFound } from './navigation.react-server'
  • added: export { permanentRedirect } from './navigation.react-server'
  • added: export { redirect } from './navigation.react-server'
  • added: export { useServerInsertedHTML }
  • added: class ReadonlyURLSearchParams extends URLSearchParams
  • added: export { RedirectType } from './redirect'
  • added: export { notFound } from './not-found'
  • added: export { permanentRedirect } from './redirect'
  • added: export { redirect } from './redirect'
  • added: method ReadonlyURLSearchParams.append(): void
  • added: method ReadonlyURLSearchParams.delete(): void
  • added: method ReadonlyURLSearchParams.set(): void
  • added: method ReadonlyURLSearchParams.sort(): void
  • changed: function isNotFoundError(error: any): error is NotFoundError → function isNotFoundError(error: unknown): error is NotFoundError
  • changed: function NotFoundBoundary({ notFound, notFoundStyles, asNotFound, children }: NotFoundBoundaryProps): React.JSX.Element → function NotFoundBoundary({ notFound, notFoundStyles, asNotFound, children }: NotFoundBoundaryProps): import('react/jsx-runtime').JSX.Element
  • changed: default function NotFound(): React.JSX.Element → default function NotFound(): import('react/jsx-runtime').JSX.Element
  • removed: default function NoopParallelRouteDefault(): void
  • added: const PARALLEL_ROUTE_DEFAULT_PATH = 'next/dist/client/components/parallel-route-default.js'
  • added: default function ParallelRouteDefault(): void
  • changed: method PromiseQueue.bump(promiseFn: ThenableRecord<any> | Promise<any>): void → method PromiseQueue.bump(promiseFn: Promise<any>): void
  • added: default class ReactDevOverlay extends React.PureComponent<{ state: OverlayState; children: React.ReactNode; onReactError: (error: Error) => void }, ReactDevOverlayState>
  • added: method ReactDevOverlay.componentDidCatch(componentErr: Error): void
  • added: method ReactDevOverlay.render(): import('react/jsx-runtime').JSX.Element
  • added: property ReactDevOverlay.state: { reactError: null }
  • added: static method ReactDevOverlay.getDerivedStateFromError(error: Error): ReactDevOverlayState
  • added: default function HotReload({ assetPrefix, children }: { assetPrefix: string; children?: ReactNode }): import('react/jsx-runtime').JSX.Element
  • removed: default function HotReload({ assetPrefix, children }: { assetPrefix: string; children?: ReactNode }): React.JSX.Element
  • removed: class ReactDevOverlay extends React.PureComponent<{ state: OverlayState; children: React.ReactNode; onReactError: (error: Error) => void }, ReactDevOverlayState>
  • removed: default ReactDevOverlay
  • removed: method ReactDevOverlay.componentDidCatch(componentErr: Error): void
  • removed: method ReactDevOverlay.render(): React.JSX.Element
  • removed: property ReactDevOverlay.state: { reactError: null }
  • removed: static method ReactDevOverlay.getDerivedStateFromError(error: Error): ReactDevOverlayState
  • changed: type DialogProps = { children?: React.ReactNode; type: 'error' | 'warning'; 'aria-labelledby': string; 'aria-describedby': string; onClose?: (e: MouseEvent | TouchEvent) => void } → type DialogProps = { children?: React.ReactNode; type: 'error' | 'warning'; 'aria-labelledby': string; 'aria-describedby': string; onClose?: () => void }
  • changed: function EditorLink({ file, isSourceFile, location }: EditorLinkProps): React.JSX.Element → function EditorLink({ file, isSourceFile, location }: EditorLinkProps): import('react/jsx-runtime').JSX.Element
  • changed: type ToastProps = { children?: React.ReactNode; onClick?: (ev: React.MouseEvent<HTMLDivElement, MouseEvent>) => void; className?: string } → type ToastProps = { children?: React.ReactNode; onClick?: () => void; className?: string }
  • changed: function VersionStalenessInfo(props: VersionInfo): React.JSX.Element | null → function VersionStalenessInfo(props: VersionInfo): import('react/jsx-runtime').JSX.Element | null
  • added: function getStaleness({ installed, staleness, expected }: VersionInfo): { text: string; indicatorClass: string; title: string }
  • removed: function getWordsAndWhitespaces(text: string): string[]
  • changed: const HotlinkedText: React.FC<{ text: string }> → const HotlinkedText: React.FC<{ text: string; matcher?: (text: string) => boolean }>
  • removed: const Errors: React.FC<ErrorsProps>
  • changed: type ErrorsProps = { errors: SupportedErrorEvent[]; initialDisplayState: DisplayState; versionInfo?: VersionInfo } → type ErrorsProps = { isAppDir: boolean; errors: SupportedErrorEvent[]; initialDisplayState: DisplayState; versionInfo?: VersionInfo }
  • added: function Errors({ isAppDir, errors, initialDisplayState, versionInfo }: ErrorsProps): import('react/jsx-runtime').JSX.Element | null
  • removed: const RootLayoutError: React.FC<RootLayoutErrorProps>
  • removed: const styles: string
  • removed: type RootLayoutErrorProps = { missingTags: string[] }
  • changed: function ComponentStackFrameRow({ componentStackFrame: { component, file, lineNumber, column } }: { componentStackFrame: ComponentStackFrame }): React.JSX.Element → function ComponentStackFrameRow({ componentStackFrame }: { componentStackFrame: ComponentStackFrame }): import('react/jsx-runtime').JSX.Element
  • removed: function FrameworkIcon({ framework }: { framework: NonNullable<StackFramesGroup['framework']> }): React.JSX.Element
  • changed: function GroupedStackFrames({ groupedStackFrames, all }: { groupedStackFrames: StackFramesGroup[]; all: boolean }): React.JSX.Element → function GroupedStackFrames({ groupedStackFrames, show }: { groupedStackFrames: StackFramesGroup[]; show: boolean }): import('react/jsx-runtime').JSX.Element | undefined
  • added: function PseudoHtmlDiff({ componentStackFrames, firstContent, secondContent, hydrationMismatchType, ...props }: { componentStackFrames: ComponentStackFrame[]; firstContent: string; secondContent: string; hydrationMismatchType: 'tag' | 'text' | 'text-in-tag' } & React.HTMLAttributes<HTMLPreElement>): import('react/jsx-runtime').JSX.Element
  • removed: const RuntimeError: React.FC<RuntimeErrorProps>
  • added: function RuntimeError({ error }: RuntimeErrorProps): import('react/jsx-runtime').JSX.Element
  • added: const RootLayoutMissingTagsError: React.FC<RootLayoutMissingTagsErrorProps>
  • removed: const ACTION_BEFORE_REFRESH = 'before-fast-refresh'
  • removed: const ACTION_BUILD_ERROR = 'build-error'
  • removed: const ACTION_BUILD_OK = 'build-ok'
  • removed: const ACTION_REFRESH = 'fast-refresh'
  • removed: const ACTION_UNHANDLED_ERROR = 'unhandled-error'
  • removed: const ACTION_UNHANDLED_REJECTION = 'unhandled-rejection'
  • removed: const ACTION_VERSION_INFO = 'version-info'
  • removed: const INITIAL_OVERLAY_STATE: OverlayState
  • removed: const errorOverlayReducer: React.Reducer<Readonly<OverlayState>, Readonly<BuildOkAction | BuildErrorAction | BeforeFastRefreshAction | FastRefreshAction | UnhandledErrorAction | Unhandle…
  • removed: interface OverlayState
  • removed: interface UnhandledErrorAction
  • removed: interface UnhandledRejectionAction
  • removed: property OverlayState.buildError: string | null
  • removed: property OverlayState.errors: SupportedErrorEvent[]
  • removed: property OverlayState.nextId: number
  • removed: property OverlayState.notFound: boolean
  • removed: property OverlayState.refreshState: FastRefreshState
  • removed: property OverlayState.rootLayoutMissingTagsError?: { missingTags: string[] }
  • removed: property OverlayState.versionInfo: VersionInfo
  • removed: property UnhandledErrorAction.componentStackFrames?: ComponentStackFrame[]
  • removed: property UnhandledErrorAction.frames: StackFrame[]
  • removed: property UnhandledErrorAction.reason: Error
  • removed: property UnhandledErrorAction.type: typeof ACTION_UNHANDLED_ERROR
  • removed: property UnhandledRejectionAction.frames: StackFrame[]
  • removed: property UnhandledRejectionAction.reason: Error
  • removed: property UnhandledRejectionAction.type: typeof ACTION_UNHANDLED_REJECTION
  • removed: type FastRefreshState = { type: 'idle' } | { type: 'pending'; errors: SupportedErrorEvent[] }
  • added: default function formatWebpackMessages(json: any, verbose?: boolean): any
  • changed: function getSocketUrl(assetPrefix: string): string → function getSocketUrl(assetPrefix: string | undefined): string
  • changed: function getErrorByType(ev: SupportedErrorEvent): Promise<ReadyRuntimeError> → function getErrorByType(ev: SupportedErrorEvent, isAppDir: boolean): Promise<ReadyRuntimeError>
  • changed: function getRawSourceMap(fileContents: string): RawSourceMap | null → function getRawSourceMap(fileContents: string): unknown | null
  • changed: type StackFramesGroup = { framework?: 'next' | 'react'; stackFrames: OriginalStackFrame[] } → type StackFramesGroup = { framework?: SourcePackage | null; stackFrames: OriginalStackFrame[] }
  • removed: let hydrationErrorComponentStack: string | undefined
  • removed: let hydrationErrorWarning: string | undefined
  • added: const getHydrationWarningType: (msg: NullableText) => 'tag' | 'text' | 'text-in-tag'
  • added: const hydrationErrorState: HydrationErrorState
  • added: type HydrationErrorState = { warning?: [string, string, string]; componentStack?: string; serverContent?: string; clientContent?: string }
  • removed: function decorateServerError(error: Error, type: ErrorType): void
  • removed: function getErrorSource(error: Error): 'server' | 'edge-server' | null
  • changed: function getServerError(error: Error, type: ErrorType): Error → function getServerError(error: Error, type: ErrorSourceType): Error
  • changed: type ComponentStackFrame = { component: string; file?: string; lineNumber?: number; column?: number } → type ComponentStackFrame = { canOpenInEditor: boolean; component: string; file?: string; lineNumber?: number; column?: number }
  • added: const RuntimeErrorHandler: { hadRuntimeError: boolean }
  • removed: function getOriginalStackFrame(source: StackFrame, type: 'server' | 'edge-server' | null, errorMessage: string): Promise<OriginalStackFrame>
  • removed: type OriginalStackFrame = { error: true; reason: string; external: false; expanded: false; sourceStackFrame: StackFrame; originalStackFrame: null; originalCodeFrame: null; sourcePackage…
  • changed: function getOriginalStackFrames(frames: StackFrame[], type: 'server' | 'edge-server' | null, errorMessage: string): Promise<OriginalStackFrame[]> → function getOriginalStackFrames(frames: StackFrame[], type: 'server' | 'edge-server' | null, isAppDir: boolean, errorMessage: string): Promise<OriginalStackFrame[]>
  • added: interface OriginalStackFrame extends OriginalStackFrameResponse
  • added: property OriginalStackFrame.error: boolean
  • added: property OriginalStackFrame.expanded: boolean
  • added: property OriginalStackFrame.external: boolean
  • added: property OriginalStackFrame.reason: string | null
  • added: property OriginalStackFrame.sourceStackFrame: StackFrame
  • removed: const RuntimeErrorHandler: { hadRuntimeError: boolean }
  • changed: function useTurbopack(sendMessage: ReturnType<typeof useSendMessage>): (msg: HMR_ACTION_TYPES) => boolean → function useTurbopack(sendMessage: ReturnType<typeof useSendMessage>, onUpdateError: (err: unknown) => void): (msg: TurbopackMsgToBrowser) => void
  • changed: const CloseIcon: () => React.JSX.Element → const CloseIcon: () => import('react/jsx-runtime').JSX.Element
  • added: function CollapseIcon({ collapsed }?: { collapsed?: boolean }): import('react/jsx-runtime').JSX.Element
  • added: function FrameworkIcon({ framework }: { framework: NonNullable<StackFramesGroup['framework']> }): import('react/jsx-runtime').JSX.Element
  • changed: function Base(): React.JSX.Element → function Base(): import('react/jsx-runtime').JSX.Element
  • changed: function ComponentStyles(): React.JSX.Element → function ComponentStyles(): import('react/jsx-runtime').JSX.Element
  • changed: function CssReset(): React.JSX.Element → function CssReset(): import('react/jsx-runtime').JSX.Element
  • added: class ErrorBoundary extends React.PureComponent<ErrorBoundaryProps, ErrorBoundaryState>
  • added: method ErrorBoundary.componentDidCatch(error: Error, errorInfo?: { componentStack?: string | null }): void
  • added: method ErrorBoundary.render(): React.ReactNode
  • added: property ErrorBoundary.state: { error: null }
  • added: static method ErrorBoundary.getDerivedStateFromError(error: Error): { error: Error }
  • added: default function ReactDevOverlay({ children, preventDisplay, globalOverlay }: ReactDevOverlayProps): import('react/jsx-runtime').JSX.Element
  • added: function emit(ev: BusEvent): void
  • added: function off(fn: BusEventHandler): boolean
  • added: function on(fn: BusEventHandler): boolean
  • added: type BusEventHandler = (ev: BusEvent) => void
  • added: export { default as ReactDevOverlay } from './ReactDevOverlay'
  • added: export { getErrorByType } from '../internal/helpers/getErrorByType'
  • added: export { getServerError } from '../internal/helpers/nodeStackFrames'
  • added: function onBeforeRefresh(): void
  • added: function onBuildError(message: string): void
  • added: function onBuildOk(): void
  • added: function onRefresh(): void
  • added: function onVersionInfo(versionInfo: VersionInfo): void
  • added: function register(): void
  • added: function unregister(): void
  • added: declare global
  • added: default function connect(mode: 'webpack' | 'turbopack'): { subscribeToHmrEvent(handler: any): void; onUnrecoverableError(): void; addTurbopackMessageListener(cb: (msg: TurbopackMsgToBrowser) => void): void; sendTurbopackMessage(msg: string): void; handleUpdateError(err: unknown): void }
  • added: function performFullReload(err: any): void
  • added: function addMessageListener(callback: ActionCallback): void
  • added: function connectHMR(options: { path: string; assetPrefix: string }): void
  • added: function sendMessage(data: string): void
  • added: export { getServerError } from '../internal/helpers/nodeStackFrames'
  • added: export { parseStack } from '../internal/helpers/parseStack'
  • added: function createOriginalStackFrame({ source, moduleId, modulePath, rootDirectory, frame, errorMessage, compilation }: { source: any; moduleId?: string; modulePath?: string; rootDirectory: string; frame: StackFrame; errorMessage?: string; compilation?: webpack.Compilation }): Promise<OriginalStackFrameResponse | null>
  • added: function getOverlayMiddleware(options: { rootDirectory: string; stats(): webpack.Stats | null; serverStats(): webpack.Stats | null; edgeServerStats(): webpack.Stats | null }): (req: IncomingMessage, res: ServerResponse, next: Function) => Promise<any>
  • added: function getSourceById(isFile: boolean, id: string, compilation?: webpack.Compilation): Promise<Source>
  • added: function batchedTraceSource(project: Project, frame: TurbopackStackFrame): Promise<{ frame: StackFrame; source: string | null } | undefined>
  • added: function createOriginalStackFrame(project: Project, frame: TurbopackStackFrame): Promise<OriginalStackFrameResponse | null>
  • added: function getOverlayMiddleware(project: Project): (req: IncomingMessage, res: ServerResponse) => Promise<void | ServerResponse<IncomingMessage>>
  • added: function badRequest(res: ServerResponse): void
  • added: function findSourcePackage({ file, methodName }: Partial<{ file: string | null; methodName: string | null }>): SourcePackage | undefined
  • added: function getOriginalCodeFrame(frame: StackFrame, source: string | null): string | null | undefined
  • added: function internalServerError(res: ServerResponse, e?: any): void
  • added: function json(res: ServerResponse, data: any): void
  • added: function noContent(res: ServerResponse): void
  • added: interface OriginalStackFrameResponse
  • added: property OriginalStackFrameResponse.originalCodeFrame?: string | null
  • added: property OriginalStackFrameResponse.originalStackFrame?: StackFrame | null
  • added: property OriginalStackFrameResponse.sourcePackage?: SourcePackage | null
  • added: type SourcePackage = 'react' | 'next'
  • added: const ACTION_BEFORE_REFRESH = 'before-fast-refresh'
  • added: const ACTION_BUILD_ERROR = 'build-error'
  • added: const ACTION_BUILD_OK = 'build-ok'
  • added: const ACTION_REFRESH = 'fast-refresh'
  • added: const ACTION_UNHANDLED_ERROR = 'unhandled-error'
  • added: const ACTION_UNHANDLED_REJECTION = 'unhandled-rejection'
  • added: const ACTION_VERSION_INFO = 'version-info'
  • added: const INITIAL_OVERLAY_STATE: OverlayState
  • added: const REACT_REFRESH_FULL_RELOAD_FROM_ERROR = '[Fast Refresh] performing full reload because your application had an unrecoverable error'
  • added: function useErrorOverlayReducer(): [OverlayState, import('react').Dispatch<BusEvent>]
  • added: interface OverlayState
  • added: interface UnhandledErrorAction
  • added: interface UnhandledRejectionAction
  • added: property OverlayState.buildError: string | null
  • added: property OverlayState.errors: SupportedErrorEvent[]
  • added: property OverlayState.nextId: number
  • added: property OverlayState.notFound: boolean
  • added: property OverlayState.refreshState: FastRefreshState
  • added: property OverlayState.rootLayoutMissingTags: typeof window.__next_root_layout_missing_tags
  • added: property OverlayState.versionInfo: VersionInfo
  • added: property UnhandledErrorAction.componentStackFrames?: ComponentStackFrame[]
  • added: property UnhandledErrorAction.frames: StackFrame[]
  • added: property UnhandledErrorAction.reason: Error
  • added: property UnhandledErrorAction.type: typeof ACTION_UNHANDLED_ERROR
  • added: property UnhandledErrorAction.warning?: [string, string, string]
  • added: property UnhandledRejectionAction.frames: StackFrame[]
  • added: property UnhandledRejectionAction.reason: Error
  • added: property UnhandledRejectionAction.type: typeof ACTION_UNHANDLED_REJECTION
  • added: type BusEvent = BuildOkAction | BuildErrorAction | BeforeFastRefreshAction | FastRefreshAction | UnhandledErrorAction | UnhandledRejectionAction | VersionInfoAction
  • changed: function getRedirectError(url: string, type: RedirectType, permanent?: boolean): RedirectError<typeof url> → function getRedirectError(url: string, type: RedirectType, statusCode?: RedirectStatusCode): RedirectError<typeof url>
  • changed: function isRedirectError<U extends string>(error: any): error is RedirectError<U> → function isRedirectError<U extends string>(error: unknown): error is RedirectError<U>
  • changed: type RedirectError<U extends string> = Error & { digest: `${typeof REDIRECT_ERROR_CODE};${RedirectType};${U};${boolean}`; mutableCookies: ResponseCookies } → type RedirectError<U extends string> = Error & { digest: `${typeof REDIRECT_ERROR_CODE};${RedirectType};${U};${RedirectStatusCode};`; mutableCookies: ResponseCookies }
  • added: function getRedirectStatusCodeFromError<U extends string>(error: RedirectError<U>): number
  • changed: function RedirectBoundary({ children }: { children: React.ReactNode }): React.JSX.Element → function RedirectBoundary({ children }: { children: React.ReactNode }): import('react/jsx-runtime').JSX.Element
  • changed: method RedirectErrorBoundary.render(): string | number | boolean | React.ReactFragment | React.PromiseLikeOfReactNode | React.JSX.Element | null | undefined → method RedirectErrorBoundary.render(): React.ReactNode
  • added: enum RedirectStatusCode
  • added: member RedirectStatusCode.PermanentRedirect = 308
  • added: member RedirectStatusCode.SeeOther = 303
  • added: member RedirectStatusCode.TemporaryRedirect = 307
  • added: const requestAsyncStorage: RequestAsyncStorage
  • removed: const requestAsyncStorage: RequestAsyncStorage
  • added: export { requestAsyncStorage }
  • added: function getExpectedRequestStore(callingExpression: string): RequestStore
  • added: readonly property RequestStore.assetPrefix: string
  • added: readonly property RequestStore.reactLoadableManifest: DeepReadonly<Record<string, { files: string[] }>>
  • changed: function applyFlightData(existingCache: CacheNode, cache: CacheNode, flightDataPath: FlightDataPath, wasPrefetched?: boolean): boolean → function applyFlightData(existingCache: CacheNode, cache: CacheNode, flightDataPath: FlightDataPath, prefetchEntry?: PrefetchCacheEntry): boolean
  • changed: function applyRouterStatePatchToTree(flightSegmentPath: FlightSegmentPath, flightRouterState: FlightRouterState, treePatch: FlightRouterState): FlightRouterState | null → function applyRouterStatePatchToTree(flightSegmentPath: FlightSegmentPath, flightRouterState: FlightRouterState, treePatch: FlightRouterState, path: string): FlightRouterState | null
  • added: function clearCacheNodeDataForSegmentPath(newCache: CacheNode, existingCache: CacheNode, flightSegmentPath: FlightSegmentPath): void
  • removed: property InitialRouterStateParameters.children: ReactNode
  • removed: property InitialRouterStateParameters.initialCanonicalUrl: string
  • removed: property InitialRouterStateParameters.isServer: boolean
  • changed: function createInitialRouterState({ buildId, initialTree, children, initialCanonicalUrl, initialParallelRoutes, isServer, location, initialHead }: InitialRouterStateParameters): { buildId: string; tree: FlightRouterState; cache: { status: CacheStates.READY; data: null; head?: ReactNode; subTreeData: ReactNode; parallelRoutes: Map<string, import('../../../shared/lib/app-router-context.shared-runti… → function createInitialRouterState({ buildId, initialTree, initialSeedData, urlParts, initialParallelRoutes, location, initialHead, couldBeIntercepted }: InitialRouterStateParameters): { buildId: string; tree: FlightRouterState; cache: import('../../../shared/lib/app-router-context.shared-runtime').ReadyCacheNode; prefetchCache: Map<string, PrefetchCacheEntry>; pushRef: { pendingPush: boolean; mpa…
  • added: property InitialRouterStateParameters.couldBeIntercepted?: boolean
  • added: property InitialRouterStateParameters.initialSeedData: CacheNodeSeedData
  • added: property InitialRouterStateParameters.urlParts: string[]
  • removed: function createOptimisticTree(segments: string[], flightRouterState: FlightRouterState | null, parentRefetch: boolean): FlightRouterState
  • removed: function createRecordFromThenable<T>(promise: PromiseLike<T>): ThenableRecord<T>
  • changed: type FetchServerResponseResult = [flightData: FlightData, canonicalUrlOverride: URL | undefined] → type FetchServerResponseResult = [flightData: FlightData, canonicalUrlOverride: URL | undefined, postponed?: boolean, intercepted?: boolean]
  • removed: function fillCacheWithDataProperty(newCache: CacheNode, existingCache: CacheNode, flightSegmentPath: FlightSegmentPath, fetchResponse: () => ThenableRecord<FetchServerResponseResult>, bailOnParallelRoutes?: boolean): { bailOptimistic: boolean } | undefined
  • changed: function fillCacheWithNewSubTreeData(newCache: CacheNode, existingCache: CacheNode, flightDataPath: FlightDataPath, wasPrefetched?: boolean): void → function fillCacheWithNewSubTreeData(newCache: CacheNode, existingCache: CacheNode, flightDataPath: FlightDataPath, prefetchEntry?: PrefetchCacheEntry): void
  • changed: function fillLazyItemsTillLeafWithHead(newCache: CacheNode, existingCache: CacheNode | undefined, routerState: FlightRouterState, head: React.ReactNode, wasPrefetched?: boolean): void → function fillLazyItemsTillLeafWithHead(newCache: CacheNode, existingCache: CacheNode | undefined, routerState: FlightRouterState, cacheNodeSeedData: CacheNodeSeedData | null, head: React.ReactNode, prefetchEntry?: PrefetchCacheEntry): void
  • removed: enum PrefetchCacheEntryStatus
  • removed: function getPrefetchEntryCacheStatus({ kind, prefetchTime, lastUsedTime }: PrefetchCacheEntry): PrefetchCacheEntryStatus
  • removed: member PrefetchCacheEntryStatus.expired = 'expired'
  • removed: member PrefetchCacheEntryStatus.fresh = 'fresh'
  • removed: member PrefetchCacheEntryStatus.reusable = 'reusable'
  • removed: member PrefetchCacheEntryStatus.stale = 'stale'
  • added: function handleSegmentMismatch(state: ReadonlyReducerState, action: ReducerActions, treePatch: FlightRouterState): import('./router-reducer-types').ReducerState
  • added: function abortTask(task: Task, error: any): void
  • added: function listenForDynamicRequest(task: Task, responsePromise: Promise<FetchServerResponseResult>): void
  • added: function updateCacheNodeOnNavigation(oldCacheNode: CacheNode, oldRouterState: FlightRouterState, newRouterState: FlightRouterState, prefetchData: CacheNodeSeedData, prefetchHead: React.ReactNode): Task | null
  • added: function updateCacheNodeOnPopstateRestoration(oldCacheNode: CacheNode, routerState: FlightRouterState): { lazyData: null; rsc: import('react').ReactNode; head: import('react').ReactNode; prefetchHead: import('react').ReactNode; prefetchRsc: import('react').ReactNode; loading: import('../../../shared/lib/app-router-context.shared-runtime').LoadingModuleData; parallelRoutes: Map<string, ChildSegmen…
  • added: function createPrefetchCacheEntryForInitialLoad({ nextUrl, tree, prefetchCache, url, kind, data }: Pick<ReadonlyReducerState, 'nextUrl' | 'tree' | 'prefetchCache'> & { url: URL; kind: PrefetchKind; data: FetchServerResponseResult }): { treeAtTimeOfPrefetch: import('../../../server/app-render/types').FlightRouterState; data: Promise<FetchServerResponseResult>; kind: PrefetchKind; prefetchTime: num…
  • added: function getOrCreatePrefetchCacheEntry({ url, nextUrl, tree, buildId, prefetchCache, kind }: Pick<ReadonlyReducerState, 'nextUrl' | 'prefetchCache' | 'tree' | 'buildId'> & { url: URL; kind?: PrefetchKind }): PrefetchCacheEntry
  • added: function prunePrefetchCache(prefetchCache: ReadonlyReducerState['prefetchCache']): void
  • removed: function readRecordValue<T>(thenable: ThenableRecord<T>): T
  • changed: function findHeadInCache(cache: CacheNode, parallelRoutes: FlightRouterState[1]): React.ReactNode → function findHeadInCache(cache: CacheNode, parallelRoutes: FlightRouterState[1]): [CacheNode, string] | null
  • added: function hasInterceptionRouteInCurrentTree([segment, parallelRoutes]: FlightRouterState): boolean
  • removed: function navigateReducer(state: ReadonlyReducerState, action: NavigateAction): ReducerState
  • changed: function handleExternalUrl(state: ReadonlyReducerState, mutable: Mutable, url: string, pendingPush: boolean): import('../router-reducer-types').AppRouterState → function handleExternalUrl(state: ReadonlyReducerState, mutable: Mutable, url: string, pendingPush: boolean): ReducerState
  • added: const navigateReducer: typeof navigateReducer_PPR
  • removed: function prunePrefetchCache(prefetchCache: ReducerState['prefetchCache']): void
  • added: function addRefreshMarkerToActiveParallelSegments(tree: FlightRouterState, path: string): void
  • added: function refreshInactiveParallelSegments(options: RefreshInactiveParallelSegments): Promise<void>
  • removed: property FastRefreshAction.cache: CacheNode
  • removed: property FastRefreshAction.mutable: Mutable
  • removed: property Mutable.globalMutable: { pendingNavigatePath?: string; pendingMpaPath?: string; refresh: () => void }
  • removed: property Mutable.previousTree?: FlightRouterState
  • removed: property NavigateAction.cache: CacheNode
  • removed: property NavigateAction.forceOptimisticNavigation: boolean
  • removed: property NavigateAction.mutable: Mutable
  • removed: property RefreshAction.cache: CacheNode
  • removed: property RefreshAction.mutable: Mutable
  • removed: property ServerActionAction.cache: CacheNode
  • removed: property ServerActionAction.mutable: ServerActionMutable
  • removed: property ServerActionMutable.actionResultResolved?: boolean
  • removed: property ServerPatchAction.cache: CacheNode
  • removed: property ServerPatchAction.flightData: FlightData
  • removed: property ServerPatchAction.mutable: Mutable
  • removed: property ServerPatchAction.overrideCanonicalUrl: URL | undefined
  • removed: type ThenableRecord<T> = PendingThenable<T> | RejectedThenable<T> | FulfilledThenable<T>
  • changed: property RestoreAction.tree: FlightRouterState → property RestoreAction.tree: FlightRouterState | undefined
  • changed: property ServerActionMutable.inFlightServerAction?: ThenableRecord<any> | null → property ServerActionMutable.inFlightServerAction?: Promise<any> | null
  • changed: type PrefetchCacheEntry = { treeAtTimeOfPrefetch: FlightRouterState; data: ThenableRecord<FetchServerResponseResult> | null; kind: PrefetchKind; prefetchTime: number; lastUsedTime: numb… → type PrefetchCacheEntry = { treeAtTimeOfPrefetch: FlightRouterState; data: Promise<FetchServerResponseResult>; kind: PrefetchKind; prefetchTime: number; lastUsedTime: number | null; key…
  • changed: type ReducerState = AppRouterState → type ReducerState = Promise<AppRouterState> | AppRouterState
  • changed: type RouterChangeByServerResponse = (previousTree: FlightRouterState, flightData: FlightData, overrideCanonicalUrl: URL | undefined) => void → type RouterChangeByServerResponse = ({ previousTree, serverResponse }: { previousTree: FlightRouterState; serverResponse: FetchServerResponseResult }) => void
  • changed: type RouterNavigate = (href: string, navigateType: 'push' | 'replace', forceOptimisticNavigation: boolean, shouldScroll: boolean) => void → type RouterNavigate = (href: string, navigateType: 'push' | 'replace', shouldScroll: boolean) => void
  • added: enum PrefetchCacheEntryStatus
  • added: function isThenable(value: any): value is Promise<AppRouterState>
  • added: interface PushRef
  • added: member PrefetchCacheEntryStatus.expired = 'expired'
  • added: member PrefetchCacheEntryStatus.fresh = 'fresh'
  • added: member PrefetchCacheEntryStatus.reusable = 'reusable'
  • added: member PrefetchCacheEntryStatus.stale = 'stale'
  • added: property Mutable.preserveCustomHistoryState?: boolean
  • added: property PushRef.mpaNavigation: boolean
  • added: property PushRef.pendingPush: boolean
  • added: property PushRef.preserveCustomHistoryState: boolean
  • added: property ServerPatchAction.serverResponse: FetchServerResponseResult
  • added: function createDynamicallyTrackedSearchParams(searchParams: ParsedUrlQuery): ParsedUrlQuery
  • added: function createUntrackedSearchParams(searchParams: ParsedUrlQuery): ParsedUrlQuery
  • removed: function createSearchParamsBailoutProxy(): {}
  • added: const staticGenerationAsyncStorage: StaticGenerationAsyncStorage
  • removed: const staticGenerationAsyncStorage: StaticGenerationAsyncStorage
  • removed: property StaticGenerationStore.staticPrefetchBailout?: boolean
  • changed: property StaticGenerationStore.pendingRevalidates?: Promise<any>[] → property StaticGenerationStore.pendingRevalidates?: Record<string, Promise<any>>
  • changed: property StaticGenerationStore.revalidate?: false | number → property StaticGenerationStore.revalidate?: Revalidate
  • added: export { staticGenerationAsyncStorage }
  • added: property StaticGenerationStore.isUnstableNoStore?: boolean
  • added: property StaticGenerationStore.prerenderState: null | PrerenderState
  • added: property StaticGenerationStore.requestEndedState?: { ended?: boolean }
  • added: readonly property StaticGenerationStore.isUnstableCacheCallback?: boolean
  • removed: const staticGenerationBailout: StaticGenerationBailout
  • removed: type StaticGenerationBailout = (reason: string, opts?: BailoutOpts) => boolean | never
  • added: class StaticGenBailoutError extends Error
  • added: function isStaticGenBailoutError(error: unknown): error is StaticGenBailoutError
  • added: readonly property StaticGenBailoutError.code = 'NEXT_STATIC_GEN_BAILOUT'
  • removed: default function StaticGenerationSearchParamsBailoutProvider({ Component, propsForComponent, isStaticGeneration }: { Component: React.ComponentType<any>; propsForComponent: any; isStaticGeneration: boolean }): React.JSX.Element
  • added: const unresolvedThenable: { then: () => void }
  • added: function useUnwrapState(state: ReducerState): AppRouterState
  • added: interface ReduxDevToolsInstance
  • added: method ReduxDevToolsInstance.init(initialState: any): void
  • added: method ReduxDevToolsInstance.send(action: any, state: any): void
  • added: type ReduxDevtoolsSyncFn = (state: AppRouterState) => void
  • removed: default function formatWebpackMessages(json: any, verbose?: boolean): any
  • removed: declare global
  • removed: default function connect(mode: 'webpack' | 'turbopack'): { subscribeToHmrEvent(handler: any): void; onUnrecoverableError(): void }
  • removed: function addMessageListener(callback: ActionCallback): void
  • removed: function connectHMR(options: { path: string; assetPrefix: string }): void
  • removed: function sendMessage(data: string): void
  • added: export { addMessageListener } from '../../components/react-dev-overlay/pages/websocket'
  • changed: const _default: (mode: 'webpack' | 'turbopack') => { subscribeToHmrEvent(handler: any): void; onUnrecoverableError(): void } → const _default: (mode: 'webpack' | 'turbopack') => { subscribeToHmrEvent(handler: any): void; onUnrecoverableError(): void; addTurbopackMessageListener(cb: (msg: import('../..…
  • added: function prepareFlightRouterStateForRequest(flightRouterState: FlightRouterState, isHmrRefresh?: boolean): string
  • changed: default function Image({ src, sizes, unoptimized, priority, loading, lazyRoot, lazyBoundary, className, quality, width, height, style, objectFit, objectPosition, onLoadingComplete, placeholder, blurDataURL, ...all }: ImageProps): React.JSX.Element → default function Image({ src, sizes, unoptimized, priority, loading, lazyRoot, lazyBoundary, className, quality, width, height, style, objectFit, objectPosition, onLoadingComplete, placeholder, blurDataURL, ...all }: ImageProps): import('react/jsx-runtime').JSX.Element
  • changed: default function onRecoverableError(err: any): void → default function onRecoverableError(err: unknown): void
  • changed: const RouteAnnouncer: () => React.JSX.Element → const RouteAnnouncer: () => import('react/jsx-runtime').JSX.Element
  • changed: interface CookieListItem extends Pick<CookieSerializeOptions, 'domain' | 'path' | 'secure' | 'sameSite'> → interface CookieListItem extends Pick<CookieSerializeOptions, 'domain' | 'path' | 'secure' | 'sameSite' | 'partitioned'>
  • removed: const TextDecoder: typeof TextDecoder
  • removed: const TextEncoder: typeof TextEncoder
  • removed: const atob: (encoded: string) => string
  • removed: const btoa: (str: string) => string
  • removed: export { TextDecoder } from './encoding'
  • removed: export { TextEncoder } from './encoding'
  • removed: export { atob } from './encoding'
  • removed: export { btoa } from './encoding'
  • added: const TextDecoder: typeof TextDecoder
  • added: const TextEncoder: typeof TextEncoder
  • added: const atob: typeof atob
  • added: const btoa: typeof btoa
  • added: const performance: typeof performance
  • changed: const setInterval: typeof Number → const setInterval: (callback: () => void, ms?: number) => number
  • changed: const setTimeout: typeof Number → const setTimeout: (callback: () => void, ms?: number) => number
  • changed: function getFallbackFontOverrideMetrics(fontFamily: string): { fallbackFont: any; ascentOverride: string; descentOverride: string; lineGapOverride: string; sizeAdjust: string } | undefined → function getFallbackFontOverrideMetrics(fontFamily: string): { fallbackFont: string; ascentOverride: string; descentOverride: string; lineGapOverride: string; sizeAdjust: string } | undefined
  • changed: function Alike<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin'> }): T extends undefined ? NextFont : NextFontWithVariable → function Alike<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Alike_Angular<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin'> }): T extends undefined ? NextFont : NextFontWithVariable → function Alike_Angular<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Asset<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin'> }): T extends undefined ? NextFont : NextFontWithVariable → function Asset<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic-ext' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function BioRhyme<T extends CssVariable | undefined = undefined>(options: { weight: '200' | '300' | '400' | '700' | '800' | Array<'200' | '300' | '400' | '700' | '800'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVa… → function BioRhyme<T extends CssVariable | undefined = undefined>(options?: { weight?: '200' | '300' | '400' | '500' | '600' | '700' | '800' | 'variable' | Array<'200' | '300' | '400' | '500' | '600' | '700' | '800'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'>; axe…
  • changed: function Borel<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable → function Borel<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols' | 'vietnamese'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Bricolage_Grotesque<T extends CssVariable | undefined = undefined>(options?: { weight?: '200' | '300' | '400' | '500' | '600' | '700' | '800' | 'variable' | Array<'200' | '300' | '400' | '500' | '600' | '700' | '800'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic-ext' |… → function Bricolage_Grotesque<T extends CssVariable | undefined = undefined>(options?: { weight?: '200' | '300' | '400' | '500' | '600' | '700' | '800' | 'variable' | Array<'200' | '300' | '400' | '500' | '600' | '700' | '800'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin…
  • changed: function David_Libre<T extends CssVariable | undefined = undefined>(options: { weight: '400' | '500' | '700' | Array<'400' | '500' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'hebrew' | 'latin' | 'latin-ext' | 'vietnamese'> }): T extends undefined ? NextFont : NextFontWithVaria… → function David_Libre<T extends CssVariable | undefined = undefined>(options: { weight: '400' | '500' | '700' | Array<'400' | '500' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'hebrew' | 'latin' | 'latin-ext' | 'math' | 'symbols' | 'vietnamese'> }): T extends undefined ? NextFon…
  • changed: function Gelasio<T extends CssVariable | undefined = undefined>(options: { weight: '400' | '500' | '600' | '700' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'vietnamese'> }): T extends undefined ? NextF… → function Gelasio<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | 'variable' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'vietnamese'> }): T extends un…
  • changed: function Inter<T extends CssVariable | undefined = undefined>(options?: { weight?: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | 'variable' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Arra… → function Inter<T extends CssVariable | undefined = undefined>(options?: { weight?: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | 'variable' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: b…
  • changed: function Lora<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | 'variable' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'latin' | 'latin-ext' | 'vi… → function Lora<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | 'variable' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'latin' | 'latin-ext' | 'ma…
  • changed: function Narnoor<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'gunjala-gondi' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable → function Narnoor<T extends CssVariable | undefined = undefined>(options: { weight: '400' | '500' | '600' | '700' | '800' | Array<'400' | '500' | '600' | '700' | '800'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'gunjala-gondi' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends…
  • changed: function Noto_Naskh_Arabic<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | 'variable' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'arabic' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFo… → function Noto_Naskh_Arabic<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | 'variable' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'arabic' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T exten…
  • changed: function Noto_Sans<T extends CssVariable | undefined = undefined>(options: { weight: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; sub… → function Noto_Sans<T extends CssVariable | undefined = undefined>(options?: { weight?: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | 'variable' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback…
  • changed: function Noto_Sans_Brahmi<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'brahmi' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable → function Noto_Sans_Brahmi<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'brahmi' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Noto_Sans_Caucasian_Albanian<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'caucasian-albanian'> }): T extends undefined ? NextFont : NextFontWithVariable → function Noto_Sans_Caucasian_Albanian<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'caucasian-albanian' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Noto_Sans_Chorasmian<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'chorasmian' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable → function Noto_Sans_Chorasmian<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'chorasmian' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Noto_Sans_Cypriot<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cypriot'> }): T extends undefined ? NextFont : NextFontWithVariable → function Noto_Sans_Cypriot<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cypriot' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Noto_Sans_Elymaic<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'elymaic'> }): T extends undefined ? NextFont : NextFontWithVariable → function Noto_Sans_Elymaic<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'elymaic' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Noto_Sans_Glagolitic<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic-ext' | 'glagolitic' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable → function Noto_Sans_Glagolitic<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic-ext' | 'glagolitic' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithV…
  • changed: function Noto_Sans_Meroitic<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'meroitic'> }): T extends undefined ? NextFont : NextFontWithVariable → function Noto_Sans_Meroitic<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'meroitic' | 'meroitic-cursive' | 'meroitic-hieroglyphs'> }): T extends undefined ? NextFont : NextFontW…
  • changed: function Noto_Sans_Mongolian<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'mongolian'> }): T extends undefined ? NextFont : NextFontWithVariable → function Noto_Sans_Mongolian<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'mongolian' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Noto_Sans_Symbols_2<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'braille' | 'latin' | 'latin-ext' | 'mayan-numerals' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable → function Noto_Sans_Symbols_2<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'braille' | 'latin' | 'latin-ext' | 'math' | 'mayan-numerals' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVar…
  • changed: function Philosopher<T extends CssVariable | undefined = undefined>(options: { weight: '400' | '700' | Array<'400' | '700'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'latin' | 'vietnamese'> }): T extends undefined ? NextFont : NextFo… → function Philosopher<T extends CssVariable | undefined = undefined>(options: { weight: '400' | '700' | Array<'400' | '700'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'latin' | 'latin-ext' | 'vietnamese'> }): T extends undefined ? Nex…
  • changed: function Roboto_Condensed<T extends CssVariable | undefined = undefined>(options: { weight: '300' | '400' | '700' | Array<'300' | '400' | '700'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'greek' | 'greek-ext' | 'latin' | 'latin-ext'… → function Roboto_Condensed<T extends CssVariable | undefined = undefined>(options?: { weight?: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | 'variable' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontF…
  • changed: function Ruslan_Display<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable → function Ruslan_Display<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Shanti<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin'> }): T extends undefined ? NextFont : NextFontWithVariable → function Shanti<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • changed: function Wavefont<T extends CssVariable | undefined = undefined>(options?: { weight?: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | 'variable' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: A… → function Wavefont<T extends CssVariable | undefined = undefined>(options?: { weight?: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | '1000' | 'variable' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | '1000'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; fallback?: string[]; adjustFontFallback?: boolean; axes?: ('RON…
  • changed: function Yanone_Kaffeesatz<T extends CssVariable | undefined = undefined>(options?: { weight?: '200' | '300' | '400' | '500' | '600' | '700' | 'variable' | Array<'200' | '300' | '400' | '500' | '600' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'latin' | 'latin-ext'… → function Yanone_Kaffeesatz<T extends CssVariable | undefined = undefined>(options?: { weight?: '200' | '300' | '400' | '500' | '600' | '700' | 'variable' | Array<'200' | '300' | '400' | '500' | '600' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'lat…
  • added: function Afacad<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | 'variable' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic-ext' | 'latin' | 'latin-ext' | 'math' | 'symb…
  • added: function Agbalumo<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic-ext' | 'latin' | 'latin-ext' | 'vietnamese'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Annapurna_SIL<T extends CssVariable | undefined = undefined>(options: { weight: '400' | '700' | Array<'400' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'devanagari' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Anta<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Hedvig_Letters_Sans<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Hedvig_Letters_Serif<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | 'variable' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'>; axes?: 'opsz'[] }): T extends undefined ? NextFont : NextFontWithV…
  • added: function Honk<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | 'variable' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols' | 'vietnamese'>; axes?: ('MORF' | 'SHLN')[] }): T extends undefined ? NextFont : Nex…
  • added: function Jacquard_12_Charted<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jacquard_24<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jacquarda_Bastarda_9<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jacquarda_Bastarda_9_Charted<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jersey_10<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jersey_10_Charted<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jersey_15<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jersey_15_Charted<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jersey_20<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jersey_20_Charted<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Jersey_25<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Kalnia<T extends CssVariable | undefined = undefined>(options?: { weight?: '100' | '200' | '300' | '400' | '500' | '600' | '700' | 'variable' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math…
  • added: function Kay_Pho_Du<T extends CssVariable | undefined = undefined>(options: { weight: '400' | '500' | '600' | '700' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'kayah-li' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVar…
  • added: function Kode_Mono<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | 'variable' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVa…
  • added: function Linefont<T extends CssVariable | undefined = undefined>(options?: { weight?: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | '1000' | 'variable' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | '1000'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; fallback?: string[]; adjustFontFallback?: boolean; axes?: 'wdth…
  • added: function Madimi_One<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Micro_5<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Micro_5_Charted<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Namdhinggo<T extends CssVariable | undefined = undefined>(options: { weight: '400' | '500' | '600' | '700' | '800' | Array<'400' | '500' | '600' | '700' | '800'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'limbu'> }): T extends undefined ? NextFont : Ne…
  • added: function Noto_Sans_Kawi<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | 'variable' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'kawi' | 'latin' | 'latin-ext'> }): T extends undefined ? NextFont :…
  • added: function Noto_Serif_Old_Uyghur<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'old-uyghur'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Noto_Znamenny_Musical_Notation<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols' | 'znamenny'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Ojuju<T extends CssVariable | undefined = undefined>(options?: { weight?: '200' | '300' | '400' | '500' | '600' | '700' | '800' | 'variable' | Array<'200' | '300' | '400' | '500' | '600' | '700' | '800'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math'…
  • added: function Platypi<T extends CssVariable | undefined = undefined>(options?: { weight?: '300' | '400' | '500' | '600' | '700' | '800' | 'variable' | Array<'300' | '400' | '500' | '600' | '700' | '800'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'…
  • added: function Playpen_Sans<T extends CssVariable | undefined = undefined>(options?: { weight?: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | 'variable' | Array<'100' | '200' | '300' | '400' | '500' | '600' | '700' | '800'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'emoji'…
  • added: function Protest_Guerrilla<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols' | 'vietnamese'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Protest_Revolution<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols' | 'vietnamese'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Protest_Riot<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols' | 'vietnamese'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Protest_Strike<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols' | 'vietnamese'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Reddit_Mono<T extends CssVariable | undefined = undefined>(options?: { weight?: '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | 'variable' | Array<'200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin'…
  • added: function Rethink_Sans<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | '800' | 'variable' | Array<'400' | '500' | '600' | '700' | '800'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T exte…
  • added: function Rubik_Broken_Fax<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'hebrew' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFont…
  • added: function Rubik_Doodle_Shadow<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'hebrew' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextF…
  • added: function Rubik_Doodle_Triangles<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'hebrew' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : Ne…
  • added: function Rubik_Glitch_Pop<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'hebrew' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFont…
  • added: function Rubik_Lines<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'hebrew' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithV…
  • added: function Rubik_Maps<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'hebrew' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVa…
  • added: function Rubik_Scribble<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'cyrillic' | 'cyrillic-ext' | 'hebrew' | 'latin' | 'latin-ext' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWi…
  • added: function Sankofa_Display<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'vietnamese'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Sedan<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Sixtyfour<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | 'variable' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols'>; axes?: ('BLED' | 'SCAN')[] }): T extends undefined ? NextFont : NextFontWithV…
  • added: function Sometype_Mono<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | '500' | '600' | '700' | 'variable' | Array<'400' | '500' | '600' | '700'>; style?: 'normal' | 'italic' | Array<'normal' | 'italic'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext'> }): T extends undefined ?…
  • added: function Tac_One<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'latin-ext' | 'math' | 'symbols' | 'vietnamese'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Workbench<T extends CssVariable | undefined = undefined>(options?: { weight?: '400' | 'variable' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'math' | 'symbols'>; axes?: ('BLED' | 'SCAN')[] }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Yarndings_12<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Yarndings_12_Charted<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Yarndings_20<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Yarndings_20_Charted<T extends CssVariable | undefined = undefined>(options: { weight: '400' | Array<'400'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'latin' | 'math' | 'symbols'> }): T extends undefined ? NextFont : NextFontWithVariable
  • added: function Zain<T extends CssVariable | undefined = undefined>(options: { weight: '200' | '300' | '400' | '700' | '800' | '900' | Array<'200' | '300' | '400' | '700' | '800' | '900'>; style?: 'normal' | Array<'normal'>; display?: Display; variable?: T; preload?: boolean; fallback?: string[]; adjustFontFallback?: boolean; subsets?: Array<'arabic' | 'latin'> }): T extends undefined ? NextFont : NextF…
  • added: function retry<T>(fn: asyncRetry.RetryFunction<T>, retries: number): Promise<any>
  • added: const FigmaImageResponse: ({ url, template, fonts, imageResponseOptions, Response }: InternalFigmaImageResponseProps) => Promise<import('../index.edge').ImageResponse>
  • added: const experimental_FigmaImageResponse: (props: FigmaImageResponseProps) => Promise<ImageResponse>
  • added: type EdgeImageResponse = typeof ImageResponse
  • added: const experimental_FigmaImageResponse: (props: FigmaImageResponseProps) => Promise<import('./index.edge').ImageResponse>
  • added: type NodeImageResponse = typeof ImageResponse
  • changed: default function render(satori: any, resvg: any, opts: any, defaultFonts: any, element: any): Promise<any> → default function render(satori: any, resvg: any, opts: any, defaultFonts: any, element: any): Promise<Uint8Array>
  • changed: property Font.style?: Style$1 → property Font.style?: FontStyle
  • added: interface FigmaComplexTemplate
  • added: interface FigmaImageResponseProps
  • added: property FigmaComplexTemplate.props?: { centerHorizontally?: boolean } & React.CSSProperties
  • added: property FigmaComplexTemplate.value: string
  • added: property FigmaImageResponseProps.fonts?: FontOptions[]
  • added: property FigmaImageResponseProps.imageResponseOptions?: Omit<ImageResponseOptions, 'width' | 'height'>
  • added: property FigmaImageResponseProps.template: Record<string, FigmaComplexTemplate | string>
  • added: property FigmaImageResponseProps.url: string
  • added: property NextBabelLoaderOptions.srcDir: string
  • added: function getTestReqInfo<R>(req?: R, reader?: TestRequestReader<R>): TestReqInfo | undefined
  • added: function withRequest<R, T>(req: R, reader: TestRequestReader<R>, fn: () => T): T
  • added: interface TestReqInfo
  • added: interface TestRequestReader<R>
  • added: method TestRequestReader.header(req: R, name: string): string | null
  • added: method TestRequestReader.url(req: R): string
  • added: property TestReqInfo.proxyPort: number
  • added: property TestReqInfo.testData: string
  • added: property TestReqInfo.url: string
  • added: const reader: TestRequestReader<Request>
  • added: function handleFetch(originalFetch: Fetch, request: Request): Promise<Response>
  • added: function interceptFetch(originalFetch: Fetch): () => void
  • added: function interceptHttpGet(originalFetch: Fetch): () => void
  • added: function interceptTestApis(): () => void
  • added: function wrapRequestHandler<T>(handler: (req: Request, fn: () => T) => T): (req: Request, fn: () => T) => T
  • changed: function createIncrementalCache(incrementalCacheHandlerPath: string | undefined, isrMemoryCacheSize: number | undefined, fetchCacheKeyPrefix: string | undefined, distDir: string): IncrementalCache → function createIncrementalCache({ cacheHandler, cacheMaxMemorySize, fetchCacheKeyPrefix, distDir, dir, enabledDirectories, experimental, flushToDisk }: { cacheHandler?: string; cacheMaxMemorySize?: number; fetchCacheKeyPrefix?: string; distDir: string; dir: string; enabledDirectories: NextEnabledDirectories; experimental: { ppr: boolean }; flushToDisk?: boolean }): Promise<IncrementalCache>
  • changed: const isDynamicUsageError: (err: any) => boolean → const isDynamicUsageError: (err: unknown) => boolean
  • added: const isNavigationSignalError: (err: unknown) => boolean
  • removed: function generatePrefetchRsc(req: MockedRequest, path: string, res: MockedResponse, pathname: string, htmlFilepath: string, renderOpts: RenderOpts, fileWriter: FileWriter): Promise<void>
  • changed: function exportAppPage(req: MockedRequest, res: MockedResponse, page: string, path: string, pathname: string, query: NextParsedUrlQuery, renderOpts: RenderOpts, htmlFilepath: string, debugOutput: boolean, isDynamicError: boolean, isAppPrefetch: boolean, fileWriter: FileWriter): Promise<ExportRouteResult> → function exportAppPage(req: MockedRequest, res: MockedResponse, page: string, path: string, pathname: string, query: NextParsedUrlQuery, renderOpts: RenderOpts, htmlFilepath: string, debugOutput: boolean, isDynamicError: boolean, fileWriter: FileWriter): Promise<ExportRouteResult>
  • added: member ExportedAppPageFiles.PREFETCH_FLIGHT = 'PREFETCH_FLIGHT'
  • added: type RouteMetadata = { status: number | undefined; headers: OutgoingHttpHeaders | undefined; postponed: string | undefined }
  • removed: property ExportAppOptions.hasAppDir: boolean
  • removed: property ExportAppOptions.isInvokedFromCli: boolean
  • removed: property ExportPageInput.incrementalCacheHandlerPath?: string
  • removed: property ExportPageInput.isrMemoryCacheSize?: NextConfigComplete['experimental']['isrMemoryCacheSize']
  • changed: type ExportAppResult = { byPath: Map<string, { revalidate?: Revalidate; metadata?: { status?: number; headers?: OutgoingHttpHeaders } }>; byPage: Map<string, { durationsByPath: Map<s… → type ExportAppResult = { byPath: Map<string, { revalidate?: Revalidate; metadata?: { status?: number; headers?: OutgoingHttpHeaders }; hasEmptyPrelude?: boolean; hasPostponed?: boole…
  • changed: type ExportPageResult = ExportRouteResult & { files: ExportedPageFile[]; duration: number } → type ExportPageResult = ExportRouteResult & { files: ExportedPageFile[]; duration: number; turborepoAccessTraceResult?: SerializableTurborepoAccessTraceResult }
  • changed: type ExportRouteResult = { ampValidations?: AmpValidation[]; revalidate: Revalidate; metadata?: { status?: number; headers?: OutgoingHttpHeaders }; ssgNotFound?: boolean } | { error: b… → type ExportRouteResult = { ampValidations?: AmpValidation[]; revalidate: Revalidate; metadata?: { status?: number; headers?: OutgoingHttpHeaders }; ssgNotFound?: boolean; hasEmptyPrelu…
  • changed: type FileWriter = (type: string, path: string, content: any, encodingOptions?: WriteFileOptions) => Promise<void> → type FileWriter = (type: string, path: string, content: string | NodeJS.ArrayBufferView | Iterable<string | NodeJS.ArrayBufferView> | AsyncIterable<string | NodeJS.ArrayBufferVi…
  • added: property ExportAppOptions.enabledDirectories: NextEnabledDirectories
  • added: property ExportPageInput.cacheHandler?: string
  • added: property ExportPageInput.cacheMaxMemorySize?: NextConfigComplete['cacheMaxMemorySize']
  • added: property ExportPageInput.dir: string
  • added: property ExportPageInput.enabledDirectories: NextEnabledDirectories
  • added: function hasCustomExportOutput(config: NextConfigComplete): boolean
  • added: function buildCustomRoute(type: 'header', route: Header): ManifestHeaderRoute
  • added: function buildCustomRoute(type: 'redirect', route: Redirect, restrictedRedirectPaths: string[]): ManifestRedirectRoute
  • added: function buildCustomRoute(type: 'rewrite', route: Rewrite): ManifestRewriteRoute
  • changed: function isClientReference(reference: any): boolean → function isClientReference(mod: any): boolean
  • removed: const commandArgs: { [command: string]: () => Parameters<typeof getValidatedArgs>[0] }
  • removed: type CliCommand = (args: ReturnType<typeof getValidatedArgs>) => void
  • removed: const commands: { [command: string]: () => Promise<CliCommand> }
  • removed: type CliCommand = (args: ReturnType<typeof getValidatedArgs>) => void
  • removed: const ESLINT_PROMPT_VALUES: ({ title: string; recommended: boolean; config: { extends: string } } | { title: string; config: { extends: string }; recommended?: undefined } | { title: stri…
  • changed: const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-action-proxy' → const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'
  • changed: const WEBPACK_LAYERS: { GROUP: { server: ('rsc' | 'action-browser' | 'app-metadata-route' | 'app-route-handler')[]; nonClientServerTarget: ('middleware' | 'api')[]; app: ('rsc' | 's… → const WEBPACK_LAYERS: { GROUP: { serverOnly: ('rsc' | 'action-browser' | 'instrument' | 'app-metadata-route' | 'app-route-handler')[]; clientOnly: ('ssr' | 'app-pages-browser')[]; n…
  • added: const ACTION_SUFFIX = '.action'
  • added: const NEXT_BODY_SUFFIX = '.body'
  • added: const NEXT_CACHE_TAG_MAX_ITEMS = 128
  • added: const NEXT_DATA_SUFFIX = '.json'
  • added: const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'
  • added: const NEXT_META_SUFFIX = '.meta'
  • added: const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'
  • added: const RSC_PREFETCH_SUFFIX = '.prefetch.rsc'
  • added: const RSC_SUFFIX = '.rsc'
  • added: class DetachedPromise<T = any>
  • added: constructor DetachedPromise()
  • added: readonly property DetachedPromise.promise: Promise<T>
  • added: readonly property DetachedPromise.reject: (reason: any) => void
  • added: readonly property DetachedPromise.resolve: (value: T | PromiseLike<T>) => void
  • added: const getESLintPromptValues: (cwd: string) => Promise<({ title: string; recommended: boolean; config: { extends: string | string[] } } | { title: string; config: { extends: string } } | {…
  • added: const getESLintStrictValue: (cwd: string) => Promise<{ title: string; recommended: boolean; config: { extends: string | string[] } }>
  • removed: function flatReaddir(dir: string, includes: RegExp[]): Promise<string[]>
  • added: const formatCliHelpOutput: (cmd: Command, helper: Help) => string
  • added: const formatDynamicImportPath: (dir: string, filePath: string) => string
  • added: function getStackWithoutErrorMessage(error: Error): string
  • added: function rename(source: string, target: string, windowsRetryTimeout?: number | false): Promise<void>
  • added: function writeFileAtomic(filePath: string, content: string): Promise<void>
  • changed: function generateInterceptionRoutesRewrites(appPaths: string[]): Rewrite[] → function generateInterceptionRoutesRewrites(appPaths: string[], basePath?: string): Rewrite[]
  • added: function isInterceptionRouteRewrite(route: Rewrite): boolean
  • added: function getFilesInDir(path: string): Promise<string[]>
  • removed: function getValidatedArgs(validArgs: arg.Spec, argv?: string[]): arg.Result<arg.Spec>
  • added: property NextError.digest?: number
  • added: function getGcEvents(): PerformanceEntry[]
  • added: function startObservingGc(): void
  • added: function stopObservingGc(): void
  • added: function disableMemoryDebuggingMode(): void
  • added: function enableMemoryDebuggingMode(): void
  • added: function getAllMemoryUsageSpans(): MemoryUsage[]
  • added: function startPeriodicMemoryUsageTracing(): void
  • added: function stopPeriodicMemoryUsageTracing(): void
  • added: function traceMemoryUsage(description: string, parentSpan?: Span | undefined): void
  • removed: const ViewPortKeys: { [k in keyof Viewport]: string }
  • added: const ViewportMetaKeys: { [k in keyof ViewportLayout]: string }
  • added: function createDefaultViewport(): ResolvedViewport
  • changed: function AlternatesMetadata({ alternates }: { alternates: ResolvedMetadata['alternates'] }): NonNullable<React.JSX.Element | (React.JSX.Element | null | undefined)[]>[] | null → function AlternatesMetadata({ alternates }: { alternates: ResolvedMetadata['alternates'] }): NonNullable<import('react/jsx-runtime').JSX.Element | (import('react/jsx-runtime').JSX.Element | null | undefined)[]>[] | null
  • removed: function BasicMetadata({ metadata }: { metadata: ResolvedMetadata }): NonNullable<React.JSX.Element | (React.JSX.Element | null)[]>[]
  • changed: function AppleWebAppMeta({ appleWebApp }: { appleWebApp: ResolvedMetadata['appleWebApp'] }): NonNullable<React.ReactElement<any, string | React.JSXElementConstructor<any>> | React.JSX.Element[]>[] | null → function AppleWebAppMeta({ appleWebApp }: { appleWebApp: ResolvedMetadata['appleWebApp'] }): NonNullable<React.ReactElement<any, string | React.JSXElementConstructor<any>> | import('react/jsx-runtime').JSX.Element[]>[] | null
  • changed: function FormatDetectionMeta({ formatDetection }: { formatDetection: ResolvedMetadata['formatDetection'] }): React.JSX.Element | null → function FormatDetectionMeta({ formatDetection }: { formatDetection: ResolvedMetadata['formatDetection'] }): import('react/jsx-runtime').JSX.Element | null
  • changed: function ItunesMeta({ itunes }: { itunes: ResolvedMetadata['itunes'] }): React.JSX.Element | null → function ItunesMeta({ itunes }: { itunes: ResolvedMetadata['itunes'] }): import('react/jsx-runtime').JSX.Element | null
  • added: function BasicMeta({ metadata }: { metadata: ResolvedMetadata }): NonNullable<import('react/jsx-runtime').JSX.Element | (import('react/jsx-runtime').JSX.Element | null)[]>[]
  • added: function FacebookMeta({ facebook }: { facebook: ResolvedMetadata['facebook'] }): import('react/jsx-runtime').JSX.Element[] | null
  • added: function ViewportMeta({ viewport }: { viewport: ResolvedViewport }): React.ReactElement<any, string | React.JSXElementConstructor<any>>[]
  • changed: function IconsMetadata({ icons }: { icons: ResolvedMetadata['icons'] }): React.JSX.Element[][] | null → function IconsMetadata({ icons }: { icons: ResolvedMetadata['icons'] }): import('react/jsx-runtime').JSX.Element[][] | null
  • changed: function isMetadataRouteFile(appDirRelativePath: string, pageExtensions: string[], withExtension: boolean): boolean → function isMetadataRouteFile(appDirRelativePath: string, pageExtensions: PageExtensions, withExtension: boolean): boolean
  • changed: function createMetadataComponents({ tree, pathname, searchParams, getDynamicParamFromSegment, appUsingSizeAdjustment, errorType }: { tree: LoaderTree; pathname: string; searchParams: { [key: string]: any }; getDynamicParamFromSegment: GetDynamicParamFromSegment; appUsingSizeAdjustment: boolean; errorType?: 'not-found' | 'redirect' }): [React.ComponentType, React.ComponentType] → function createMetadataComponents({ tree, query, metadataContext, getDynamicParamFromSegment, appUsingSizeAdjustment, errorType, createDynamicallyTrackedSearchParams }: { tree: LoaderTree; query: ParsedUrlQuery; metadataContext: MetadataContext; getDynamicParamFromSegment: GetDynamicParamFromSegment; appUsingSizeAdjustment: boolean; errorType?: 'not-found' | 'redirect'; createDynamicallyTrackedSe…
  • added: function createMetadataContext(urlPathname: string, renderOpts: AppRenderContext['renderOpts']): MetadataContext
  • changed: function resolveMetadataItems({ tree, parentParams, metadataItems, errorMetadataItem, treePrefix, getDynamicParamFromSegment, searchParams, errorConvention }: { tree: LoaderTree; parentParams: { [key: string]: any }; metadataItems: MetadataItems; errorMetadataItem: MetadataItems[number]; treePrefix?: string[]; getDynamicParamFromSegment: GetDynamicParamFromSegment; searchParams: { [key: string]:… → function resolveMetadataItems({ tree, parentParams, metadataItems, errorMetadataItem, treePrefix, getDynamicParamFromSegment, searchParams, errorConvention }: { tree: LoaderTree; parentParams: { [key: string]: any }; metadataItems: MetadataItems; errorMetadataItem: MetadataItems[number]; treePrefix?: string[]; getDynamicParamFromSegment: GetDynamicParamFromSegment; searchParams: ParsedUrlQuery; e…
  • changed: type MetadataItems = [Metadata | MetadataResolver | null, StaticMetadata][] → type MetadataItems = [Metadata | MetadataResolver | null, StaticMetadata, Viewport | ViewportResolver | null][]
  • added: function accumulateViewport(metadataItems: MetadataItems): Promise<ResolvedViewport>
  • removed: const resolveViewport: FieldResolver<'viewport'>
  • changed: const resolveThemeColor: FieldResolver<'themeColor'> → const resolveThemeColor: FieldResolver<'themeColor', Viewport>
  • added: const resolveFacebook: FieldResolver<'facebook'>
  • changed: const resolveOpenGraph: FieldResolverExtraArgs<'openGraph', [ResolvedMetadata['metadataBase'], MetadataContext, string | null]> → const resolveOpenGraph: FieldResolverExtraArgs<'openGraph', [ResolvedMetadataBase, MetadataContext, string | null]>
  • changed: const resolveTwitter: FieldResolverExtraArgs<'twitter', [ResolvedMetadata['metadataBase'], string | null]> → const resolveTwitter: FieldResolverExtraArgs<'twitter', [ResolvedMetadataBase, MetadataContext, string | null]>
  • changed: function resolveImages(images: OpenGraph['images'], metadataBase: ResolvedMetadata['metadataBase']): NonNullable<ResolvedMetadata['openGraph']>['images'] → function resolveImages(images: OpenGraph['images'], metadataBase: ResolvedMetadataBase, isStandaloneMode: boolean): NonNullable<ResolvedMetadata['openGraph']>['images']
  • changed: function resolveImages(images: Twitter['images'], metadataBase: ResolvedMetadata['metadataBase']): NonNullable<ResolvedMetadata['twitter']>['images'] → function resolveImages(images: Twitter['images'], metadataBase: ResolvedMetadataBase, isStandaloneMode: boolean): NonNullable<ResolvedMetadata['twitter']>['images']
  • changed: function getSocialImageFallbackMetadataBase(metadataBase: URL | null): URL | null → function getSocialImageFallbackMetadataBase(metadataBase: URL | null): { fallbackMetadataBase: URL; isMetadataBaseMissing: boolean }
  • changed: function resolveAbsoluteUrlWithPathname(url: string | URL, metadataBase: URL | null, pathname: string): string → function resolveAbsoluteUrlWithPathname(url: string | URL, metadataBase: URL | null, { trailingSlash, pathname }: MetadataContext): string
  • added: type Languages<T> = { [s in HrefLang]?: T }
  • removed: type Viewport = { width?: string | number; height?: string | number; initialScale?: number; minimumScale?: number; maximumScale?: number; userScalable?: boolean; viewportFit?:…
  • added: type Facebook = FacebookAppId | FacebookAdmins
  • added: type FacebookAdmins = { appId?: never; admins: string | string[] }
  • added: type FacebookAppId = { appId: string; admins?: never }
  • added: type ResolvedFacebook = { appId?: string; admins?: string[] }
  • added: type ViewportLayout = { width?: string | number; height?: string | number; initialScale?: number; minimumScale?: number; maximumScale?: number; userScalable?: boolean; viewportFit?:…
  • added: type StaticMetadata = { icon: any[] | undefined; apple: any[] | undefined; openGraph: any[] | undefined; twitter: any[] | undefined; manifest: string | undefined } | null
  • changed: property Metadata.viewport?: null | string | Viewport → property Metadata.viewport?: null | string | ViewportLayout
  • added: interface ResolvedViewport extends ViewportLayout
  • added: interface Viewport extends ViewportLayout
  • added: property Metadata.facebook?: null | Facebook
  • added: property ResolvedMetadata.facebook: null | ResolvedFacebook
  • added: property ResolvedViewport.colorScheme: null | ColorSchemeEnum
  • added: property ResolvedViewport.themeColor: null | ThemeColorDescriptor[]
  • added: property Viewport.colorScheme?: null | ColorSchemeEnum
  • added: property Viewport.themeColor?: null | string | ThemeColorDescriptor | ThemeColorDescriptor[]
  • added: type ResolvingViewport = Promise<Viewport>
  • changed: type FieldResolver<Key extends keyof Metadata> = (T: Metadata[Key]) => ResolvedMetadata[Key] → type FieldResolver<Key extends keyof Data & keyof ResolvedData, Data = Metadata, ResolvedData = ResolvedMetadata> = (T: Data[Key]) => ResolvedData[Key]
  • changed: type FieldResolverExtraArgs<Key extends keyof Metadata, ExtraArgs extends unknown[] = any[]> = (T: Metadata[Key], ...args: ExtraArgs) => ResolvedMetadata[Key] → type FieldResolverExtraArgs<Key extends keyof Data & keyof ResolvedData, ExtraArgs extends unknown[] = any[], Data = Metadata, ResolvedData = ResolvedMetadata> = (T: Data[Key], ...args: ExtraArgs) => ResolvedData[Key]
  • changed: type MetadataContext = { pathname: string } → type MetadataContext = { pathname: string; trailingSlash: boolean; isStandaloneMode: boolean }
  • added: const enum PAGE_TYPES
  • added: member PAGE_TYPES.APP = 'app'
  • added: member PAGE_TYPES.PAGES = 'pages'
  • added: member PAGE_TYPES.ROOT = 'root'
  • added: const scheduleImmediate: <T = void>(cb: ScheduledFn<T>) => void
  • added: const scheduleOnNextTick: <T = void>(cb: ScheduledFn<T>) => void
  • added: function atLeastOneTask(): Promise<void>
  • added: type ScheduledFn<T = void> = () => T | PromiseLike<T>
  • added: type SchedulerFn<T = void> = (cb: ScheduledFn<T>) => void
  • added: function satisfies(): boolean
  • changed: function validateTurboNextConfig({ dir, isDev }: { allowRetry?: boolean; dir: string; port: number; hostname?: string; isDev?: boolean }): Promise<NextConfig> → function validateTurboNextConfig({ dir, isDev }: { dir: string; isDev?: boolean }): Promise<NextConfig>
  • changed: function writeAppTypeDeclarations({ baseDir, imageImportsEnabled, hasPagesDir, isAppDirEnabled }: { baseDir: string; imageImportsEnabled: boolean; hasPagesDir: boolean; isAppDirEnabled: boolean }): Promise<void> → function writeAppTypeDeclarations({ baseDir, imageImportsEnabled, hasPagesDir, hasAppDir }: { baseDir: string; imageImportsEnabled: boolean; hasPagesDir: boolean; hasAppDir: boolean }): Promise<void>
  • changed: function writeConfigurationDefaults(ts: typeof import('typescript'), tsConfigPath: string, isFirstTimeSetup: boolean, isAppDirEnabled: boolean, distDir: string, hasPagesDir: boolean): Promise<void> → function writeConfigurationDefaults(ts: typeof import('typescript'), tsConfigPath: string, isFirstTimeSetup: boolean, hasAppDir: boolean, distDir: string, hasPagesDir: boolean): Promise<void>
  • added: function getPathname(url: string): string
  • added: function isFullStringUrl(url: string): boolean
  • added: function parseUrl(url: string): URL | undefined
  • added: function verifyRootLayout({ dir, appDir, tsconfigPath, pagePath, pageExtensions }: { dir: string; appDir: string; tsconfigPath: string; pagePath: string; pageExtensions: PageExtensions }): Promise<[boolean, string | undefined]>
  • removed: function verifyRootLayout({ dir, appDir, tsconfigPath, pagePath, pageExtensions }: { dir: string; appDir: string; tsconfigPath: string; pagePath: string; pageExtensions: string[] }): Promise<[boolean, string | undefined]>
  • changed: constructor Worker(workerPath: string, options: FarmOptions & { timeout?: number; onRestart?: (method: string, args: any[], attempts: number) => void; exposedMethods: ReadonlyArray<string>; enableWorkerThreads?: boolean }) → constructor Worker(workerPath: string, options: FarmOptions & { timeout?: number; onRestart?: (method: string, args: any[], attempts: number) => void; logger?: Pick<typeof console, 'error' | 'info' | 'warn'>; exposedMethods: ReadonlyArray<string>; enableWorkerThreads?: boolean })
  • changed: method App.render(): React.JSX.Element → method App.render(): import('react/jsx-runtime').JSX.Element
  • changed: function Html(props: React.DetailedHTMLProps<React.HtmlHTMLAttributes<HTMLHtmlElement>, HTMLHtmlElement>): React.JSX.Element → function Html(props: React.DetailedHTMLProps<React.HtmlHTMLAttributes<HTMLHtmlElement>, HTMLHtmlElement>): import('react/jsx-runtime').JSX.Element
  • changed: function Main(): React.JSX.Element → function Main(): import('react/jsx-runtime').JSX.Element
  • changed: method Document.render(): React.JSX.Element → method Document.render(): import('react/jsx-runtime').JSX.Element
  • changed: method Head.getBeforeInteractiveInlineScripts(): React.JSX.Element[] → method Head.getBeforeInteractiveInlineScripts(): import('react/jsx-runtime').JSX.Element[]
  • changed: method Head.getDynamicChunks(files: DocumentFiles): (React.JSX.Element | null)[] → method Head.getDynamicChunks(files: DocumentFiles): (import('react/jsx-runtime').JSX.Element | null)[]
  • changed: method Head.getPolyfillScripts(): React.JSX.Element[] → method Head.getPolyfillScripts(): import('react/jsx-runtime').JSX.Element[]
  • changed: method Head.getPreNextScripts(): React.JSX.Element → method Head.getPreNextScripts(): import('react/jsx-runtime').JSX.Element
  • changed: method Head.getPreloadDynamicChunks(): (React.JSX.Element | null)[] → method Head.getPreloadDynamicChunks(): (import('react/jsx-runtime').JSX.Element | null)[]
  • changed: method Head.getScripts(files: DocumentFiles): React.JSX.Element[] → method Head.getScripts(files: DocumentFiles): import('react/jsx-runtime').JSX.Element[]
  • changed: method Head.render(): React.JSX.Element → method Head.render(): import('react/jsx-runtime').JSX.Element
  • changed: method NextScript.getDynamicChunks(files: DocumentFiles): (React.JSX.Element | null)[] → method NextScript.getDynamicChunks(files: DocumentFiles): (import('react/jsx-runtime').JSX.Element | null)[]
  • changed: method NextScript.getPolyfillScripts(): React.JSX.Element[] → method NextScript.getPolyfillScripts(): import('react/jsx-runtime').JSX.Element[]
  • changed: method NextScript.getPreNextScripts(): React.JSX.Element → method NextScript.getPreNextScripts(): import('react/jsx-runtime').JSX.Element
  • changed: method NextScript.getScripts(files: DocumentFiles): React.JSX.Element[] → method NextScript.getScripts(files: DocumentFiles): import('react/jsx-runtime').JSX.Element[]
  • changed: method NextScript.render(): React.JSX.Element | null → method NextScript.render(): import('react/jsx-runtime').JSX.Element | null
  • changed: method Error.render(): React.JSX.Element → method Error.render(): import('react/jsx-runtime').JSX.Element
  • added: function wrapApiHandler<T extends (...args: any[]) => any>(page: string, handler: T): T
  • changed: function tryGetPreviewData(req: IncomingMessage | BaseNextRequest | Request, res: ServerResponse | BaseNextResponse, options: __ApiPreviewProps): PreviewData → function tryGetPreviewData(req: IncomingMessage | BaseNextRequest | Request, res: ServerResponse | BaseNextResponse, options: __ApiPreviewProps, multiZoneDraftMode: boolean): PreviewData
  • changed: function handleAction({ req, res, ComponentMod, page, serverActionsManifest, generateFlight, staticGenerationStore, requestStore, serverActionsBodySizeLimit, ctx }: { req: IncomingMessage; res: ServerResponse; ComponentMod: any; page: string; serverActionsManifest: any; generateFlight: GenerateFlight; staticGenerationStore: StaticGenerationStore; requestStore: RequestStore; serverActionsBodySizeL… → function handleAction({ req, res, ComponentMod, serverModuleMap, generateFlight, staticGenerationStore, requestStore, serverActions, ctx }: { req: IncomingMessage; res: ServerResponse; ComponentMod: AppPageModule; serverModuleMap: ServerModuleMap; generateFlight: GenerateFlight; staticGenerationStore: StaticGenerationStore; requestStore: RequestStore; serverActions?: { bodySizeLimit?: SizeLimit;…
  • added: function createServerModuleMap({ serverActionsManifest, pageName }: { serverActionsManifest: ActionManifest; pageName: string }): {}
  • added: function selectWorkerForForwarding(actionId: string, pageName: string, serverActionsManifest: ActionManifest): string | undefined
  • changed: type AppPageRender = (req: IncomingMessage, res: ServerResponse, pagePath: string, query: NextParsedUrlQuery, renderOpts: RenderOpts) => Promise<RenderResult> → type AppPageRender = (req: IncomingMessage, res: ServerResponse, pagePath: string, query: NextParsedUrlQuery, renderOpts: RenderOpts) => Promise<RenderResult<AppPageRenderResultMet…
  • changed: type AppRenderContext = AppRenderBaseContext & { getDynamicParamFromSegment: GetDynamicParamFromSegment; query: NextParsedUrlQuery; isPrefetch: boolean; providedSearchParams: NextPars… → type AppRenderContext = AppRenderBaseContext & { getDynamicParamFromSegment: GetDynamicParamFromSegment; query: NextParsedUrlQuery; isPrefetch: boolean; requestTimestamp: number; appU…
  • added: type BinaryStreamOf<T> = ReadableStream<Uint8Array>
  • removed: function createComponentAndStyles({ filePath, getComponent, injectedCSS, ctx }: { filePath: string; getComponent: () => any; injectedCSS: Set<string>; ctx: AppRenderContext }): Promise<any>
  • added: function createComponentStylesAndScripts({ filePath, getComponent, injectedCSS, injectedJS, ctx }: { filePath: string; getComponent: () => any; injectedCSS: Set<string>; injectedJS: Set<string>; ctx: AppRenderContext }): Promise<[React.ComponentType<any>, React.ReactNode, React.ReactNode]>
  • changed: function createComponentTree({ createSegmentPath, loaderTree: tree, parentParams, firstItem, rootLayoutIncluded, injectedCSS, injectedFontPreloadTags, asNotFound, metadataOutlet, ctx }: { createSegmentPath: CreateSegmentPath; loaderTree: LoaderTree; parentParams: { [key: string]: any }; rootLayoutIncluded: boolean; firstItem?: boolean; injectedCSS: Set<string>; injectedFontPreloadTags: Set<string… → function createComponentTree(props: { createSegmentPath: CreateSegmentPath; loaderTree: LoaderTree; parentParams: Params; rootLayoutIncluded: boolean; firstItem?: boolean; injectedCSS: Set<string>; injectedJS: Set<string>; injectedFontPreloadTags: Set<string>; asNotFound?: boolean; metadataOutlet?: React.ReactNode; ctx: AppRenderContext; missingSlots?: Set<string> }): Promise<CacheNodeSeedData>
  • changed: function createErrorHandler({ _source, dev, isNextExport, errorLogger, capturedErrors, allCapturedErrors }: { _source: string; dev?: boolean; isNextExport?: boolean; errorLogger?: (err: any) => Promise<void>; capturedErrors: Error[]; allCapturedErrors?: Error[] }): ErrorHandler → function createErrorHandler({ source, dev, isNextExport, errorLogger, digestErrorsMap, allCapturedErrors, silenceLogger }: { source: (typeof ErrorHandlerSource)[keyof typeof ErrorHandlerSource]; dev?: boolean; isNextExport?: boolean; errorLogger?: (err: any) => Promise<void>; digestErrorsMap: Map<string, Error>; allCapturedErrors?: Error[]; silenceLogger?: boolean }): ErrorHandler
  • changed: type ErrorHandler = (err: any) => string → type ErrorHandler = (err: unknown, errorInfo: unknown) => string | undefined
  • added: const ErrorHandlerSource: { readonly serverComponents: 'serverComponents'; readonly flightData: 'flightData'; readonly html: 'html' }
  • added: declare global
  • changed: function addSearchParamsIfPageSegment(segment: Segment, searchParams: any): string | [string, string, 'd' | 'c' | 'oc'] → function addSearchParamsIfPageSegment(segment: Segment, searchParams: any): string | [string, string, 'd' | 'c' | 'ci' | 'oc' | 'di']
  • removed: function createServerComponentRenderer<Props>(ComponentToRender: (props: Props) => any, ComponentMod: AppPageModule, { inlinedDataTransformStream, clientReferenceManifest, serverContexts, formState }: { inlinedDataTransformStream: TransformStream<Uint8Array, Uint8Array>; clientReferenceManifest: NonNullable<RenderOpts['clientReferenceManifest']>; serverContexts: Array<[ServerContextName: string,…
  • added: const isCsrfOriginAllowed: (originDomain: string, allowedOrigins?: string[]) => boolean
  • added: function Postpone({ reason, prerenderState, pathname }: PostponeProps): never
  • added: function createPostponedAbortSignal(reason: string): AbortSignal
  • added: function createPrerenderState(isDebugSkeleton: boolean | undefined): PrerenderState
  • added: function formatDynamicAPIAccesses(prerenderState: PrerenderState): string[]
  • added: function markCurrentScopeAsDynamic(store: StaticGenerationStore, expression: string): void
  • added: function trackDynamicDataAccessed(store: StaticGenerationStore, expression: string): void
  • added: function trackDynamicFetch(store: StaticGenerationStore, expression: string): void
  • added: function usedDynamicAPIs(prerenderState: PrerenderState): boolean
  • added: type PrerenderState = { readonly isDebugSkeleton: boolean | undefined; readonly dynamicAccesses: DynamicAccess[] }
  • added: function decryptActionBoundArgs(actionId: string, encrypted: Promise<string>): Promise<any>
  • added: function encryptActionBoundArgs(actionId: string, args: any[]): Promise<string>
  • added: function arrayBufferToString(buffer: ArrayBuffer): string
  • added: function decrypt(key: CryptoKey, iv: Uint8Array, data: Uint8Array): Promise<ArrayBuffer>
  • added: function encrypt(key: CryptoKey, iv: Uint8Array, data: Uint8Array): Promise<ArrayBuffer>
  • added: function generateEncryptionKeyBase64(dev?: boolean): Promise<string>
  • added: function getActionEncryptionKey(): Promise<CryptoKey>
  • added: function getClientReferenceManifestSingleton(): { readonly moduleLoading: { readonly prefix: string; readonly crossOrigin: string | null }; readonly clientModules: { readonly [x: string]: { readonly id: string | number; readonly name: string; readonly chunks: readonly string[]; readonly async?: boolean | undefined } }; readonly ssrModuleMapping: { readonly [x: string]: { readonly [x: string]: { r…
  • added: function getServerModuleMap(): { [id: string]: { id: string; chunks: string[]; name: string } }
  • added: function setReferenceManifestsSingleton({ clientReferenceManifest, serverActionsManifest, serverModuleMap }: { clientReferenceManifest: DeepReadonly<ClientReferenceManifest>; serverActionsManifest: DeepReadonly<ActionManifest>; serverModuleMap: { [id: string]: { id: string; chunks: string[]; name: string } } }): void
  • added: function stringToUint8Array(binary: string): Uint8Array
  • removed: const NotFoundBoundary: typeof import('../../client/components/not-found-boundary').NotFoundBoundary
  • removed: export { StaticGenerationSearchParamsBailoutProvider }
  • removed: export { createSearchParamsBailoutProxy }
  • removed: export { staticGenerationBailout }
  • added: export { ClientPageRoot }
  • added: export { NotFoundBoundary }
  • added: export { Postpone }
  • added: export { createDynamicallyTrackedSearchParams }
  • added: export { createUntrackedSearchParams }
  • added: export { taintObjectReference }
  • added: function patchFetch(): void
  • changed: constructor FlightRenderResult(response: string | ReadableStream<Uint8Array>) → constructor FlightRenderResult(response: string | ReadableStream<Uint8Array>, options?: RenderResultOptions)
  • removed: interface FlightResponseRef
  • removed: property FlightResponseRef.current: Promise<JSX.Element> | null
  • removed: function getCssInlinedLinkTags(clientReferenceManifest: ClientReferenceManifest, filePath: string, injectedCSS: Set<string>, collectNewCSSImports?: boolean): string[]
  • added: function getLinkAndScriptTags(clientReferenceManifest: DeepReadonly<ClientReferenceManifest>, filePath: string, injectedCSS: Set<string>, injectedScripts: Set<string>, collectNewImports?: boolean): { styles: string[]; scripts: string[] }
  • changed: function getLayerAssets({ ctx, layoutOrPagePath, injectedCSS: injectedCSSWithCurrentLayout, injectedFontPreloadTags: injectedFontPreloadTagsWithCurrentLayout }: { layoutOrPagePath: string | undefined; injectedCSS: Set<string>; injectedFontPreloadTags: Set<string>; ctx: AppRenderContext }): React.ReactNode → function getLayerAssets({ ctx, layoutOrPagePath, injectedCSS: injectedCSSWithCurrentLayout, injectedJS: injectedJSWithCurrentLayout, injectedFontPreloadTags: injectedFontPreloadTagsWithCurrentLayout }: { layoutOrPagePath: string | undefined; injectedCSS: Set<string>; injectedJS: Set<string>; injectedFontPreloadTags: Set<string>; ctx: AppRenderContext }): React.ReactNode
  • changed: function getPreloadableFonts(nextFontManifest: NextFontManifest | undefined, filePath: string | undefined, injectedFontPreloadTags: Set<string>): string[] | null → function getPreloadableFonts(nextFontManifest: DeepReadonly<NextFontManifest> | undefined, filePath: string | undefined, injectedFontPreloadTags: Set<string>): string[] | null
  • changed: function makeGetServerInsertedHTML({ polyfills, renderServerInsertedHTML }: { polyfills: JSX.IntrinsicElements['script'][]; renderServerInsertedHTML: () => React.ReactNode }): (serverCapturedErrors: Error[]) => Promise<string> → function makeGetServerInsertedHTML({ polyfills, renderServerInsertedHTML, serverCapturedErrors, basePath }: { polyfills: JSX.IntrinsicElements['script'][]; renderServerInsertedHTML: () => React.ReactNode; serverCapturedErrors: Error[]; basePath: string }): () => Promise<string>
  • removed: function preloadComponent(Component: any, props: any): any
  • changed: function getRequiredScripts(buildManifest: BuildManifest, assetPrefix: string, crossOrigin: string | undefined, SRIManifest: undefined | Record<string, string>, qs: string, nonce: string | undefined): [() => void, { src: string; integrity?: string; crossOrigin?: string | undefined }] → function getRequiredScripts(buildManifest: BuildManifest, assetPrefix: string, crossOrigin: undefined | '' | 'anonymous' | 'use-credentials', SRIManifest: undefined | Record<string, string>, qs: string, nonce: string | undefined): [() => void, { src: string; integrity?: string; crossOrigin?: string | undefined }]
  • added: export { Postpone } from '../dynamic-rendering'
  • added: const taintObjectReference: (message: string | undefined, object: Reference) => void
  • added: const taintUniqueValue: (message: string | undefined, lifetime: Reference, value: TaintableUniqueValue) => void
  • changed: function createServerInsertedHTML(): { ServerInsertedHTMLProvider({ children }: { children: JSX.Element }): React.JSX.Element; renderServerInsertedHTML(): React.JSX.Element[] } → function createServerInsertedHTML(): { ServerInsertedHTMLProvider({ children }: { children: JSX.Element }): import('react/jsx-runtime').JSX.Element; renderServerInsertedHTML(): import('react/jsx-runtime').JSX.Element[] }
  • added: class ServerRenderer implements Renderer
  • added: class VoidRenderer implements Renderer
  • added: const DYNAMIC_DATA: 1
  • added: const DYNAMIC_HTML: 2
  • added: constructor ServerRenderer(options: RenderToReadableStreamOptions)
  • added: function createStaticRenderer({ ppr, isStaticGeneration, postponed, streamOptions: { signal, onError, onPostpone, onHeaders, maxHeadersLength, nonce, bootstrapScripts, formState } }: Options): Renderer
  • added: function getDynamicDataPostponedState(): DynamicDataPostponedState
  • added: function getDynamicHTMLPostponedState(data: object): DynamicHTMLPostponedState
  • added: interface Renderer
  • added: method Renderer.render(children: JSX.Element): Promise<RenderResult>
  • added: method ServerRenderer.render(children: JSX.Element): Promise<RenderResult>
  • added: method VoidRenderer.render(_children: JSX.Element): Promise<RenderResult>
  • added: type PostponedState = DynamicDataPostponedState | DynamicHTMLPostponedState
  • added: function stripFlightHeaders(headers: IncomingHttpHeaders): void
  • removed: property RenderOptsPartial.serverActionsBodySizeLimit?: SizeLimit
  • removed: property RenderOptsPartial.supportsDynamicHTML: boolean
  • removed: type ChildProp = { current: React.ReactNode | null; segment: Segment }
  • changed: property RenderOptsPartial.clientReferenceManifest?: ClientReferenceManifest → property RenderOptsPartial.clientReferenceManifest?: DeepReadonly<ClientReferenceManifest>
  • changed: property RenderOptsPartial.nextFontManifest?: NextFontManifest → property RenderOptsPartial.nextFontManifest?: DeepReadonly<NextFontManifest>
  • changed: type DynamicParamTypes = 'catchall' | 'optional-catchall' | 'dynamic' → type DynamicParamTypes = 'catchall' | 'catchall-intercepted' | 'optional-catchall' | 'dynamic' | 'dynamic-intercepted'
  • changed: type FlightDataPath = any[] | [...FlightSegmentPath[], Segment, FlightRouterState, React.ReactNode | null, React.ReactNode | null] → type FlightDataPath = any[] | [...FlightSegmentPath[], Segment, FlightRouterState, CacheNodeSeedData, React.ReactNode | null]
  • changed: type FlightRouterState = [segment: Segment, parallelRoutes: { [parallelRouterKey: string]: FlightRouterState }, url?: string | null, refresh?: 'refetch' | null, isRootLayout?: boolean] → type FlightRouterState = [segment: Segment, parallelRoutes: { [parallelRouterKey: string]: FlightRouterState }, url?: string | null, refresh?: 'refetch' | 'refresh' | null, isRootLayou…
  • added: property RenderOptsPartial.builtInWaitUntil?: WaitUntil
  • added: property RenderOptsPartial.enableTainting?: boolean
  • added: property RenderOptsPartial.experimental: { ppr: boolean; missingSuspenseWithCSRBailout: boolean; swrDelta: SwrDelta | undefined }
  • added: property RenderOptsPartial.isDebugPPRSkeleton?: boolean
  • added: property RenderOptsPartial.isStaticGeneration?: boolean
  • added: property RenderOptsPartial.postponed?: string
  • added: property RenderOptsPartial.serverActions?: { bodySizeLimit?: SizeLimit; allowedOrigins?: string[] }
  • added: property RenderOptsPartial.supportsDynamicResponse: boolean
  • added: property RenderOptsPartial.trailingSlash: boolean
  • added: type CacheNodeSeedData = [segment: Segment, parallelRoutes: { [parallelRouterKey: string]: CacheNodeSeedData | null }, node: React.ReactNode | null, loading: LoadingModuleData]
  • removed: function useFlightResponse(writable: WritableStream<Uint8Array>, flightStream: ReadableStream<Uint8Array>, clientReferenceManifest: ClientReferenceManifest, flightResponseRef: FlightResponseRef, formState: null | any, nonce?: string): Promise<JSX.Element>
  • added: function createInlinedDataReadableStream(flightStream: ReadableStream<Uint8Array>, nonce: string | undefined, formState: unknown | null): ReadableStream<Uint8Array>
  • added: function flightRenderComplete(flightStream: ReadableStream<Uint8Array>): Promise<void>
  • added: function useFlightStream<T>(flightStream: BinaryStreamOf<T>, clientReferenceManifest: DeepReadonly<ClientReferenceManifest>, nonce?: string): Promise<T>
  • changed: function walkTreeWithFlightRouterState({ createSegmentPath, loaderTreeToFilter, parentParams, isFirst, flightRouterState, parentRendered, rscPayloadHead, injectedCSS, injectedFontPreloadTags, rootLayoutIncluded, asNotFound, metadataOutlet, ctx }: { createSegmentPath: CreateSegmentPath; loaderTreeToFilter: LoaderTree; parentParams: { [key: string]: string | string[] }; isFirst: boolean; flightRout… → function walkTreeWithFlightRouterState({ createSegmentPath, loaderTreeToFilter, parentParams, isFirst, flightRouterState, parentRendered, rscPayloadHead, injectedCSS, injectedJS, injectedFontPreloadTags, rootLayoutIncluded, asNotFound, metadataOutlet, ctx }: { createSegmentPath: CreateSegmentPath; loaderTreeToFilter: LoaderTree; parentParams: { [key: string]: string | string[] }; isFirst: boolean…
  • changed: type StaticGenerationContext = { urlPathname: string; renderOpts: { originalPathname?: string; incrementalCache?: IncrementalCache; supportsDynamicHTML: boolean; isRevalidate?: boolean; isOn… → type StaticGenerationContext = { urlPathname: string; requestEndedState?: { ended?: boolean }; renderOpts: { incrementalCache?: IncrementalCache; isOnDemandRevalidate?: boolean; fetchCache?:…
  • removed: abstract method BaseNextRequest.parseBody(limit: string | number): Promise<any>
  • changed: type FetchMetrics = Array<{ url: string; idx: number; end: number; start: number; method: string; status: number; cacheReason: string; cacheStatus: 'hit' | 'miss' | 'skip' }> → type FetchMetrics = Array<FetchMetric>
  • added: abstract property BaseNextRequest.fetchMetrics?: FetchMetric[]
  • added: type FetchMetric = { url: string; idx: number; end: number; start: number; method: string; status: number; cacheReason: string; cacheStatus: 'hit' | 'miss' | 'skip' }
  • removed: method NodeNextRequest.parseBody(limit: SizeLimit): Promise<any>
  • added: property NodeNextRequest.fetchMetrics?: FetchMetric[]
  • changed: constructor WebNextRequest(request: Request) → constructor WebNextRequest(request: NextRequestHint)
  • removed: protected abstract method Server.getHasAppDir(dev: boolean): boolean
  • removed: protected method Server.handleCatchallMiddlewareRequest(_req: BaseNextRequest, _res: BaseNextResponse, _parsedUrl: NextUrlWithParsedQuery): Promise<{ finished: boolean }>
  • removed: protected method Server.handleCatchallRenderRequest(_req: BaseNextRequest, _res: BaseNextResponse, _parsedUrl: NextUrlWithParsedQuery): Promise<{ finished: boolean }>
  • removed: protected method Server.handleNextDataRequest(req: BaseNextRequest, res: BaseNextResponse, parsedUrl: NextUrlWithParsedQuery): Promise<{ finished: boolean }>
  • removed: protected method Server.handleNextImageRequest(_req: BaseNextRequest, _res: BaseNextResponse, _parsedUrl: NextUrlWithParsedQuery): Promise<{ finished: boolean }>
  • removed: protected method Server.stripInternalHeaders(req: BaseNextRequest): void
  • removed: protected readonly property Server.hasAppDir: boolean
  • changed: call BaseRequestHandler(req: BaseNextRequest, res: BaseNextResponse, parsedUrl?: NextUrlWithParsedQuery | undefined): Promise<void> → call BaseRequestHandler(req: BaseNextRequest, res: BaseNextResponse, parsedUrl?: NextUrlWithParsedQuery | undefined): Promise<void> | void
  • changed: protected abstract method Server.findPageComponents(params: { page: string; query: NextParsedUrlQuery; params: Params; isAppPath: boolean; sriEnabled?: boolean; appPaths?: ReadonlyArray<string> | null; shouldEnsure?: boolean }): Promise<FindComponentsResult | null> → protected abstract method Server.findPageComponents(params: { page: string; query: NextParsedUrlQuery; params: Params; isAppPath: boolean; sriEnabled?: boolean; appPaths?: ReadonlyArray<string> | null; shouldEnsure?: boolean; url?: string }): Promise<FindComponentsResult | null>
  • changed: protected abstract method Server.getFallbackErrorComponents(): Promise<LoadComponentsReturnType | null> → protected abstract method Server.getFallbackErrorComponents(url?: string): Promise<LoadComponentsReturnType | null>
  • changed: protected abstract method Server.getFontManifest(): FontManifest | undefined → protected abstract method Server.getFontManifest(): DeepReadonly<FontManifest> | undefined
  • changed: protected abstract method Server.getIncrementalCache(options: { requestHeaders: Record<string, undefined | string | string[]>; requestProtocol: 'http' | 'https' }): import('./lib/incremental-cache').IncrementalCache → protected abstract method Server.getIncrementalCache(options: { requestHeaders: Record<string, undefined | string | string[]>; requestProtocol: 'http' | 'https' }): Promise<import('./lib/incremental-cache').IncrementalCache>
  • changed: protected abstract method Server.getNextFontManifest(): NextFontManifest | undefined → protected abstract method Server.getNextFontManifest(): DeepReadonly<NextFontManifest> | undefined
  • changed: protected abstract method Server.getPrerenderManifest(): PrerenderManifest → protected abstract method Server.getPrerenderManifest(): DeepReadonly<PrerenderManifest>
  • changed: protected abstract method Server.sendRenderResult(req: BaseNextRequest, res: BaseNextResponse, options: { result: RenderResult; type: 'html' | 'json' | 'rsc'; generateEtags: boolean; poweredByHeader: boolean; options?: PayloadOptions }): Promise<void> → protected abstract method Server.sendRenderResult(req: BaseNextRequest, res: BaseNextResponse, options: { result: RenderResult; type: 'html' | 'json' | 'rsc'; generateEtags: boolean; poweredByHeader: boolean; revalidate?: Revalidate; swrDelta?: SwrDelta }): Promise<void>
  • changed: protected property Server.nextFontManifest?: NextFontManifest → protected property Server.nextFontManifest?: DeepReadonly<NextFontManifest>
  • changed: protected readonly property Server.clientReferenceManifest?: ClientReferenceManifest → protected readonly property Server.clientReferenceManifest?: DeepReadonly<ClientReferenceManifest>
  • added: function isRSCRequestCheck(req: IncomingMessage | BaseNextRequest): boolean
  • added: protected abstract method Server.getEnabledDirectories(dev: boolean): NextEnabledDirectories
  • added: protected abstract method Server.getinterceptionRoutePatterns(): RegExp[]
  • added: protected method Server.getWaitUntil(): WaitUntil | undefined
  • added: protected method Server.pathCouldBeIntercepted(resolvedPathname: string): boolean
  • added: protected method Server.setVaryHeader(req: BaseNextRequest, res: BaseNextResponse, isAppPath: boolean, resolvedPathname: string): void
  • added: protected property Server.handleCatchallMiddlewareRequest: RouteHandler
  • added: protected property Server.handleCatchallRenderRequest: RouteHandler
  • added: protected property Server.handleNextImageRequest: RouteHandler
  • added: protected property Server.interceptionRoutePatterns: RegExp[]
  • added: protected readonly property Server.enabledDirectories: NextEnabledDirectories
  • added: protected readonly property Server.experimentalTestProxy?: boolean
  • added: protected readonly property Server.normalizers: { readonly action: ActionPathnameNormalizer | undefined; readonly postponed: PostponedPathnameNormalizer | undefined; readonly rsc: RSCPathnameNormalizer | undefined; readonly prefetchRSC: PrefetchRSCPathnameNormalizer | undefined; readonly data: NextDataPathnameNormalizer | undefined }
  • added: type NextEnabledDirectories = { readonly pages: boolean; readonly app: boolean }
  • added: type RouteHandler = (req: BaseNextRequest, res: BaseNextResponse, parsedUrl: NextUrlWithParsedQuery) => PromiseLike<boolean> | boolean
  • added: function getClientComponentLoaderMetrics(options?: { reset?: boolean }): { clientComponentLoadStart: number; clientComponentLoadTimes: number; clientComponentLoadCount: number } | undefined
  • added: function wrapClientComponentLoader(ComponentMod: any): any
  • removed: property ExperimentalConfig.deploymentId?: string
  • removed: property ExperimentalConfig.logging?: { level?: 'verbose'; fullUrl?: boolean }
  • removed: property ExperimentalConfig.serverActionsBodySizeLimit?: SizeLimit
  • removed: property ExperimentalConfig.useDeploymentId?: boolean
  • removed: property ExperimentalConfig.useDeploymentIdServerActions?: boolean
  • removed: type TurboRule = TurboLoaderItem[] | { loaders: TurboLoaderItem[]; as: string }
  • changed: property ExperimentalConfig.serverActions?: boolean → property ExperimentalConfig.serverActions?: { bodySizeLimit?: SizeLimit; allowedOrigins?: string[] }
  • changed: property ExperimentalTurboOptions.rules?: Record<string, TurboRule> → property ExperimentalTurboOptions.rules?: Record<string, TurboRuleConfigItemOrShortcut>
  • changed: property I18NConfig.domains?: DomainLocale[] → property I18NConfig.domains?: I18NDomains
  • changed: property NextConfig.compiler?: { reactRemoveProperties?: boolean | { properties?: string[] }; relay?: { src: string; artifactDirectory?: string; language?: 'typescript' | 'javascript' | 'flow'; eagerEsModules?: boolean }; removeConsole?: boolean | { exclude?: string[] }; styledComponents?: boolean | StyledComponentsConfig; emotion?: boolean | EmotionConfig } → property NextConfig.compiler?: { reactRemoveProperties?: boolean | { properties?: string[] }; relay?: { src: string; artifactDirectory?: string; language?: 'typescript' | 'javascript' | 'flow'; eagerEsModules?: boolean }; removeConsole?: boolean | { exclude?: string[] }; styledComponents?: boolean | StyledComponentsConfig; emotion?: boolean | EmotionConfig; styledJsx?: boolean | { useLightningcss…
  • changed: property NextConfig.crossOrigin?: false | 'anonymous' | 'use-credentials' → property NextConfig.crossOrigin?: 'anonymous' | 'use-credentials'
  • changed: property NextConfig.env?: Record<string, string> → property NextConfig.env?: Record<string, string | undefined>
  • added: property ExperimentalConfig.cssChunking?: 'strict' | 'loose'
  • added: property ExperimentalConfig.linkNoTouchStart?: boolean
  • added: property ExperimentalConfig.missingSuspenseWithCSRBailout?: boolean
  • added: property ExperimentalConfig.multiZoneDraftMode?: boolean
  • added: property ExperimentalConfig.parallelServerBuildTraces?: boolean
  • added: property ExperimentalConfig.parallelServerCompiles?: boolean
  • added: property ExperimentalConfig.preloadEntriesOnStart?: boolean
  • added: property ExperimentalConfig.prerenderEarlyExit?: boolean
  • added: property ExperimentalConfig.staleTimes?: { dynamic?: number; static?: number }
  • added: property ExperimentalConfig.staticWorkerRequestDeduping?: boolean
  • added: property ExperimentalConfig.swrDelta?: SwrDelta
  • added: property ExperimentalConfig.taint?: boolean
  • added: property ExperimentalConfig.testProxy?: boolean
  • added: property ExperimentalConfig.useEarlyImport?: boolean
  • added: property ExperimentalConfig.useLightningcss?: boolean
  • added: property ExperimentalConfig.useWasmBinary?: boolean
  • added: property ExperimentalTurboOptions.resolveExtensions?: string[]
  • added: property ExperimentalTurboOptions.useSwcCss?: boolean
  • added: property NextConfig.allowedDevOrigins?: string[]
  • added: property NextConfig.cacheHandler?: string | undefined
  • added: property NextConfig.cacheMaxMemorySize?: number
  • added: property NextConfig.deploymentId?: string
  • added: property NextConfig.logging?: { fetches?: { fullUrl?: boolean } }
  • added: type I18NDomains = DomainLocale[]
  • added: type TurboRuleConfigItem = TurboRuleConfigItemOptions | { [condition: string]: TurboRuleConfigItem } | false
  • added: type TurboRuleConfigItemOptions = { loaders: TurboLoaderItem[]; as?: string }
  • added: type TurboRuleConfigItemOrShortcut = TurboLoaderItem[] | TurboRuleConfigItem
  • added: function extractModulesFromTurbopackMessage(data: TurbopackUpdate | TurbopackUpdate[]): string[]
  • added: function createHotReloaderTurbopack(opts: SetupOpts, serverFields: ServerFields, distDir: string): Promise<NextJsHotReloaderInterface>
  • removed: property TurbopackConnectedAction.type: HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_CONNECTED
  • removed: property TurbopackMessageAction.type: HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_MESSAGE
  • changed: method NextJsHotReloaderInterface.ensurePage({ page, clientOnly, appPaths, definition, isApp }: { page: string; clientOnly: boolean; appPaths?: ReadonlyArray<string> | null; isApp?: boolean; definition: RouteDefinition | undefined }): Promise<void> → method NextJsHotReloaderInterface.ensurePage({ page, clientOnly, appPaths, definition, isApp, url }: { page: string; clientOnly: boolean; appPaths?: ReadonlyArray<string> | null; isApp?: boolean; definition: RouteDefinition | undefined; url?: string }): Promise<void>
  • changed: method NextJsHotReloaderInterface.invalidate({ reloadAfterInvalidation }: { reloadAfterInvalidation: boolean }): void → method NextJsHotReloaderInterface.invalidate({ reloadAfterInvalidation }: { reloadAfterInvalidation: boolean }): Promise<void> | void
  • added: interface CompilationError
  • added: interface SyncAction
  • added: member HMR_ACTIONS_SENT_TO_BROWSER.CLIENT_CHANGES = 'clientChanges'
  • added: property CompilationError.details?: string
  • added: property CompilationError.message: string
  • added: property CompilationError.moduleName?: string
  • added: property CompilationError.moduleTrace?: Array<{ moduleName?: string }>
  • added: property CompilationError.stack?: string
  • added: property SyncAction.action: HMR_ACTIONS_SENT_TO_BROWSER.SYNC
  • added: property SyncAction.errors: ReadonlyArray<CompilationError>
  • added: property SyncAction.hash: string
  • added: property SyncAction.updatedModules?: ReadonlyArray<string>
  • added: property SyncAction.versionInfo: VersionInfo
  • added: property SyncAction.warnings: ReadonlyArray<CompilationError>
  • added: property TurbopackConnectedAction.action: HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_CONNECTED
  • added: property TurbopackMessageAction.action: HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_MESSAGE
  • added: type TurbopackMsgToBrowser = { type: HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_MESSAGE; data: any } | { type: HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_CONNECTED }
  • removed: constructor HotReloader(dir: string, { config, pagesDir, distDir, buildId, previewProps, rewrites, appDir, telemetry }: { config: NextConfigComplete; pagesDir?: string; distDir: string; buildId: string; previewProps: __ApiPreviewProps; rewrites: CustomRoutes['rewrites']; appDir?: string; telemetry: Telemetry })
  • removed: default class HotReloader implements NextJsHotReloaderInterface
  • removed: method HotReloader.buildFallbackError(): Promise<void>
  • removed: method HotReloader.clearHmrServerError(): void
  • removed: method HotReloader.ensurePage({ page, clientOnly, appPaths, definition, isApp }: { page: string; clientOnly: boolean; appPaths?: ReadonlyArray<string> | null; isApp?: boolean; definition?: RouteDefinition }): Promise<void>
  • removed: method HotReloader.getCompilationErrors(page: string): Promise<any[]>
  • removed: method HotReloader.invalidate({ reloadAfterInvalidation }?: { reloadAfterInvalidation: boolean }): void | '' | undefined
  • removed: method HotReloader.onHMR(req: IncomingMessage, _socket: Duplex, head: Buffer): void
  • removed: method HotReloader.run(req: IncomingMessage, res: ServerResponse, parsedUrl: UrlObject): Promise<{ finished?: true }>
  • removed: method HotReloader.send(action: HMR_ACTION_TYPES): void
  • removed: method HotReloader.setHmrServerError(error: Error | null): void
  • removed: method HotReloader.start(): Promise<void>
  • removed: method HotReloader.stop(): Promise<void>
  • removed: property HotReloader.activeWebpackConfigs?: Array<UnwrapPromise<ReturnType<typeof getBaseWebpackConfig>>>
  • removed: property HotReloader.edgeServerStats: webpack.Stats | null
  • removed: property HotReloader.multiCompiler?: webpack.MultiCompiler
  • removed: property HotReloader.serverStats: webpack.Stats | null
  • removed: protected method HotReloader.refreshServerComponents(): Promise<void>
  • added: constructor HotReloaderWebpack(dir: string, { config, pagesDir, distDir, buildId, encryptionKey, previewProps, rewrites, appDir, telemetry }: { config: NextConfigComplete; pagesDir?: string; distDir: string; buildId: string; encryptionKey: string; previewProps: __ApiPreviewProps; rewrites: CustomRoutes['rewrites']; appDir?: string; telemetry: Telemetry })
  • added: default class HotReloaderWebpack implements NextJsHotReloaderInterface
  • added: function getVersionInfo(enabled: boolean): Promise<VersionInfo>
  • added: method HotReloaderWebpack.buildFallbackError(): Promise<void>
  • added: method HotReloaderWebpack.clearHmrServerError(): void
  • added: method HotReloaderWebpack.ensurePage({ page, clientOnly, appPaths, definition, isApp, url }: { page: string; clientOnly: boolean; appPaths?: ReadonlyArray<string> | null; isApp?: boolean; definition?: RouteDefinition; url?: string }): Promise<void>
  • added: method HotReloaderWebpack.getCompilationErrors(page: string): Promise<Error[]>
  • added: method HotReloaderWebpack.invalidate({ reloadAfterInvalidation }?: { reloadAfterInvalidation: boolean }): void
  • added: method HotReloaderWebpack.onHMR(req: IncomingMessage, _socket: Duplex, head: Buffer): void
  • added: method HotReloaderWebpack.run(req: IncomingMessage, res: ServerResponse, parsedUrl: UrlObject): Promise<{ finished?: true }>
  • added: method HotReloaderWebpack.send(action: HMR_ACTION_TYPES): void
  • added: method HotReloaderWebpack.setHmrServerError(error: Error | null): void
  • added: method HotReloaderWebpack.start(): Promise<void>
  • added: method HotReloaderWebpack.stop(): Promise<void>
  • added: property HotReloaderWebpack.activeWebpackConfigs?: Array<UnwrapPromise<ReturnType<typeof getBaseWebpackConfig>>>
  • added: property HotReloaderWebpack.edgeServerStats: webpack.Stats | null
  • added: property HotReloaderWebpack.multiCompiler?: webpack.MultiCompiler
  • added: property HotReloaderWebpack.serverStats: webpack.Stats | null
  • added: protected method HotReloaderWebpack.refreshServerComponents(): Promise<void>
  • added: const FAST_REFRESH_RUNTIME_RELOAD = 'Fast Refresh had to perform a full reload due to a runtime error.'
  • changed: protected method DevServer.ensureEdgeFunction({ page, appPaths }: { page: string; appPaths: string[] | null }): Promise<void> → protected method DevServer.ensureEdgeFunction({ page, appPaths, url }: { page: string; appPaths: string[] | null; url: string }): Promise<void>
  • changed: protected method DevServer.ensureMiddleware(): Promise<void> → protected method DevServer.ensureMiddleware(url: string): Promise<void>
  • changed: protected method DevServer.ensurePage(opts: { page: string; clientOnly: boolean; appPaths?: ReadonlyArray<string> | null; definition: RouteDefinition | undefined }): Promise<void> → protected method DevServer.ensurePage(opts: { page: string; clientOnly: boolean; appPaths?: ReadonlyArray<string> | null; definition: RouteDefinition | undefined; url?: string }): Promise<void>
  • changed: protected method DevServer.findPageComponents({ page, query, params, isAppPath, appPaths, shouldEnsure }: { page: string; query: NextParsedUrlQuery; params: Params; isAppPath: boolean; sriEnabled?: boolean; appPaths?: ReadonlyArray<string> | null; shouldEnsure: boolean }): Promise<FindComponentsResult | null> → protected method DevServer.findPageComponents({ page, query, params, isAppPath, appPaths, shouldEnsure, url }: { page: string; query: NextParsedUrlQuery; params: Params; isAppPath: boolean; sriEnabled?: boolean; appPaths?: ReadonlyArray<string> | null; shouldEnsure: boolean; url?: string }): Promise<FindComponentsResult | null>
  • changed: protected method DevServer.getFallbackErrorComponents(): Promise<LoadComponentsReturnType | null> → protected method DevServer.getFallbackErrorComponents(url?: string): Promise<LoadComponentsReturnType | null>
  • added: property Options.startServerSpan: Span
  • added: protected method DevServer.getinterceptionRoutePatterns(): RegExp[]
  • changed: function getEntryKey(compilerType: CompilerNameValues, pageBundleType: 'app' | 'pages' | 'root', page: string): string → function getEntryKey(compilerType: CompilerNameValues, pageBundleType: PAGE_TYPES, page: string): string
  • changed: function onDemandEntryHandler({ hotReloader, maxInactiveAge, multiCompiler, nextConfig, pagesBufferLength, pagesDir, rootDir, appDir }: { hotReloader: HotReloader; maxInactiveAge: number; multiCompiler: webpack.MultiCompiler; nextConfig: NextConfigComplete; pagesBufferLength: number; pagesDir?: string; rootDir: string; appDir?: string }): { ensurePage({ page, clientOnly, appPaths, definition, isA… → function onDemandEntryHandler({ hotReloader, maxInactiveAge, multiCompiler, nextConfig, pagesBufferLength, pagesDir, rootDir, appDir }: { hotReloader: HotReloaderWebpack; maxInactiveAge: number; multiCompiler: webpack.MultiCompiler; nextConfig: NextConfigComplete; pagesBufferLength: number; pagesDir?: string; rootDir: string; appDir?: string }): { ensurePage({ page, appPaths, definition, isApp, u…
  • added: function findPagePathData(rootDir: string, page: string, extensions: string[], pagesDir?: string, appDir?: string): Promise<PagePathData>
  • changed: function loadStaticPaths({ distDir, pathname, config, httpAgentOptions, locales, defaultLocale, isAppPath, page, isrFlushToDisk, fetchCacheKeyPrefix, maxMemoryCacheSize, requestHeaders, incrementalCacheHandlerPath }: { distDir: string; pathname: string; config: RuntimeConfig; httpAgentOptions: NextConfigComplete['httpAgentOptions']; locales?: string[]; defaultLocale?: string; isAppPath: boolean;… → function loadStaticPaths({ dir, distDir, pathname, config, httpAgentOptions, locales, defaultLocale, isAppPath, page, isrFlushToDisk, fetchCacheKeyPrefix, maxMemoryCacheSize, requestHeaders, cacheHandler, ppr }: { dir: string; distDir: string; pathname: string; config: RuntimeConfig; httpAgentOptions: NextConfigComplete['httpAgentOptions']; locales?: string[]; defaultLocale?: string; isAppPath: b…
  • added: class AssetMapper
  • added: function formatIssue(issue: Issue): string
  • added: function getTurbopackJsConfig(dir: string, nextConfig: NextConfigComplete): Promise<{ compilerOptions: Record<string, any> }>
  • added: function handleEntrypoints({ entrypoints, currentEntrypoints, currentEntryIssues, manifestLoader, nextConfig, rewrites, logErrors, dev }: { entrypoints: TurbopackResult<RawEntrypoints>; currentEntrypoints: Entrypoints; currentEntryIssues: EntryIssuesMap; manifestLoader: TurbopackManifestLoader; nextConfig: NextConfigComplete; rewrites: SetupOpts['fsChecker']['rewrites']; logErrors: boolean; dev?:…
  • added: function handlePagesErrorRoute({ currentEntryIssues, entrypoints, manifestLoader, rewrites, logErrors, hooks }: { currentEntryIssues: EntryIssuesMap; entrypoints: Entrypoints; manifestLoader: TurbopackManifestLoader; rewrites: SetupOpts['fsChecker']['rewrites']; logErrors: boolean; hooks?: HandleRouteTypeHooks }): Promise<void>
  • added: function handleRouteType({ dev, page, pathname, route, currentEntryIssues, entrypoints, manifestLoader, readyIds, rewrites, hooks, logErrors }: { dev: boolean; page: string; pathname: string; route: PageRoute | AppRoute; currentEntryIssues: EntryIssuesMap; entrypoints: Entrypoints; manifestLoader: TurbopackManifestLoader; rewrites: SetupOpts['fsChecker']['rewrites']; logErrors: boolean; readyIds?…
  • added: function hasEntrypointForKey(entrypoints: Entrypoints, key: EntryKey, assetMapper: AssetMapper | undefined): boolean
  • added: function isRelevantWarning(issue: Issue): boolean
  • added: function isWellKnownError(issue: Issue): boolean
  • added: function msToNs(ms: number): bigint
  • added: function printNonFatalIssue(issue: Issue): void
  • added: function processIssues(currentEntryIssues: EntryIssuesMap, key: EntryKey, result: TurbopackResult, throwIssue: boolean, logErrors: boolean): void
  • added: function processTopLevelIssues(currentTopLevelIssues: TopLevelIssuesMap, result: TurbopackResult): void
  • added: function renderStyledStringToErrorAnsi(string: StyledString): string
  • added: method AssetMapper.delete(key: EntryKey): void
  • added: method AssetMapper.getAssetPathsByKey(key: EntryKey): string[]
  • added: method AssetMapper.getKeysByAsset(path: string): EntryKey[]
  • added: method AssetMapper.keys(): IterableIterator<EntryKey>
  • added: method AssetMapper.setPathsForKey(key: EntryKey, assetPaths: string[]): void
  • added: type ChangeSubscriptions = Map<EntryKey, Promise<AsyncIterableIterator<TurbopackResult>>>
  • added: type ClientState = { clientIssues: EntryIssuesMap; hmrPayloads: Map<string, HMR_ACTION_TYPES>; turbopackUpdates: TurbopackUpdate[]; subscriptions: Map<string, AsyncIterator<any>>…
  • added: type ClientStateMap = WeakMap<ws, ClientState>
  • added: type EntryIssuesMap = Map<EntryKey, IssuesMap>
  • added: type HandleWrittenEndpoint = (key: EntryKey, result: TurbopackResult<WrittenEndpoint>) => void
  • added: type IssuesMap = Map<IssueKey, Issue>
  • added: type ReadyIds = Set<string>
  • added: type SendHmr = (id: string, payload: HMR_ACTION_TYPES) => void
  • added: type StartBuilding = (id: string, requestUrl: string | undefined, forceRebuild: boolean) => () => void
  • added: type StartChangeSubscription = (key: EntryKey, includeIssues: boolean, endpoint: Endpoint, makePayload: (change: TurbopackResult) => Promise<HMR_ACTION_TYPES> | HMR_ACTION_TYPES | void) => P…
  • added: type StopChangeSubscription = (key: EntryKey) => Promise<void>
  • added: type TopLevelIssuesMap = IssuesMap
  • added: function getEntryKey(type: EntryKeyType, side: EntryKeySide, page: string): EntryKey
  • added: function splitEntryKey(key: EntryKey): { type: EntryKeyType; side: EntryKeySide; page: string }
  • added: type EntryKey = `{"type":"${EntryKeyType}","side":"${EntryKeyType}","page":"${string}"}`
  • added: type EntryKeySide = 'client' | 'server'
  • added: type EntryKeyType = 'app' | 'pages' | 'root' | 'assets'
  • added: class TurbopackManifestLoader
  • added: constructor TurbopackManifestLoader({ distDir, buildId, encryptionKey }: { buildId: string; distDir: string; encryptionKey: string })
  • added: method TurbopackManifestLoader.delete(key: EntryKey): void
  • added: method TurbopackManifestLoader.deleteMiddlewareManifest(key: EntryKey): boolean
  • added: method TurbopackManifestLoader.getMiddlewareManifest(key: EntryKey): TurbopackMiddlewareManifest | undefined
  • added: method TurbopackManifestLoader.loadActionManifest(pageName: string): Promise<void>
  • added: method TurbopackManifestLoader.loadAppBuildManifest(pageName: string): Promise<void>
  • added: method TurbopackManifestLoader.loadAppPathsManifest(pageName: string): Promise<void>
  • added: method TurbopackManifestLoader.loadBuildManifest(pageName: string, type?: 'app' | 'pages'): Promise<void>
  • added: method TurbopackManifestLoader.loadFontManifest(pageName: string, type?: 'app' | 'pages'): Promise<void>
  • added: method TurbopackManifestLoader.loadLoadableManifest(pageName: string, type?: 'app' | 'pages'): Promise<void>
  • added: method TurbopackManifestLoader.loadMiddlewareManifest(pageName: string, type: 'pages' | 'app' | 'middleware' | 'instrumentation'): Promise<void>
  • added: method TurbopackManifestLoader.loadPagesManifest(pageName: string): Promise<void>
  • added: method TurbopackManifestLoader.writeManifests({ rewrites, pageEntrypoints }: { rewrites: SetupOpts['fsChecker']['rewrites']; pageEntrypoints: PageEntrypoints }): Promise<void>
  • added: interface GlobalEntrypoints
  • added: property GlobalEntrypoints.app: Endpoint | undefined
  • added: property GlobalEntrypoints.document: Endpoint | undefined
  • added: property GlobalEntrypoints.error: Endpoint | undefined
  • added: property GlobalEntrypoints.instrumentation: Instrumentation | undefined
  • added: property GlobalEntrypoints.middleware: Middleware | undefined
  • added: type AppEntrypoints = Map<string, AppRoute>
  • added: type AppRoute = { type: 'app-page'; htmlEndpoint: Endpoint; rscEndpoint: Endpoint } | { type: 'app-route'; endpoint: Endpoint }
  • added: type Entrypoints = { global: GlobalEntrypoints; page: PageEntrypoints; app: AppEntrypoints }
  • added: type PageEntrypoints = Map<string, PageRoute>
  • added: type PageRoute = { type: 'page'; htmlEndpoint: Endpoint; dataEndpoint: Endpoint } | { type: 'page-api'; endpoint: Endpoint }
  • removed: function getFontDefinitionFromManifest(url: string, manifest: FontManifest): string
  • changed: constructor AbsoluteFilenameNormalizer(dir: string, extensions: ReadonlyArray<string>, pagesType: 'pages' | 'app' | 'root') → constructor AbsoluteFilenameNormalizer(dir: string, extensions: ReadonlyArray<string>, pagesType: PAGE_TYPES)
  • added: class ActionPathnameNormalizer extends SuffixPathnameNormalizer implements PathnameNormalizer
  • added: constructor ActionPathnameNormalizer()
  • added: class BasePathPathnameNormalizer extends PrefixPathnameNormalizer implements PathnameNormalizer
  • added: constructor BasePathPathnameNormalizer(basePath: string)
  • added: class NextDataPathnameNormalizer implements PathnameNormalizer
  • added: constructor NextDataPathnameNormalizer(buildID: string)
  • added: method NextDataPathnameNormalizer.match(pathname: string): boolean
  • added: method NextDataPathnameNormalizer.normalize(pathname: string, matched?: boolean): string
  • added: interface PathnameNormalizer extends Normalizer
  • added: method PathnameNormalizer.match(pathname: string): boolean
  • added: method PathnameNormalizer.normalize(pathname: string, matched?: boolean): string
  • added: class PostponedPathnameNormalizer extends PrefixPathnameNormalizer implements PathnameNormalizer
  • added: constructor PostponedPathnameNormalizer()
  • added: method PostponedPathnameNormalizer.normalize(pathname: string, matched?: boolean): string
  • added: class PrefetchRSCPathnameNormalizer extends SuffixPathnameNormalizer implements PathnameNormalizer
  • added: constructor PrefetchRSCPathnameNormalizer()
  • added: class PrefixPathnameNormalizer implements Normalizer
  • added: constructor PrefixPathnameNormalizer(prefix: string)
  • added: method PrefixPathnameNormalizer.match(pathname: string): boolean
  • added: method PrefixPathnameNormalizer.normalize(pathname: string, matched?: boolean): string
  • added: class RSCPathnameNormalizer extends SuffixPathnameNormalizer implements PathnameNormalizer
  • added: constructor RSCPathnameNormalizer()
  • added: class SuffixPathnameNormalizer implements Normalizer
  • added: constructor SuffixPathnameNormalizer(suffix: string)
  • added: method SuffixPathnameNormalizer.match(pathname: string): boolean
  • added: method SuffixPathnameNormalizer.normalize(pathname: string, matched?: boolean): string
  • changed: method RouteEnsurer.ensure(match: RouteMatch): Promise<void> → method RouteEnsurer.ensure(match: RouteMatch, pathname: string): Promise<void>
  • changed: function cleanURL(urlString: string): string → function cleanURL(url: string | URL): URL
  • removed: function getNonStaticMethods(handlers: AppRouteHandlers): ReadonlyArray<HTTP_METHOD> | false
  • removed: function proxyRequest(request: NextRequest, { dynamic }: Pick<AppRouteUserlandModule, 'dynamic'>, hooks: { readonly serverHooks: typeof ServerHooks; readonly headerHooks: typeof HeaderHooks; readonly staticGenerationBailout: typeof StaticGenerationBailout }): NextRequest
  • removed: readonly property AppRouteRouteModule.headerHooks: typeof headerHooks
  • removed: readonly property AppRouteRouteModule.staticGenerationBailout: import('../../../../client/components/static-generation-bailout').StaticGenerationBailout
  • removed: static method AppRouteRouteModule.is(route: RouteModule): route is AppRouteRouteModule
  • changed: property AppRouteRouteHandlerContext.prerenderManifest: PrerenderManifest → property AppRouteRouteHandlerContext.prerenderManifest: DeepReadonly<PrerenderManifest>
  • added: function hasNonStaticMethods(handlers: AppRouteHandlers): boolean
  • added: function isAppPageRouteModule(routeModule: RouteModule): routeModule is AppPageRouteModule
  • added: function isAppRouteRouteModule(routeModule: RouteModule): routeModule is AppRouteRouteModule
  • added: function isPagesAPIRouteModule(routeModule: RouteModule): routeModule is PagesAPIRouteModule
  • added: function isPagesRouteModule(routeModule: RouteModule): routeModule is PagesRouteModule
  • changed: function detectContentType(buffer: Buffer): 'image/svg+xml' | 'image/avif' | 'image/webp' | 'image/jpeg' | 'image/png' | 'image/x-icon' | 'image/gif' | null → function detectContentType(buffer: Buffer): Promise<string | null>
  • changed: function getMaxAge(str: string | null): number → function getMaxAge(str: string | null | undefined): number
  • changed: function imageOptimizer(_req: IncomingMessage, _res: ServerResponse, paramsResult: ImageParamsResult, nextConfig: NextConfigComplete, isDev: boolean | undefined, handleRequest: (newReq: IncomingMessage, newRes: ServerResponse, newParsedUrl?: NextUrlWithParsedQuery) => Promise<void>): Promise<{ buffer: Buffer; contentType: string; maxAge: number }> → function imageOptimizer(imageUpstream: ImageUpstream, paramsResult: Pick<ImageParamsResult, 'href' | 'width' | 'quality' | 'mimeType'>, nextConfig: { output: NextConfigComplete['output']; images: Pick<NextConfigComplete['images'], 'dangerouslyAllowSVG' | 'minimumCacheTTL'> }, isDev: boolean | undefined): Promise<{ buffer: Buffer; contentType: string; maxAge: number }>
  • added: function fetchExternalImage(href: string): Promise<ImageUpstream>
  • added: function fetchInternalImage(href: string, _req: IncomingMessage, _res: ServerResponse, handleRequest: (newReq: IncomingMessage, newRes: ServerResponse, newParsedUrl?: NextUrlWithParsedQuery) => Promise<void>): Promise<ImageUpstream>
  • removed: function stripInternalHeaders(headers: IncomingHttpHeaders): void
  • added: function getStartServerInfo(dir: string, dev: boolean): Promise<{ envInfo?: string[]; expFeatureInfo?: string[] }>
  • added: function logStartInfo({ networkUrl, appUrl, envInfo, expFeatureInfo, maxExperimentalFeatures }: { networkUrl: string | null; appUrl: string | null; envInfo?: string[]; expFeatureInfo?: string[]; maxExperimentalFeatures?: number }): void
  • added: function createLocalRequestContext(): RunnableBuiltinRequestContext
  • added: function getBuiltinRequestContext(): BuiltinRequestContextValue | undefined
  • added: type BuiltinRequestContext = { get(): BuiltinRequestContextValue | undefined }
  • added: type BuiltinRequestContextValue = { waitUntil?: WaitUntil }
  • added: type RunnableBuiltinRequestContext = BuiltinRequestContext & { run<T>(value: BuiltinRequestContextValue, callback: () => T): T }
  • added: type WaitUntil = (promise: Promise<any>) => void
  • added: function cloneResponse(original: Response): [Response, Response]
  • added: function createDedupeFetch(originalFetch: typeof fetch): (resource: URL | RequestInfo, options?: RequestInit) => Promise<Response>
  • changed: method DevBundlerService.getFallbackErrorComponents(): Promise<void> → method DevBundlerService.getFallbackErrorComponents(url?: string): Promise<void>
  • changed: function createValidFileMatcher(pageExtensions: string[], appDirPath: string | undefined): { isPageFile: (filePath: string) => boolean; isAppRouterPage: (filePath: string) => boolean; isMetadataFile: (filePath: string) => boolean; isRootNotFound: (filePath: string) => boolean } → function createValidFileMatcher(pageExtensions: PageExtensions, appDirPath: string | undefined): { isPageFile: (filePath: string) => boolean; isAppRouterPage: (filePath: string) => boolean; isMetadataFile: (filePath: string) => boolean; isRootNotFound: (filePath: string) => boolean }
  • changed: function findPageFile(pagesDir: string, normalizedPagePath: string, pageExtensions: string[], isAppDir: boolean): Promise<string | null> → function findPageFile(pagesDir: string, normalizedPagePath: string, pageExtensions: PageExtensions, isAppDir: boolean): Promise<string | null>
  • changed: method FetchCache.get(key: string, ctx: { tags?: string[]; softTags?: string[]; fetchCache?: boolean; fetchUrl?: string; fetchIdx?: number }): Promise<CacheHandlerValue | null> → method FetchCache.get(...args: Parameters<CacheHandler['get']>): Promise<CacheHandlerValue | null>
  • changed: method FetchCache.revalidateTag(tag: string): Promise<void> → method FetchCache.revalidateTag(...args: Parameters<CacheHandler['revalidateTag']>): Promise<void>
  • changed: method FetchCache.set(key: string, data: CacheHandlerValue['value'], { fetchCache, fetchIdx, fetchUrl, tags }: { tags?: string[]; fetchCache?: boolean; fetchUrl?: string; fetchIdx?: number }): Promise<void> → method FetchCache.set(...args: Parameters<CacheHandler['set']>): Promise<void>
  • added: method FetchCache.resetRequestCache(): void
  • changed: method FileSystemCache.get(key: string, { tags, softTags, fetchCache }?: { tags?: string[]; softTags?: string[]; fetchCache?: boolean }): Promise<CacheHandlerValue | null> → method FileSystemCache.get(...args: Parameters<CacheHandler['get']>): Promise<CacheHandlerValue | null>
  • changed: method FileSystemCache.revalidateTag(tag: string): Promise<void> → method FileSystemCache.revalidateTag(...args: Parameters<CacheHandler['revalidateTag']>): Promise<void>
  • changed: method FileSystemCache.set(key: string, data: CacheHandlerValue['value'], ctx: { tags?: string[] }): Promise<void> → method FileSystemCache.set(...args: Parameters<CacheHandler['set']>): Promise<void>
  • added: method FileSystemCache.resetRequestCache(): void
  • changed: class IncrementalCache → class IncrementalCache implements IncrementalCacheType
  • changed: constructor IncrementalCache({ fs, dev, appDir, flushToDisk, fetchCache, minimalMode, serverDistDir, requestHeaders, requestProtocol, maxMemoryCacheSize, getPrerenderManifest, fetchCacheKeyPrefix, CurCacheHandler, allowedRevalidateHeaderKeys }: { fs?: CacheFs; dev: boolean; appDir?: boolean; fetchCache?: boolean; minimalMode?: boolean; serverDistDir?: string; flushToDisk?: boolean; requestProtoco… → constructor IncrementalCache({ fs, dev, appDir, pagesDir, flushToDisk, fetchCache, minimalMode, serverDistDir, requestHeaders, requestProtocol, maxMemoryCacheSize, getPrerenderManifest, fetchCacheKeyPrefix, CurCacheHandler, allowedRevalidateHeaderKeys, experimental }: { fs?: CacheFs; dev: boolean; appDir?: boolean; pagesDir?: boolean; fetchCache?: boolean; minimalMode?: boolean; serverDistDir?: s…
  • changed: method CacheHandler.revalidateTag(_tag: string): Promise<void> → method CacheHandler.revalidateTag(..._args: Parameters<IncrementalCache['revalidateTag']>): Promise<void>
  • changed: method IncrementalCache.get(cacheKey: string, ctx?: { fetchCache?: boolean; revalidate?: number | false; fetchUrl?: string; fetchIdx?: number; tags?: string[]; softTags?: string[] }): Promise<IncrementalCacheEntry | null> → method IncrementalCache.get(cacheKey: string, ctx?: { kindHint?: IncrementalCacheKindHint; revalidate?: number | false; fetchUrl?: string; fetchIdx?: number; tags?: string[]; softTags?: string[] }): Promise<IncrementalCacheEntry | null>
  • changed: method IncrementalCache.revalidateTag(tag: string): Promise<any> → method IncrementalCache.revalidateTag(tags: string | string[]): Promise<void>
  • changed: property IncrementalCache.allowedRevalidateHeaderKeys?: string[] → readonly property IncrementalCache.allowedRevalidateHeaderKeys?: string[]
  • changed: property IncrementalCache.cacheHandler?: CacheHandler → readonly property IncrementalCache.cacheHandler?: CacheHandler
  • changed: property IncrementalCache.dev?: boolean → readonly property IncrementalCache.dev?: boolean
  • changed: property IncrementalCache.fetchCacheKeyPrefix?: string → readonly property IncrementalCache.fetchCacheKeyPrefix?: string
  • changed: property IncrementalCache.isOnDemandRevalidate?: boolean → readonly property IncrementalCache.isOnDemandRevalidate?: boolean
  • changed: property IncrementalCache.minimalMode?: boolean → readonly property IncrementalCache.minimalMode?: boolean
  • changed: property IncrementalCache.prerenderManifest: PrerenderManifest → readonly property IncrementalCache.prerenderManifest: DeepReadonly<PrerenderManifest>
  • changed: property IncrementalCache.requestHeaders: Record<string, undefined | string | string[]> → readonly property IncrementalCache.requestHeaders: Record<string, undefined | string | string[]>
  • changed: property IncrementalCache.requestProtocol?: 'http' | 'https' → readonly property IncrementalCache.requestProtocol?: 'http' | 'https'
  • changed: property IncrementalCache.revalidatedTags?: string[] → readonly property IncrementalCache.revalidatedTags?: string[]
  • added: method CacheHandler.resetRequestCache(): void
  • added: method IncrementalCache.resetRequestCache(): void
  • added: property CacheHandlerContext._pagesDir: boolean
  • added: property CacheHandlerContext.experimental: { ppr: boolean }
  • added: readonly property IncrementalCache.disableForTestmode?: boolean
  • added: readonly property IncrementalCache.hasCustomCacheHandler: boolean
  • changed: constructor SharedRevalidateTimings(prerenderManifest: Pick<PrerenderManifest, 'routes'>) → constructor SharedRevalidateTimings(prerenderManifest: DeepReadonly<Pick<PrerenderManifest, 'routes'>>)
  • removed: function checkIsNodeDebugging(): boolean | 'brk'
  • changed: function addImplicitTags(staticGenerationStore: ReturnType<StaticGenerationAsyncStorage['getStore']>): string[] → function addImplicitTags(staticGenerationStore: StaticGenerationStore): string[]
  • changed: function patchFetch({ serverHooks, staticGenerationAsyncStorage }: PatchableModule): void → function patchFetch(options: PatchableModule): void
  • added: function validateRevalidate(revalidateVal: unknown, pathname: string): undefined | number | false
  • changed: function initialize(opts: Parameters<typeof initializeImpl>[0]): Promise<{ requestHandler: ReturnType<InstanceType<typeof NextServer>['getRequestHandler']>; upgradeHandler: ReturnType<InstanceType<typeof NextServer>['getUpgradeHandler']> }> → function initialize(opts: Parameters<typeof initializeImpl>[0]): Promise<{ requestHandler: ReturnType<InstanceType<typeof NextServer>['getRequestHandler']>; upgradeHandler: ReturnType<InstanceType<typeof NextServer>['getUpgradeHandler']>; app: NextServer }>
  • added: function clearAllModuleContexts(): Promise<void> | undefined
  • added: function formatRevalidate({ revalidate, swrDelta }: { revalidate: Revalidate; swrDelta?: SwrDelta }): string
  • added: type SwrDelta = number
  • removed: function makeResolver(dir: string, nextConfig: NextConfigComplete, middleware: MiddlewareConfig, { hostname, port }: Partial<ServerAddress>): Promise<(req: IncomingMessage, res: ServerResponse) => Promise<RouteResult | void>>
  • changed: function initialize(opts: { dir: string; port: number; dev: boolean; server?: import('http').Server; minimalMode?: boolean; hostname?: string; isNodeDebugging: boolean; keepAliveTimeout?: number; customServer?: boolean; experimentalTestProxy?: boolean; experimentalHttpsServer?: boolean }): Promise<[WorkerRequestHandler, WorkerUpgradeHandler]> → function initialize(opts: { dir: string; port: number; dev: boolean; server?: import('http').Server; minimalMode?: boolean; hostname?: string; isNodeDebugging: boolean; keepAliveTimeout?: number; customServer?: boolean; experimentalHttpsServer?: boolean; startServerSpan?: Span }): Promise<[WorkerRequestHandler, WorkerUpgradeHandler, NextServer]>
  • added: const blockCrossSite: (req: IncomingMessage, res: ServerResponse | Duplex, allowedDevOrigins: string[] | undefined, hostname: string | undefined) => boolean
  • changed: function setupFsCheck(opts: { dir: string; dev: boolean; minimalMode?: boolean; config: NextConfigComplete; addDevWatcherCallback?: (arg: (files: Map<string, { timestamp: number }>) => void) => void }): Promise<{ headers: (import('../../../lib/load-custom-routes').Header & { match: PatchMatcher; check?: boolean | undefined })[]; rewrites: { beforeFiles: (import('../../../lib/load-custom-routes').… → function setupFsCheck(opts: { dir: string; dev: boolean; minimalMode?: boolean; config: NextConfigComplete; addDevWatcherCallback?: (arg: (files: Map<string, { timestamp: number }>) => void) => void }): Promise<{ headers: (import('../../../lib/load-custom-routes').Header & { match: PatchMatcher; check?: boolean | undefined })[]; rewrites: { beforeFiles: (Rewrite & { match: PatchMatcher; check?: b…
  • added: function isPostpone(error: any): boolean
  • changed: function getResolveRoutes(fsChecker: UnwrapPromise<ReturnType<typeof import('./filesystem').setupFsCheck>>, config: NextConfigComplete, opts: Parameters<typeof initialize>[0], renderServer: RenderServer, renderServerOpts: Parameters<RenderServer['initialize']>[0], ensureMiddleware?: () => Promise<void>): ({ req, res, isUpgradeReq, invokedOutputs }: { req: IncomingMessage; res: ServerResponse; isU… → function getResolveRoutes(fsChecker: UnwrapPromise<ReturnType<typeof import('./filesystem').setupFsCheck>>, config: NextConfigComplete, opts: Parameters<typeof initialize>[0], renderServer: RenderServer, renderServerOpts: Parameters<RenderServer['initialize']>[0], ensureMiddleware?: (url?: string) => Promise<void>): ({ req, res, isUpgradeReq, invokedOutputs }: { req: IncomingMessage; res: ServerR…
  • changed: function setupDevBundler(opts: SetupOpts): Promise<{ serverFields: { actualMiddlewareFile?: string | undefined; actualInstrumentationHookFile?: string | undefined; appPathRoutes?: Record<string, string | string[]> | undefined; middleware?: { page: string; match: MiddlewareRouteMatch; matchers?: MiddlewareMatcher[] | undefined } | undefined; hasAppNotFound?: boolean | undefined; interceptionRoutes… → function setupDevBundler(opts: SetupOpts): Promise<{ serverFields: ServerFields; hotReloader: NextJsHotReloaderInterface; requestHandler: (req: IncomingMessage, res: ServerResponse<IncomingMessage>) => Promise<{ finished: boolean }>; logErrorWithOriginalStack: (err: unknown, type?: 'warning' | 'uncaughtException' | 'unhandledRejection' | 'app-dir' | undefined) => Promise<void>; ensureMiddleware(r…
  • added: function propagateServerField(opts: SetupOpts, field: PropagateToWorkersField, args: any): Promise<void>
  • added: type ServerFields = { actualMiddlewareFile?: string | undefined; actualInstrumentationHookFile?: string | undefined; appPathRoutes?: Record<string, string | string[]>; middleware?…
  • added: type SetupOpts = { renderServer: LazyRenderServerInstance; dir: string; turbo?: boolean; appDir?: string; pagesDir?: string; telemetry: Telemetry; isCustomServer?: boolean; fsC…
  • removed: const scheduleOnNextTick: <T = void>(cb: ScheduledFn<T>) => void
  • removed: type ScheduledFn<T = void> = () => T | PromiseLike<T>
  • removed: type SchedulerFn<T = void> = (cb: ScheduledFn<T>) => void
  • added: function getIsServerAction(req: IncomingMessage | BaseNextRequest | NextRequest): boolean
  • added: function getServerActionRequestMetadata(req: IncomingMessage | BaseNextRequest | NextRequest): { actionId: string | null; isURLEncodedAction: boolean; isMultipartAction: boolean; isFetchAction: boolean; isServerAction: boolean }
  • removed: property StartServerOptions.envInfo?: string[]
  • removed: property StartServerOptions.expFeatureInfo?: string[]
  • removed: property StartServerOptions.isExperimentalTestProxy?: boolean
  • changed: function getRequestHandlers({ dir, port, isDev, server, hostname, minimalMode, isNodeDebugging, keepAliveTimeout, experimentalTestProxy, experimentalHttpsServer }: { dir: string; port: number; isDev: boolean; server?: import('http').Server; hostname: string; minimalMode?: boolean; isNodeDebugging?: boolean; keepAliveTimeout?: number; experimentalTestProxy?: boolean; experimentalHttpsServer?: bool… → function getRequestHandlers({ dir, port, isDev, server, hostname, minimalMode, isNodeDebugging, keepAliveTimeout, experimentalHttpsServer }: { dir: string; port: number; isDev: boolean; server?: import('http').Server; hostname?: string; minimalMode?: boolean; isNodeDebugging?: boolean; keepAliveTimeout?: number; experimentalHttpsServer?: boolean }): ReturnType<typeof initialize>
  • changed: function startServer({ dir, port, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, isExperimentalTestProxy, selfSignedCertificate, envInfo, expFeatureInfo }: StartServerOptions): Promise<void> → function startServer(serverOptions: StartServerOptions): Promise<void>
  • changed: property StartServerOptions.hostname: string → property StartServerOptions.hostname?: string
  • changed: const NextVanillaSpanAllowlist: (BaseServerSpan | RenderSpan | AppRenderSpan | NodeSpan | AppRouteRouteHandlersSpan | ResolveMetadataSpan)[] → const NextVanillaSpanAllowlist: (BaseServerSpan | NextNodeServerSpan | RenderSpan | AppRenderSpan | NodeSpan | AppRouteRouteHandlersSpan | ResolveMetadataSpan | MiddlewareSpan)[]
  • added: const LogSpanAllowList: NextNodeServerSpan[]
  • added: enum MiddlewareSpan
  • added: member MiddlewareSpan.execute = 'Middleware.execute'
  • added: member NextNodeServerSpan.clientComponentLoading = 'NextNodeServer.clientComponentLoading'
  • added: member NextNodeServerSpan.createComponentTree = 'NextNodeServer.createComponentTree'
  • added: member NextNodeServerSpan.getLayoutOrPageModule = 'NextNodeServer.getLayoutOrPageModule'
  • added: member NextNodeServerSpan.startResponse = 'NextNodeServer.startResponse'
  • added: member ResolveMetadataSpan.generateViewport = 'ResolveMetadata.generateViewport'
  • removed: function getPort(args: arg.Result<arg.Spec>): number
  • added: function checkNodeDebugType(): string | undefined
  • added: function getMaxOldSpaceSize(): number | undefined
  • added: function myParseInt(value: string): number
  • changed: function loadManifestWithRetries<T>(manifestPath: string, attempts?: number): Promise<T> → function loadManifestWithRetries<T extends object>(manifestPath: string, attempts?: number): Promise<DeepReadonly<T>>
  • changed: type LoadComponentsReturnType<NextModule = any> = { Component: NextComponentType; pageConfig: PageConfig; buildManifest: BuildManifest; subresourceIntegrityManifest?: Record<string, string>; reactLoadableManif… → type LoadComponentsReturnType<NextModule = any> = { Component: NextComponentType; pageConfig: PageConfig; buildManifest: DeepReadonly<BuildManifest>; subresourceIntegrityManifest?: DeepReadonly<Record<string,…
  • added: function evalManifestWithRetries<T extends object>(manifestPath: string, attempts?: number): Promise<DeepReadonly<T>>
  • added: index LoadableManifest[k: string]: { id: string | number; files: string[] }
  • added: interface LoadableManifest
  • changed: function clearManifestCache(path: string): boolean → function clearManifestCache(path: string, cache?: Map<string, unknown>): boolean
  • changed: function loadManifest(path: string, shouldCache?: boolean): any → function loadManifest<T extends object>(path: string, shouldCache: false): T
  • added: function evalManifest<T extends object>(path: string, shouldCache: false): T
  • added: function evalManifest<T extends object>(path: string, shouldCache?: boolean, cache?: Map<string, unknown>): DeepReadonly<T>
  • added: function evalManifest<T extends object>(path: string, shouldCache?: true, cache?: Map<string, unknown>): DeepReadonly<T>
  • added: function loadManifest<T extends object>(path: string, shouldCache?: boolean, cache?: Map<string, unknown>): DeepReadonly<T>
  • added: function loadManifest<T extends object>(path: string, shouldCache?: true, cache?: Map<string, unknown>): DeepReadonly<T>
  • removed: protected method NextNodeServer.getHasAppDir(dev: boolean): boolean
  • removed: protected method NextNodeServer.handleCatchallMiddlewareRequest(req: BaseNextRequest, res: BaseNextResponse, parsed: NextUrlWithParsedQuery): Promise<{ finished: boolean }>
  • removed: protected method NextNodeServer.handleCatchallRenderRequest(req: BaseNextRequest, res: BaseNextResponse, parsedUrl: NextUrlWithParsedQuery): Promise<{ finished: boolean }>
  • removed: protected method NextNodeServer.handleNextImageRequest(req: BaseNextRequest, res: BaseNextResponse, parsedUrl: NextUrlWithParsedQuery): Promise<{ finished: boolean }>
  • changed: call NodeRequestHandler(req: IncomingMessage | BaseNextRequest, res: ServerResponse | BaseNextResponse, parsedUrl?: NextUrlWithParsedQuery | undefined): Promise<void> → call NodeRequestHandler(req: IncomingMessage | BaseNextRequest, res: ServerResponse | BaseNextResponse, parsedUrl?: NextUrlWithParsedQuery | undefined): Promise<void> | void
  • changed: protected method NextNodeServer.ensureEdgeFunction(_params: { page: string; appPaths: string[] | null }): Promise<void> → protected method NextNodeServer.ensureEdgeFunction(_params: { page: string; appPaths: string[] | null; url?: string }): Promise<void>
  • changed: protected method NextNodeServer.ensureMiddleware(): Promise<void> → protected method NextNodeServer.ensureMiddleware(_url?: string): Promise<void>
  • changed: protected method NextNodeServer.ensurePage(_opts: { page: string; clientOnly: boolean; appPaths?: ReadonlyArray<string> | null; match?: RouteMatch }): Promise<void> → protected method NextNodeServer.ensurePage(_opts: { page: string; clientOnly: boolean; appPaths?: ReadonlyArray<string> | null; match?: RouteMatch; url?: string }): Promise<void>
  • changed: protected method NextNodeServer.findPageComponents({ page, query, params, isAppPath }: { page: string; query: NextParsedUrlQuery; params: Params; isAppPath: boolean; sriEnabled?: boolean; appPaths?: ReadonlyArray<string> | null; shouldEnsure: boolean }): Promise<FindComponentsResult | null> → protected method NextNodeServer.findPageComponents({ page, query, params, isAppPath, url }: { page: string; query: NextParsedUrlQuery; params: Params; isAppPath: boolean; sriEnabled?: boolean; appPaths?: ReadonlyArray<string> | null; shouldEnsure: boolean; url?: string }): Promise<FindComponentsResult | null>
  • changed: protected method NextNodeServer.getEdgeFunctionInfo(params: { page: string; middleware: boolean }): { name: string; paths: string[]; wasm: { filePath: string; name: string }[]; assets: { filePath: string; name: string }[] } | null → protected method NextNodeServer.getEdgeFunctionInfo(params: { page: string; middleware: boolean }): { name: string; paths: string[]; wasm: { filePath: string; name: string }[]; env: { [key: string]: string }; assets?: { filePath: string; name: string }[] } | null
  • changed: protected method NextNodeServer.getFallbackErrorComponents(): Promise<LoadComponentsReturnType | null> → protected method NextNodeServer.getFallbackErrorComponents(_url?: string): Promise<LoadComponentsReturnType | null>
  • changed: protected method NextNodeServer.getIncrementalCache({ requestHeaders, requestProtocol }: { requestHeaders: IncrementalCache['requestHeaders']; requestProtocol: 'http' | 'https' }): IncrementalCache → protected method NextNodeServer.getIncrementalCache({ requestHeaders, requestProtocol }: { requestHeaders: IncrementalCache['requestHeaders']; requestProtocol: 'http' | 'https' }): Promise<IncrementalCache>
  • changed: protected method NextNodeServer.getNextFontManifest(): any → protected method NextNodeServer.getNextFontManifest(): NextFontManifest | undefined
  • changed: protected method NextNodeServer.renderErrorToResponseImpl(ctx: RequestContext, err: Error | null): Promise<{ type: 'html' | 'json' | 'rsc'; body: RenderResult; revalidateOptions?: any } | null> → protected method NextNodeServer.renderErrorToResponseImpl(ctx: RequestContext, err: Error | null): Promise<{ type: 'html' | 'json' | 'rsc'; body: RenderResult<import('./render-result').RenderResultMetadata>; revalidate?: Revalidate | undefined } | null>
  • changed: protected method NextNodeServer.renderPageComponent(ctx: RequestContext, bubbleNoFallback: boolean): Promise<false | { type: 'html' | 'json' | 'rsc'; body: RenderResult; revalidateOptions?: any } | null> → protected method NextNodeServer.renderPageComponent(ctx: RequestContext, bubbleNoFallback: boolean): Promise<false | { type: 'html' | 'json' | 'rsc'; body: RenderResult<import('./render-result').RenderResultMetadata>; revalidate?: Revalidate | undefined } | null>
  • changed: protected method NextNodeServer.runEdgeFunction(params: { req: BaseNextRequest | NodeNextRequest; res: BaseNextResponse | NodeNextResponse; query: ParsedUrlQuery; params: Params | undefined; page: string; appPaths: string[] | null; match?: RouteMatch; onWarning?: (warning: Error) => void }): Promise<FetchEventResult | null> → protected method NextNodeServer.runEdgeFunction(params: { req: BaseNextRequest | NodeNextRequest; res: BaseNextResponse | NodeNextResponse; query: ParsedUrlQuery; params: Params | undefined; page: string; appPaths: string[] | null; match?: RouteMatch; onError?: (err: unknown) => void; onWarning?: (warning: Error) => void }): Promise<FetchEventResult | null>
  • changed: protected method NextNodeServer.sendRenderResult(req: NodeNextRequest, res: NodeNextResponse, options: { result: RenderResult; type: 'html' | 'json'; generateEtags: boolean; poweredByHeader: boolean; options?: PayloadOptions | undefined }): Promise<void> → protected method NextNodeServer.sendRenderResult(req: NodeNextRequest, res: NodeNextResponse, options: { result: RenderResult; type: 'html' | 'json'; generateEtags: boolean; poweredByHeader: boolean; revalidate: Revalidate | undefined; swrDelta: SwrDelta | undefined }): Promise<void>
  • added: method NextNodeServer.unstable_preloadEntries(): Promise<void>
  • added: protected method NextNodeServer.getEnabledDirectories(dev: boolean): NextEnabledDirectories
  • added: protected method NextNodeServer.getinterceptionRoutePatterns(): RegExp[]
  • added: protected property NextNodeServer.handleCatchallMiddlewareRequest: RouteHandler
  • added: protected property NextNodeServer.handleCatchallRenderRequest: RouteHandler
  • added: protected property NextNodeServer.handleNextImageRequest: RouteHandler
  • added: class ImageResponse extends Response
  • added: constructor ImageResponse(...args: ConstructorParameters<OgModule['ImageResponse']>)
  • added: static property ImageResponse.displayName: string
  • removed: function pipeReadable(readable: ReadableStream<Uint8Array>, writable: PipeTarget<Uint8Array>, waitUntilForEnd?: Promise<void>): Promise<void>
  • removed: interface PipeTarget<R = any>
  • removed: property PipeTarget.closed?: boolean
  • removed: property PipeTarget.end: () => unknown
  • removed: property PipeTarget.flush?: () => unknown
  • removed: property PipeTarget.off: (event: 'close', cb: () => void) => void
  • removed: property PipeTarget.on: (event: 'close', cb: () => void) => void
  • removed: property PipeTarget.write: (chunk: R) => unknown
  • added: function pipeToNodeResponse(readable: ReadableStream<Uint8Array>, res: ServerResponse, waitUntilForEnd?: Promise<unknown>): Promise<void>
  • removed: method RenderResult.extendMetadata(metadata: RenderResultMetadata): void
  • removed: method RenderResult.pipe(res: PipeTarget<Uint8Array>): Promise<void>
  • changed: constructor RenderResult(response: RenderResultResponse, { contentType, waitUntil, ...metadata }?: { contentType?: ContentTypeOption } & RenderResultMetadata) → constructor RenderResult(response: RenderResultResponse, { contentType, waitUntil, metadata }: RenderResultOptions<Metadata>)
  • changed: default class RenderResult → default class RenderResult<Metadata extends RenderResultMetadata = RenderResultMetadata>
  • changed: method RenderResult.toUnchunkedString(): string → method RenderResult.toUnchunkedString(stream: true): Promise<string>
  • changed: readonly property RenderResult.metadata: RenderResultMetadata → readonly property RenderResult.metadata: Readonly<Metadata>
  • changed: static method RenderResult.fromStatic(value: string): RenderResult → static method RenderResult.fromStatic(value: string): RenderResult<StaticRenderResultMetadata>
  • changed: type RenderResultMetadata = { pageData?: any; revalidate?: Revalidate; staticBailoutInfo?: any; assetQueryString?: string; isNotFound?: boolean; isRedirect?: boolean; fetchMetrics?: Stati… → type RenderResultMetadata = AppPageRenderResultMetadata & PagesRenderResultMetadata & StaticRenderResultMetadata
  • added: method RenderResult.assignMetadata(metadata: Metadata): void
  • added: method RenderResult.chain(readable: ReadableStream<Uint8Array>): void
  • added: method RenderResult.pipeTo(writable: WritableStream<Uint8Array>): Promise<void>
  • added: method RenderResult.pipeToNodeResponse(res: ServerResponse): Promise<void>
  • added: method RenderResult.toUnchunkedString(stream?: false): string
  • added: type AppPageRenderResultMetadata = { flightData?: string; revalidate?: Revalidate; staticBailoutInfo?: { stack?: string; description?: string }; postponed?: string; headers?: OutgoingHttpHeaders…
  • added: type PagesRenderResultMetadata = { pageData?: any; revalidate?: Revalidate; assetQueryString?: string; isNotFound?: boolean; isRedirect?: boolean }
  • added: type RenderResultOptions<Metadata extends RenderResultMetadata = RenderResultMetadata> = { contentType?: ContentTypeOption; waitUntil?: Promise<unknown>; metadata: Metadata }
  • added: type RenderResultResponse = ReadableStream<Uint8Array>[] | ReadableStream<Uint8Array> | string | null
  • added: type StaticRenderResultMetadata = {}
  • removed: property RequestMeta.__NEXT_CLONABLE_BODY?: CloneableBody
  • removed: property RequestMeta.__NEXT_INIT_QUERY?: ParsedUrlQuery
  • removed: property RequestMeta.__NEXT_INIT_URL?: string
  • removed: property RequestMeta.__nextHadTrailingSlash?: boolean
  • removed: property RequestMeta.__nextIsLocaleDomain?: boolean
  • removed: property RequestMeta.__nextStrippedLocale?: boolean
  • removed: property RequestMeta._nextDataNormalizing?: boolean
  • removed: property RequestMeta._nextDidRewrite?: boolean
  • removed: property RequestMeta._nextHadBasePath?: boolean
  • removed: property RequestMeta._nextIncrementalCache?: any
  • removed: property RequestMeta._nextMatch?: RouteMatch
  • removed: property RequestMeta._nextMiddlewareCookie?: string[]
  • removed: property RequestMeta._nextMinimalMode?: boolean
  • removed: property RequestMeta._nextRewroteUrl?: string
  • removed: property RequestMeta._protocol?: string
  • added: property RequestMeta.clonableBody?: CloneableBody
  • added: property RequestMeta.didStripLocale?: boolean
  • added: property RequestMeta.incrementalCache?: any
  • added: property RequestMeta.initProtocol?: string
  • added: property RequestMeta.initQuery?: ParsedUrlQuery
  • added: property RequestMeta.initURL?: string
  • added: property RequestMeta.invokeError?: Error
  • added: property RequestMeta.invokeOutput?: string
  • added: property RequestMeta.invokePath?: string
  • added: property RequestMeta.invokeQuery?: Record<string, undefined | string | string[]>
  • added: property RequestMeta.invokeStatus?: number
  • added: property RequestMeta.isLocaleDomain?: boolean
  • added: property RequestMeta.isPrefetchRSCRequest?: true
  • added: property RequestMeta.isRSCRequest?: true
  • added: property RequestMeta.match?: RouteMatch
  • added: property RequestMeta.middlewareCookie?: string[]
  • added: property RequestMeta.middlewareInvoke?: boolean
  • added: property RequestMeta.notFoundRevalidate?: number | false
  • added: property RequestMeta.onCacheEntry?: (cacheEntry: any, requestMeta: any) => Promise<boolean | void> | boolean | void
  • added: property RequestMeta.postponed?: string
  • added: property RequestMeta.rewroteURL?: string
  • changed: function requireFontManifest(distDir: string): any → function requireFontManifest(distDir: string): FontManifest
  • changed: const defaultOverrides: { 'styled-jsx': any; 'styled-jsx/style': string } → const defaultOverrides: { 'styled-jsx': any; 'styled-jsx/style': string; 'styled-jsx/style.js': string }
  • changed: default class ResponseCache → default class ResponseCache implements ResponseCacheBase
  • changed: method ResponseCache.get(key: string | null, responseGenerator: ResponseGenerator, context: { isOnDemandRevalidate?: boolean; isPrefetch?: boolean; incrementalCache: IncrementalCache }): Promise<ResponseCacheEntry | null> → method ResponseCache.get(key: string | null, responseGenerator: ResponseGenerator, context: { routeKind?: RouteKind; isOnDemandRevalidate?: boolean; isPrefetch?: boolean; incrementalCache: IncrementalCache }): Promise<ResponseCacheEntry | null>
  • changed: method ResponseCacheBase.get(key: string | null, responseGenerator: ResponseGenerator, context: { isOnDemandRevalidate?: boolean; isPrefetch?: boolean; incrementalCache: IncrementalCache }): Promise<ResponseCacheEntry | null> → method ResponseCacheBase.get(key: string | null, responseGenerator: ResponseGenerator, context: { isOnDemandRevalidate?: boolean; isPrefetch?: boolean; incrementalCache: IncrementalCache; routeKind?: RouteKind }): Promise<ResponseCacheEntry | null>
  • changed: property CachedFetchValue.data: { headers: { [k: string]: string }; body: string; url: string; status?: number; tags?: string[] } → property CachedFetchValue.data: { headers: { [k: string]: string }; body: string; url: string; status?: number }
  • changed: property IncrementalCache.get: (key: string, ctx?: { fetchCache?: boolean }) => Promise<IncrementalCacheItem> → property IncrementalCache.get: (key: string, ctx?: { kindHint?: IncrementalCacheKindHint }) => Promise<IncrementalCacheItem>
  • changed: type ResponseGenerator = (hasResolved: boolean, cacheEntry?: IncrementalCacheItem) => Promise<ResponseCacheEntry | null> → type ResponseGenerator = (hasResolved: boolean, previousCacheEntry?: IncrementalCacheItem, isRevalidating?: boolean) => Promise<ResponseCacheEntry | null>
  • added: property CachedFetchValue.tags?: string[]
  • added: type IncrementalCacheKindHint = 'app' | 'pages' | 'fetch'
  • added: function fromResponseCacheEntry(cacheEntry: ResponseCacheEntry): Promise<IncrementalCacheItem>
  • added: function toResponseCacheEntry(response: IncrementalCacheItem): Promise<ResponseCacheEntry | null>
  • added: function sendEtagResponse(req: IncomingMessage, res: ServerResponse, etag: string | undefined): boolean
  • added: function sendRenderResult({ req, res, result, type, generateEtags, poweredByHeader, revalidate, swrDelta }: { req: IncomingMessage; res: ServerResponse; result: RenderResult; type: 'html' | 'json' | 'rsc'; generateEtags: boolean; poweredByHeader: boolean; revalidate: Revalidate | undefined; swrDelta: SwrDelta | undefined }): Promise<void>
  • removed: export { setRevalidateHeaders }
  • removed: function sendEtagResponse(req: IncomingMessage, res: ServerResponse, etag: string | undefined): boolean
  • removed: function sendRenderResult({ req, res, result, type, generateEtags, poweredByHeader, options }: { req: IncomingMessage; res: ServerResponse; result: RenderResult; type: 'html' | 'json' | 'rsc'; generateEtags: boolean; poweredByHeader: boolean; options?: PayloadOptions }): Promise<void>
  • removed: type PayloadOptions = { private: true } | { private: boolean; stateful: true } | { private: boolean; stateful: false; revalidate: number | false }
  • removed: function setRevalidateHeaders(res: ServerResponse | BaseNextResponse, options: PayloadOptions): void
  • changed: function sendResponse(req: BaseNextRequest, res: BaseNextResponse, response: Response, waitUntil?: Promise<any>): Promise<void> → function sendResponse(req: BaseNextRequest, res: BaseNextResponse, response: Response, waitUntil?: Promise<unknown>): Promise<void>
  • removed: function getContentType(extWithoutDot: string): string | null
  • removed: function getExtension(contentType: string): string | null
  • added: const getContentType: (extWithoutDot: string) => string | null
  • added: const getExtension: (contentType: string) => string | null
  • added: function normalizeDynamicRouteParams(params: ParsedUrlQuery, ignoreOptional?: boolean, defaultRouteRegex?: ReturnType<typeof getNamedRouteRegex> | undefined, defaultRouteMatches?: ParsedUrlQuery | undefined): { params: ParsedUrlQuery; hasValidParams: boolean }
  • removed: function decodeText(input: Uint8Array | undefined, textDecoder: TextDecoder): string
  • removed: function encodeText(input: string): Uint8Array
  • added: const ENCODED_TAGS: { readonly OPENING: { readonly HTML: Uint8Array; readonly BODY: Uint8Array }; readonly CLOSED: { readonly HEAD: Uint8Array; readonly BODY: Uint8Array; readonly…
  • removed: const streamToBufferedResult: (renderResult: RenderResult) => Promise<string>
  • removed: function cloneTransformStream(source: TransformStream): TransformStream<any, any>
  • removed: function createInsertedHTMLStream(getServerInsertedHTML: () => Promise<string>): TransformStream<Uint8Array, Uint8Array>
  • changed: function chainStreams<T>(streams: ReadableStream<T>[]): ReadableStream<T> → function chainStreams<T>(...streams: ReadableStream<T>[]): ReadableStream<T>
  • changed: function continueFizzStream(renderStream: ReactReadableStream, { suffix, inlinedDataStream, generateStaticHTML, getServerInsertedHTML, serverInsertedHTMLToHead, validateRootLayout }: { inlinedDataStream?: ReadableStream<Uint8Array>; generateStaticHTML: boolean; getServerInsertedHTML?: () => Promise<string>; serverInsertedHTMLToHead: boolean; validateRootLayout?: { assetPrefix?: string; getTree: (… → function continueFizzStream(renderStream: ReactReadableStream, { suffix, inlinedDataStream, isStaticGeneration, getServerInsertedHTML, serverInsertedHTMLToHead, validateRootLayout }: ContinueStreamOptions): Promise<ReadableStream<Uint8Array>>
  • changed: function createRootLayoutValidatorStream(assetPrefix: string | undefined, getTree: () => FlightRouterState): TransformStream<Uint8Array, Uint8Array> → function createRootLayoutValidatorStream(): TransformStream<Uint8Array, Uint8Array>
  • added: function continueDynamicDataResume(renderStream: ReadableStream<Uint8Array>, { inlinedDataStream }: ContinueDynamicDataResumeOptions): Promise<ReadableStream<Uint8Array>>
  • added: function continueDynamicHTMLResume(renderStream: ReadableStream<Uint8Array>, { inlinedDataStream, getServerInsertedHTML }: ContinueResumeOptions): Promise<ReadableStream<Uint8Array>>
  • added: function continueDynamicPrerender(prerenderStream: ReadableStream<Uint8Array>, { getServerInsertedHTML }: ContinueDynamicPrerenderOptions): Promise<ReadableStream<Uint8Array>>
  • added: function continueStaticPrerender(prerenderStream: ReadableStream<Uint8Array>, { inlinedDataStream, getServerInsertedHTML }: ContinueStaticPrerenderOptions): Promise<ReadableStream<Uint8Array>>
  • added: type ContinueStreamOptions = { inlinedDataStream: ReadableStream<Uint8Array> | undefined; isStaticGeneration: boolean; getServerInsertedHTML: (() => Promise<string>) | undefined; serverIns…
  • added: function indexOfUint8Array(a: Uint8Array, b: Uint8Array): number
  • added: function isEquivalentUint8Arrays(a: Uint8Array, b: Uint8Array): boolean
  • added: function removeFromUint8Array(a: Uint8Array, b: Uint8Array): Uint8Array
  • removed: const ALLOWED_EXPORTS: string[]
  • removed: const ALLOWED_LAYOUT_PROPS: string[]
  • removed: const ALLOWED_PAGE_PROPS: string[]
  • removed: const DISALLOWED_SERVER_REACT_APIS: string[]
  • removed: const LEGACY_CONFIG_EXPORT = 'config'
  • removed: const NEXT_TS_ERRORS: { INVALID_SERVER_API: number; INVALID_ENTRY_EXPORT: number; INVALID_OPTION_VALUE: number; MISPLACED_CLIENT_ENTRY: number; INVALID_PAGE_PROP: number; INVALID_CO…
  • removed: const createTSPlugin: tsModule.server.PluginModuleFactory
  • removed: const clientBoundary: { getSemanticDiagnosticsForExportVariableStatement(source: tsModule.SourceFile, node: tsModule.VariableStatement): tsModule.Diagnostic[]; getSemanticDiagnostic…
  • removed: default clientBoundary
  • removed: const config: { addCompletionsAtPosition(fileName: string, position: number, prior: tsModule.WithMetadata<tsModule.CompletionInfo>): void; getQuickInfoAtPosition(fileName: s…
  • removed: default config
  • removed: const entry: { getCompletionsAtPosition(fileName: string, node: tsModule.FunctionDeclaration, position: number): tsModule.CompletionEntry[]; getSemanticDiagnostics(fileName…
  • removed: default entry
  • removed: const errorEntry: { getSemanticDiagnostics(source: tsModule.SourceFile, isClientEntry: boolean): tsModule.Diagnostic[] }
  • removed: default errorEntry
  • removed: const metadata: { filterCompletionsAtPosition(fileName: string, position: number, _options: any, prior: tsModule.WithMetadata<tsModule.CompletionInfo>): tsModule.WithMetadata<…
  • removed: default metadata
  • removed: const serverLayer: { filterCompletionsAtPosition(entries: tsModule.CompletionEntry[]): tsModule.CompletionEntry[]; hasDisallowedReactAPIDefinition(definitions: readonly tsModule.…
  • removed: default serverLayer
  • removed: const isAppEntryFile: (filePath: string) => boolean
  • removed: const isDefaultFunctionExport: (node: tsModule.Node) => node is tsModule.FunctionDeclaration
  • removed: const isInsideApp: (filePath: string) => boolean
  • removed: const isPageFile: (filePath: string) => boolean
  • removed: const isPositionInsideNode: (position: number, node: tsModule.Node) => boolean
  • removed: function getInfo(): tsModule.server.PluginCreateInfo
  • removed: function getIsClientEntry(fileName: string, throwOnInvalidDirective?: boolean): boolean
  • removed: function getSource(fileName: string): tsModule.SourceFile | undefined
  • removed: function getTs(): typeof tsModule
  • removed: function getTypeChecker(): tsModule.TypeChecker | undefined
  • removed: function init(opts: { ts: TypeScript; info: tsModule.server.PluginCreateInfo }): void
  • removed: function log(message: string): void
  • removed: function removeStringQuotes(str: string): string
  • removed: function cleanAmpPath(pathname: string): string
  • removed: function debounce<T, F extends AnyFunc<T>>(fn: F, ms: number, maxWait?: number): (this: T, ...passedArgs: Parameters<F>) => void
  • removed: function isBlockedPage(page: string): boolean
  • removed: constructor NextWebServer(options: WebServerOptions)
  • removed: default class NextWebServer extends BaseServer<WebServerOptions>
  • removed: protected method NextWebServer.attachRequestMeta(req: WebNextRequest, parsedUrl: NextUrlWithParsedQuery): void
  • removed: protected method NextWebServer.findPageComponents({ page, query, params }: { page: string; query: NextParsedUrlQuery; params: Params | null; isAppPath: boolean }): Promise<{ query: { [x: string]: any; __nextNotFoundSrcPage?: string | undefined; __nextDefaultLocale?: string | undefined; __nextFallback?: 'true' | undefined; __nextLocale?: string | undefined; __nextInferredLocaleFromDefault?: '1' |…
  • removed: protected method NextWebServer.getAppPathsManifest(): { [x: string]: string }
  • removed: protected method NextWebServer.getBuildId(): string
  • removed: protected method NextWebServer.getFallback(): Promise<string>
  • removed: protected method NextWebServer.getFallbackErrorComponents(): Promise<LoadComponentsReturnType | null>
  • removed: protected method NextWebServer.getFilesystemPaths(): Set<string>
  • removed: protected method NextWebServer.getFontManifest(): undefined
  • removed: protected method NextWebServer.getHasAppDir(): boolean
  • removed: protected method NextWebServer.getHasStaticDir(): boolean
  • removed: protected method NextWebServer.getIncrementalCache({ requestHeaders }: { requestHeaders: IncrementalCache['requestHeaders'] }): IncrementalCache
  • removed: protected method NextWebServer.getMiddleware(): MiddlewareRoutingItem | undefined
  • removed: protected method NextWebServer.getNextFontManifest(): import('../build/webpack/plugins/next-font-manifest-plugin').NextFontManifest | undefined
  • removed: protected method NextWebServer.getPagesManifest(): { [x: string]: string }
  • removed: protected method NextWebServer.getPrefetchRsc(): Promise<string | null>
  • removed: protected method NextWebServer.getPrerenderManifest(): PrerenderManifest | { version: any; routes: {}; dynamicRoutes: {}; notFoundRoutes: never[]; preview: any }
  • removed: protected method NextWebServer.getPublicDir(): string
  • removed: protected method NextWebServer.getResponseCache(): WebResponseCache
  • removed: protected method NextWebServer.getRoutesManifest(): NormalizedRouteManifest | undefined
  • removed: protected method NextWebServer.handleApiRequest(): Promise<boolean>
  • removed: protected method NextWebServer.handleCatchallRenderRequest(req: BaseNextRequest, res: BaseNextResponse, parsedUrl: NextUrlWithParsedQuery): Promise<{ finished: boolean }>
  • removed: protected method NextWebServer.handleCompression(): void
  • removed: protected method NextWebServer.handleUpgrade(): Promise<void>
  • removed: protected method NextWebServer.hasPage(page: string): Promise<boolean>
  • removed: protected method NextWebServer.loadEnvConfig(): void
  • removed: protected method NextWebServer.renderHTML(req: WebNextRequest, res: WebNextResponse, pathname: string, query: NextParsedUrlQuery, renderOpts: LoadedRenderOpts): Promise<RenderResult>
  • removed: protected method NextWebServer.runApi(): Promise<boolean>
  • removed: protected method NextWebServer.sendRenderResult(_req: WebNextRequest, res: WebNextResponse, options: { result: RenderResult; type: 'html' | 'json'; generateEtags: boolean; poweredByHeader: boolean; options?: PayloadOptions | undefined }): Promise<void>
  • removed: function adapter(params: AdapterOptions): Promise<FetchEventResult>
  • removed: type AdapterOptions = { handler: NextMiddleware; page: string; request: RequestData; IncrementalCache?: typeof import('../lib/incremental-cache').IncrementalCache }
  • removed: class EdgeRouteModuleWrapper
  • removed: static method EdgeRouteModuleWrapper.wrap(routeModule: AppRouteRouteModule, options?: WrapOptions): (opts: AdapterOptions) => Promise<import('./types').FetchEventResult>
  • removed: class PageSignatureError extends Error
  • removed: class RemovedPageError extends Error
  • removed: class RemovedUAError extends Error
  • removed: constructor PageSignatureError({ page }: { page: string })
  • removed: constructor RemovedPageError()
  • removed: constructor RemovedUAError()
  • removed: export { ImageResponse as default } from '../spec-extension/image-response'
  • removed: export { default as ImageResponse } from './image-response'
  • removed: export { default as NextRequest } from './next-request'
  • removed: export { default as NextResponse } from './next-response'
  • removed: export { default as URLPattern } from './url-pattern'
  • removed: export { default as userAgent } from './user-agent'
  • removed: export { default as userAgentFromString } from './user-agent-from-string'
  • removed: export { NextRequest as default } from '../spec-extension/request'
  • removed: export { NextResponse as default } from '../spec-extension/response'
  • removed: export { revalidatePath as default } from '../spec-extension/revalidate-path'
  • removed: export { revalidateTag as default } from '../spec-extension/revalidate-tag'
  • removed: export { unstable_cache as default } from '../spec-extension/unstable-cache'
  • removed: const GlobalURLPattern: any
  • removed: default GlobalURLPattern
  • removed: export { userAgent as default } from '../spec-extension/user-agent'
  • removed: export { userAgentFromString as default } from '../spec-extension/user-agent'
  • removed: function ensureInstrumentationRegistered(): Promise<void>
  • removed: const HTTP_METHODS: readonly ['GET', 'HEAD', 'OPTIONS', 'POST', 'PUT', 'DELETE', 'PATCH']
  • removed: function isHTTPMethod(maybeMethod: string): maybeMethod is HTTP_METHOD
  • removed: type HTTP_METHOD = (typeof HTTP_METHODS)[number]
  • removed: function internal_getCurrentFunctionWaitUntil(): Promise<void> | null
  • removed: function internal_runWithWaitUntil<T>(fn: () => T): T
  • removed: class NextURL
  • removed: constructor NextURL(input: string | URL, base?: string | URL, opts?: Options)
  • removed: constructor NextURL(input: string | URL, opts?: Options)
  • removed: get NextURL.basePath(): string
  • removed: get NextURL.buildId(): string | undefined
  • removed: get NextURL.defaultLocale(): string | undefined
  • removed: get NextURL.domainLocale(): DomainLocale | undefined
  • removed: get NextURL.hash(): string
  • removed: get NextURL.host(): string
  • removed: get NextURL.hostname(): string
  • removed: get NextURL.href(): string
  • removed: get NextURL.locale(): string
  • removed: get NextURL.origin(): string
  • removed: get NextURL.password(): string
  • removed: get NextURL.pathname(): string
  • removed: get NextURL.port(): string
  • removed: get NextURL.protocol(): string
  • removed: get NextURL.search(): string
  • removed: get NextURL.searchParams(): URLSearchParams
  • removed: get NextURL.username(): string
  • removed: method NextURL.clone(): NextURL
  • removed: method NextURL.toJSON(): string
  • removed: method NextURL.toString(): string
  • removed: set NextURL.basePath(value: string)
  • removed: set NextURL.buildId(buildId: string | undefined)
  • removed: set NextURL.hash(value: string)
  • removed: set NextURL.host(value: string)
  • removed: set NextURL.hostname(value: string)
  • removed: set NextURL.href(url: string)
  • removed: set NextURL.locale(locale: string)
  • removed: set NextURL.password(value: string)
  • removed: set NextURL.pathname(value: string)
  • removed: set NextURL.port(value: string)
  • removed: set NextURL.protocol(value: string)
  • removed: set NextURL.search(value: string)
  • removed: set NextURL.username(value: string)
  • removed: function clearModuleContext(path: string): Promise<void>
  • removed: function getModuleContext(options: ModuleContextOptions): Promise<{ evaluateInContext: (filepath: string) => void; runtime: EdgeRuntime; paths: Map<string, string>; warnedEvals: Set<string> }>
  • removed: function fetchInlineAsset(options: { input: RequestInfo | URL; distDir: string; assets: EdgeFunctionDefinition['assets']; context: { Response: typeof Response; ReadableStream: typeof ReadableStream } }): Promise<Response | undefined>
  • removed: export * from './sandbox'
  • removed: export { clearModuleContext } from './context'
  • removed: const ErrorSource: unique symbol
  • removed: const run: RunnerFn
  • removed: function getRuntimeContext(params: { name: string; onWarning?: any; useCache: boolean; edgeFunctionEntry: any; distDir: string; paths: string[]; incrementalCache?: any }): Promise<EdgeRuntime<any>>
  • removed: class HeadersAdapter extends Headers
  • removed: constructor HeadersAdapter(headers: IncomingHttpHeaders)
  • removed: method HeadersAdapter.append(name: string, value: string): void
  • removed: method HeadersAdapter.delete(name: string): void
  • removed: method HeadersAdapter.entries(): IterableIterator<[string, string]>
  • removed: method HeadersAdapter.forEach(callbackfn: (value: string, name: string, parent: Headers) => void, thisArg?: any): void
  • removed: method HeadersAdapter.get(name: string): string | null
  • removed: method HeadersAdapter.has(name: string): boolean
  • removed: method HeadersAdapter.keys(): IterableIterator<string>
  • removed: method HeadersAdapter.set(name: string, value: string): void
  • removed: method HeadersAdapter.values(): IterableIterator<string>
  • removed: method HeadersAdapter[Symbol.iterator](): IterableIterator<[string, string]>
  • removed: static method HeadersAdapter.from(headers: IncomingHttpHeaders | Headers): Headers
  • removed: static method HeadersAdapter.seal(headers: Headers): ReadonlyHeaders
  • removed: type ReadonlyHeaders = Headers & { append(...args: any[]): void; set(...args: any[]): void; delete(...args: any[]): void }
  • removed: class NextRequestAdapter
  • removed: function signalFromNodeResponse(response: Writable): AbortSignal
  • removed: static method NextRequestAdapter.fromBaseNextRequest(request: BaseNextRequest, signal: AbortSignal): NextRequest
  • removed: static method NextRequestAdapter.fromNodeNextRequest(request: NodeNextRequest, signal: AbortSignal): NextRequest
  • removed: static method NextRequestAdapter.fromWebNextRequest(request: WebNextRequest): NextRequest
  • removed: class ReflectAdapter
  • removed: static method ReflectAdapter.deleteProperty<T extends object>(target: T, prop: string | symbol): boolean
  • removed: static method ReflectAdapter.get<T extends object>(target: T, prop: string | symbol, receiver: unknown): any
  • removed: static method ReflectAdapter.has<T extends object>(target: T, prop: string | symbol): boolean
  • removed: static method ReflectAdapter.set<T extends object>(target: T, prop: string | symbol, value: any, receiver: any): boolean
  • removed: class MutableRequestCookiesAdapter
  • removed: class RequestCookiesAdapter
  • removed: function appendMutableCookies(headers: Headers, mutableCookies: ResponseCookies): boolean
  • removed: function getModifiedCookieValues(cookies: ResponseCookies): ResponseCookie[]
  • removed: static method MutableRequestCookiesAdapter.wrap(cookies: RequestCookies, onUpdateCookies?: (cookies: string[]) => void): ResponseCookies
  • removed: static method RequestCookiesAdapter.seal(cookies: RequestCookies): ReadonlyRequestCookies
  • removed: type ReadonlyRequestCookies = Omit<RequestCookies, 'set' | 'clear' | 'delete'> & Pick<ResponseCookies, 'set' | 'delete'>
  • removed: export { RequestCookies } from 'next/dist/compiled/@edge-runtime/cookies'
  • removed: export { ResponseCookies } from 'next/dist/compiled/@edge-runtime/cookies'
  • removed: class NextFetchEvent extends FetchEvent
  • removed: const waitUntilSymbol: unique symbol
  • removed: constructor NextFetchEvent(params: { request: NextRequest; page: string })
  • removed: get NextFetchEvent.request(): void
  • removed: method NextFetchEvent.respondWith(): void
  • removed: property NextFetchEvent.sourcePage: string
  • removed: class ImageResponse extends Response
  • removed: constructor ImageResponse(...args: ConstructorParameters<typeof import('next/dist/compiled/@vercel/og').ImageResponse>)
  • removed: static property ImageResponse.displayName: string
  • removed: class NextRequest extends Request
  • removed: const INTERNALS: unique symbol
  • removed: constructor NextRequest(input: URL | RequestInfo, init?: RequestInit)
  • removed: get NextRequest.cookies(): RequestCookies
  • removed: get NextRequest.geo(): { city?: string | undefined; country?: string | undefined; region?: string | undefined; latitude?: string | undefined; longitude?: string | undefined } | undefined
  • removed: get NextRequest.ip(): string | undefined
  • removed: get NextRequest.nextUrl(): NextURL
  • removed: get NextRequest.page(): void
  • removed: get NextRequest.ua(): void
  • removed: get NextRequest.url(): string
  • removed: interface RequestInit extends globalThis.RequestInit
  • removed: property NextRequest[INTERNALS]: { cookies: RequestCookies; geo: RequestData['geo']; ip?: string; url: string; nextUrl: NextURL }
  • removed: property RequestInit.geo?: { city?: string; country?: string; region?: string }
  • removed: property RequestInit.ip?: string
  • removed: property RequestInit.nextConfig?: { basePath?: string; i18n?: I18NConfig | null; trailingSlash?: boolean }
  • removed: property RequestInit.signal?: AbortSignal
  • removed: class NextResponse<Body = unknown> extends Response
  • removed: constructor NextResponse(body?: BodyInit | null, init?: ResponseInit)
  • removed: get NextResponse.cookies(): ResponseCookies
  • removed: property NextResponse[INTERNALS]: { cookies: ResponseCookies; url?: NextURL; body?: Body }
  • removed: static method NextResponse.json<JsonBody>(body: JsonBody, init?: ResponseInit): NextResponse<JsonBody>
  • removed: static method NextResponse.next(init?: MiddlewareResponseInit): NextResponse<unknown>
  • removed: static method NextResponse.redirect(url: string | NextURL | URL, init?: number | ResponseInit): NextResponse<unknown>
  • removed: static method NextResponse.rewrite(destination: string | NextURL | URL, init?: MiddlewareResponseInit): NextResponse<unknown>
  • removed: function revalidatePath(originalPath: string, type?: 'layout' | 'page'): void
  • removed: function revalidateTag(tag: string): void
  • removed: function unstable_cache<T extends Callback>(cb: T, keyParts?: string[], options?: { revalidate?: number | false; tags?: string[] }): T
  • removed: function isBot(input: string): boolean
  • removed: function userAgent({ headers }: { headers: Headers }): UserAgent
  • removed: function userAgentFromString(input: string | undefined): UserAgent
  • removed: interface FetchEventResult
  • removed: interface RequestData
  • removed: property FetchEventResult.fetchMetrics?: FetchMetrics
  • removed: property FetchEventResult.response: Response
  • removed: property FetchEventResult.waitUntil: Promise<any>
  • removed: property RequestData.body?: ReadableStream<Uint8Array>
  • removed: property RequestData.geo?: { city?: string; country?: string; region?: string; latitude?: string; longitude?: string }
  • removed: property RequestData.headers: OutgoingHttpHeaders
  • removed: property RequestData.ip?: string
  • removed: property RequestData.method: string
  • removed: property RequestData.nextConfig?: { basePath?: string; i18n?: I18NConfig | null; trailingSlash?: boolean }
  • removed: property RequestData.page?: { name?: string; params?: { [key: string]: string | string[] } }
  • removed: property RequestData.signal: AbortSignal
  • removed: property RequestData.url: string
  • removed: type NextMiddleware = (request: NextRequest, event: NextFetchEvent) => NextMiddlewareResult | Promise<NextMiddlewareResult>
  • removed: type NextMiddlewareResult = NextResponse | Response | null | undefined | void
  • removed: type NodejsRequestData = Omit<RequestData, 'body'> & { body?: CloneableBody }
  • removed: function fromNodeOutgoingHttpHeaders(nodeHeaders: OutgoingHttpHeaders): Headers
  • removed: function splitCookiesString(cookiesString: string): string[]
  • removed: function toNodeOutgoingHttpHeaders(headers: Headers): OutgoingHttpHeaders
  • removed: function validateURL(url: string | URL): string
  • removed: function useAmp(): boolean
  • removed: const AmpStateContext: React.Context<any>
  • removed: function isInAmpMode({ ampFirst, hybrid, hasQuery }?: { ampFirst?: boolean | undefined; hybrid?: boolean | undefined; hasQuery?: boolean | undefined }): boolean
  • removed: default function dynamic<P = {}>(dynamicOptions: DynamicOptions<P> | Loader<P>, options?: DynamicOptions<P>): React.ComponentType<P>
  • removed: type DynamicOptions<P = {}> = LoadableGeneratedOptions & { loading?: (loadingProps: DynamicOptionsLoadingProps) => JSX.Element | null; loader?: Loader<P>; loadableGenerated?: LoadableGenera…
  • removed: type DynamicOptionsLoadingProps = { error?: Error | null; isLoading?: boolean; pastDelay?: boolean; retry?: () => void; timedOut?: boolean }
  • removed: type LoadableComponent<P = {}> = React.ComponentType<P>
  • removed: type LoadableFn<P = {}> = (opts: LoadableOptions<P>) => React.ComponentType<P>
  • removed: type LoadableGeneratedOptions = { webpack?(): any; modules?(): LoaderMap }
  • removed: type LoadableOptions<P = {}> = DynamicOptions<P>
  • removed: type Loader<P = {}> = () => LoaderComponent<P>
  • removed: type LoaderComponent<P = {}> = Promise<React.ComponentType<P> | ComponentModule<P>>
  • removed: type LoaderMap = { [module: string]: () => Loader<any> }
  • removed: const AppRouterContext: React.Context<AppRouterInstance | null>
  • removed: const GlobalLayoutRouterContext: React.Context<{ buildId: string; tree: FlightRouterState; changeByServerResponse: (previousTree: FlightRouterState, flightData: FlightData, overrideCanonicalUr…
  • removed: const LayoutRouterContext: React.Context<{ childNodes: CacheNode['parallelRoutes']; tree: FlightRouterState; url: string }>
  • removed: const TemplateContext: React.Context<React.ReactNode>
  • removed: enum CacheStates
  • removed: interface AppRouterInstance
  • removed: interface NavigateOptions
  • removed: interface PrefetchOptions
  • removed: member CacheStates.DATA_FETCH = 'DATAFETCH'
  • removed: member CacheStates.LAZY_INITIALIZED = 'LAZYINITIALIZED'
  • removed: member CacheStates.READY = 'READY'
  • removed: method AppRouterInstance.back(): void
  • removed: method AppRouterInstance.forward(): void
  • removed: method AppRouterInstance.prefetch(href: string, options?: PrefetchOptions): void
  • removed: method AppRouterInstance.push(href: string, options?: NavigateOptions): void
  • removed: method AppRouterInstance.refresh(): void
  • removed: method AppRouterInstance.replace(href: string, options?: NavigateOptions): void
  • removed: property NavigateOptions.scroll?: boolean
  • removed: property PrefetchOptions.kind: PrefetchKind
  • removed: type CacheNode = { status: CacheStates.DATA_FETCH; data: ThenableRecord<FetchServerResponseResult> | null; head?: React.ReactNode; subTreeData: null; parallelRoutes: Map<string…
  • removed: type ChildSegmentMap = Map<string, CacheNode>
  • removed: const decode: (base64: string) => ArrayBuffer
  • removed: const encode: (arraybuffer: ArrayBuffer) => string
  • removed: class BloomFilter
  • removed: constructor BloomFilter(numItems: number, errorRate: number)
  • removed: method BloomFilter.add(item: string): void
  • removed: method BloomFilter.contains(item: string): boolean
  • removed: method BloomFilter.export(): { numItems: number; errorRate: number; numBits: number; numHashes: number; bitArray: number[] }
  • removed: method BloomFilter.getHashValues(item: string): number[]
  • removed: method BloomFilter.import(data: ReturnType<(typeof this)['export']>): void
  • removed: property BloomFilter.bitArray: number[]
  • removed: property BloomFilter.errorRate: number
  • removed: property BloomFilter.numBits: number
  • removed: property BloomFilter.numHashes: number
  • removed: property BloomFilter.numItems: number
  • removed: static method BloomFilter.from(items: string[], errorRate?: number): BloomFilter
  • removed: const APP_BUILD_MANIFEST = 'app-build-manifest.json'
  • removed: const APP_CLIENT_INTERNALS = 'app-pages-internals'
  • removed: const APP_PATHS_MANIFEST = 'app-paths-manifest.json'
  • removed: const APP_PATH_ROUTES_MANIFEST = 'app-path-routes-manifest.json'
  • removed: const BARREL_OPTIMIZATION_PREFIX = '__barrel_optimize__'
  • removed: const BLOCKED_PAGES: string[]
  • removed: const BUILD_ID_FILE = 'BUILD_ID'
  • removed: const BUILD_MANIFEST = 'build-manifest.json'
  • removed: const CLIENT_PUBLIC_FILES_PATH = 'public'
  • removed: const CLIENT_REFERENCE_MANIFEST = 'client-reference-manifest'
  • removed: const CLIENT_STATIC_FILES_PATH = 'static'
  • removed: const CLIENT_STATIC_FILES_RUNTIME_AMP = 'amp'
  • removed: const CLIENT_STATIC_FILES_RUNTIME_MAIN = 'main'
  • removed: const CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = 'main-app'
  • removed: const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = 'polyfills'
  • removed: const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL: unique symbol
  • removed: const CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = 'react-refresh'
  • removed: const CLIENT_STATIC_FILES_RUNTIME_WEBPACK = 'webpack'
  • removed: const COMPILER_INDEXES: { [compilerKey in CompilerNameValues]: number }
  • removed: const COMPILER_NAMES: { readonly client: 'client'; readonly server: 'server'; readonly edgeServer: 'edge-server' }
  • removed: const CONFIG_FILES: string[]
  • removed: const DEFAULT_SANS_SERIF_FONT: { name: string; xAvgCharWidth: number; azAvgWidth: number; unitsPerEm: number }
  • removed: const DEFAULT_SERIF_FONT: { name: string; xAvgCharWidth: number; azAvgWidth: number; unitsPerEm: number }
  • removed: const DEV_CLIENT_PAGES_MANIFEST = '_devPagesManifest.json'
  • removed: const DEV_MIDDLEWARE_MANIFEST = '_devMiddlewareManifest.json'
  • removed: const EDGE_RUNTIME_WEBPACK = 'edge-runtime-webpack'
  • removed: const EDGE_UNSUPPORTED_NODE_APIS: string[]
  • removed: const EXPORT_DETAIL = 'export-detail.json'
  • removed: const EXPORT_MARKER = 'export-marker.json'
  • removed: const FONT_MANIFEST = 'font-manifest.json'
  • removed: const FUNCTIONS_CONFIG_MANIFEST = 'functions-config-manifest.json'
  • removed: const GOOGLE_FONT_PROVIDER = 'https://fonts.googleapis.com/'
  • removed: const IMAGES_MANIFEST = 'images-manifest.json'
  • removed: const INTERNAL_HEADERS: readonly ['x-invoke-path', 'x-invoke-status', 'x-invoke-error', 'x-invoke-query', 'x-middleware-invoke']
  • removed: const MIDDLEWARE_BUILD_MANIFEST = 'middleware-build-manifest'
  • removed: const MIDDLEWARE_MANIFEST = 'middleware-manifest.json'
  • removed: const MIDDLEWARE_REACT_LOADABLE_MANIFEST = 'middleware-react-loadable-manifest'
  • removed: const NEXT_BUILTIN_DOCUMENT = '__NEXT_BUILTIN_DOCUMENT__'
  • removed: const NEXT_FONT_MANIFEST = 'next-font-manifest'
  • removed: const OPTIMIZED_FONT_PROVIDERS: { url: string; preconnect: string }[]
  • removed: const PAGES_MANIFEST = 'pages-manifest.json'
  • removed: const PAGE_SEGMENT_KEY = '__PAGE__'
  • removed: const PERMANENT_REDIRECT_STATUS = 308
  • removed: const PHASE_DEVELOPMENT_SERVER = 'phase-development-server'
  • removed: const PHASE_EXPORT = 'phase-export'
  • removed: const PHASE_INFO = 'phase-info'
  • removed: const PHASE_PRODUCTION_BUILD = 'phase-production-build'
  • removed: const PHASE_PRODUCTION_SERVER = 'phase-production-server'
  • removed: const PHASE_TEST = 'phase-test'
  • removed: const PRERENDER_MANIFEST = 'prerender-manifest.json'
  • removed: const REACT_LOADABLE_MANIFEST = 'react-loadable-manifest.json'
  • removed: const ROUTES_MANIFEST = 'routes-manifest.json'
  • removed: const RSC_MODULE_TYPES: { readonly client: 'client'; readonly server: 'server' }
  • removed: const SERVER_DIRECTORY = 'server'
  • removed: const SERVER_FILES_MANIFEST = 'required-server-files.json'
  • removed: const SERVER_PROPS_ID = '__N_SSP'
  • removed: const SERVER_REFERENCE_MANIFEST = 'server-reference-manifest'
  • removed: const STATIC_PROPS_ID = '__N_SSG'
  • removed: const STATIC_STATUS_PAGES: string[]
  • removed: const STRING_LITERAL_DROP_BUNDLE = '__NEXT_DROP_CLIENT_FILE__'
  • removed: const SUBRESOURCE_INTEGRITY_MANIFEST = 'subresource-integrity-manifest'
  • removed: const SYSTEM_ENTRYPOINTS: Set<string>
  • removed: const TEMPORARY_REDIRECT_STATUS = 307
  • removed: const TRACE_OUTPUT_VERSION = 1
  • removed: const TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000
  • removed: export { MODERN_BROWSERSLIST_TARGET }
  • removed: type CompilerNameValues = ValueOf<typeof COMPILER_NAMES>
  • removed: type ValueOf<T> = Required<T>[keyof T]
  • removed: default function dynamic<P = {}>(dynamicOptions: DynamicOptions<P> | Loader<P>, options?: DynamicOptions<P>): React.ComponentType<P>
  • removed: function noSSR<P = {}>(LoadableInitializer: LoadableFn<P>, loadableOptions: DynamicOptions<P>): React.ComponentType<P>
  • removed: type DynamicOptions<P = {}> = LoadableGeneratedOptions & { loading?: (loadingProps: DynamicOptionsLoadingProps) => JSX.Element | null; loader?: Loader<P> | LoaderMap; loadableGenerated?: Lo…
  • removed: type DynamicOptionsLoadingProps = { error?: Error | null; isLoading?: boolean; pastDelay?: boolean; retry?: () => void; timedOut?: boolean }
  • removed: type LoadableComponent<P = {}> = React.ComponentType<P>
  • removed: type LoadableFn<P = {}> = (opts: LoadableOptions<P>) => React.ComponentType<P>
  • removed: type LoadableGeneratedOptions = { webpack?(): any; modules?(): LoaderMap }
  • removed: type LoadableOptions<P = {}> = DynamicOptions<P>
  • removed: type Loader<P = {}> = (() => LoaderComponent<P>) | LoaderComponent<P>
  • removed: type LoaderComponent<P = {}> = Promise<React.ComponentType<P> | ComponentModule<P>>
  • removed: type LoaderMap = { [module: string]: () => Loader<any> }
  • removed: function escapeStringRegexp(str: string): string
  • removed: default function fnv1a(inputString: string, { size, seed }?: { size?: keyof typeof FNV_PRIMES; seed?: number }): bigint
  • removed: function getHostname(parsed: { hostname?: string | null }, headers?: OutgoingHttpHeaders): string | undefined
  • removed: function getImgProps({ src, sizes, unoptimized, priority, loading, className, quality, width, height, fill, style, onLoad, onLoadingComplete, placeholder, blurDataURL, fetchPriority, layout, objectFit, objectPosition, lazyBoundary, lazyRoot, ...rest }: ImageProps, _state: { defaultLoader: ImageLoaderWithConfig; imgConf: ImageConfigComplete; showAltText?: boolean; blurComplete?: boolean }): { prop…
  • removed: interface StaticImageData
  • removed: interface StaticRequire
  • removed: property StaticImageData.blurDataURL?: string
  • removed: property StaticImageData.blurHeight?: number
  • removed: property StaticImageData.blurWidth?: number
  • removed: property StaticImageData.height: number
  • removed: property StaticImageData.src: string
  • removed: property StaticImageData.width: number
  • removed: property StaticRequire.default: StaticImageData
  • removed: type ImageLoader = (p: ImageLoaderProps) => string
  • removed: type ImageProps = Omit<JSX.IntrinsicElements['img'], 'src' | 'srcSet' | 'ref' | 'alt' | 'width' | 'height' | 'loading'> & { src: string | StaticImport; alt: string; width?: numb…
  • removed: type ImgProps = Omit<ImageProps, 'src' | 'alt' | 'loader'> & { loading: LoadingValue; width: number | undefined; height: number | undefined; style: NonNullable<JSX.IntrinsicEl…
  • removed: type OnLoad = React.ReactEventHandler<HTMLImageElement> | undefined
  • removed: type OnLoadingComplete = (img: HTMLImageElement) => void
  • removed: type PlaceholderValue = 'blur' | 'empty' | `data:image/${string}`
  • removed: type StaticImport = StaticRequire | StaticImageData
  • removed: function djb2Hash(str: string): number
  • removed: function hexHash(str: string): string
  • removed: default Head
  • removed: function Head({ children }: { children: React.ReactNode }): React.JSX.Element
  • removed: function defaultHead(inAmpMode?: boolean): JSX.Element[]
  • removed: const HeadManagerContext: React.Context<{ updateHead?: (state: any) => void; mountedInstances?: any; updateScripts?: (state: any) => void; scripts?: any; getIsSsr?: () => boolean; appDi…
  • removed: const PathParamsContext: import('react').Context<Params | null>
  • removed: const PathnameContext: import('react').Context<string | null>
  • removed: const SearchParamsContext: import('react').Context<URLSearchParams | null>
  • removed: const HtmlContext: import('react').Context<HtmlProps | undefined>
  • removed: function useHtmlContext(): HtmlProps
  • removed: type HtmlProps = { __NEXT_DATA__: NEXT_DATA; strictNextHead: boolean; dangerousAsPath: string; docComponentsRendered: { Html?: boolean; Main?: boolean; Head?: boolean; NextScri…
  • removed: function detectDomainLocale(domainItems?: DomainLocale[], hostname?: string, detectedLocale?: string): DomainLocale | undefined
  • removed: function getLocaleRedirect({ defaultLocale, domainLocale, pathLocale, headers, nextConfig, urlParsed }: Options): string | undefined
  • removed: function normalizeLocalePath(pathname: string, locales?: string[]): PathLocale
  • removed: interface PathLocale
  • removed: property PathLocale.detectedLocale?: string
  • removed: property PathLocale.pathname: string
  • removed: function getImageBlurSvg({ widthInt, heightInt, blurWidth, blurHeight, blurDataURL, objectFit }: { widthInt?: number; heightInt?: number; blurWidth?: number; blurHeight?: number; blurDataURL: string; objectFit?: string }): string
  • removed: const VALID_LOADERS: readonly ['default', 'imgix', 'cloudinary', 'akamai', 'custom']
  • removed: const imageConfigDefault: ImageConfigComplete
  • removed: type ImageConfig = Partial<ImageConfigComplete>
  • removed: type ImageConfigComplete = { deviceSizes: number[]; imageSizes: number[]; loader: LoaderValue; path: string; loaderFile: string; domains: string[]; disableStaticImages: boolean; minimumC…
  • removed: type ImageLoaderProps = { src: string; width: number; quality?: number }
  • removed: type ImageLoaderPropsWithConfig = ImageLoaderProps & { config: Readonly<ImageConfig> }
  • removed: type LoaderValue = (typeof VALID_LOADERS)[number]
  • removed: type RemotePattern = { protocol?: 'http' | 'https'; hostname: string; port?: string; pathname?: string }
  • removed: const ImageConfigContext: React.Context<ImageConfigComplete>
  • removed: const unstable_getImgProps: (imgProps: ImageProps) => { props: import('./get-img-props').ImgProps }
  • removed: default Image
  • removed: export { ImageLoader }
  • removed: export { ImageLoaderProps }
  • removed: export { ImageProps }
  • removed: export { StaticImageData }
  • removed: default defaultLoader
  • removed: function defaultLoader({ config, src, width, quality }: ImageLoaderPropsWithConfig): string
  • removed: namespace defaultLoader
  • removed: var defaultLoader.__next_img_default: boolean
  • removed: function getObjectClassLabel(value: any): string
  • removed: function isPlainObject(value: any): boolean
  • removed: export { default } from 'path'
  • removed: function NoSSR({ children }: { children: Child }): Child
  • removed: function suspense(): void
  • removed: default Loadable
  • removed: function Loadable(options: any): { (props: any): React.JSX.Element; displayName: string }
  • removed: const NEXT_DYNAMIC_NO_SSR_CODE = 'NEXT_DYNAMIC_NO_SSR_CODE'
  • removed: const LoadableContext: React.Context<CaptureFn | null>
  • removed: declare global
  • removed: default Loadable
  • removed: function Loadable(opts: any): React.ForwardRefExoticComponent<Omit<any, 'ref'> & React.RefAttributes<unknown>>
  • removed: namespace Loadable
  • removed: var Loadable.preloadAll: () => Promise<unknown>
  • removed: var Loadable.preloadReady: (ids?: (string | number)[]) => Promise<void>
  • removed: function hasMatch(domains: string[], remotePatterns: RemotePattern[], url: URL): boolean
  • removed: function matchRemotePattern(pattern: RemotePattern, url: URL): boolean
  • removed: default function mitt(): MittEmitter<string>
  • removed: type MittEmitter<T> = { on(type: T, handler: Handler): void; off(type: T, handler: Handler): void; emit(type: T, ...evts: any[]): void }
  • removed: const MODERN_BROWSERSLIST_TARGET: ['chrome 64', 'edge 79', 'firefox 67', 'opera 51', 'safari 12']
  • removed: default MODERN_BROWSERSLIST_TARGET
  • removed: function absolutePathToPage(pagePath: string, options: { extensions: string[] | readonly string[]; keepIndex: boolean; dir: string; pagesType: 'pages' | 'app' | 'root' }): string
  • removed: function denormalizeAppPagePath(page: string): string
  • removed: function denormalizePagePath(page: string): string