版本 15
要更新到 Next.js 版本 15,你可以使用 upgrade
codemod:
如果你更倏手动升级,确保安装最新的 Next.js 和 React RC 版本:
值得注意的是:
- 如果你看到 peer dependencies 警告,你可能需要将
react
和 react-dom
更新到建议的版本,或者使用 --force
或 --legacy-peer-deps
标志来忽略警告。一旦 Next.js 15 和 React 19 都稳定后,这将不再需要。
- 如果你正在使用 TypeScript,你需要临时覆盖 React 类型。查看 React 19 RC 升级指南 获取更多信息。
react
和 react-dom
的最低版本现在是 19。
useFormState
已被 useActionState
替代。useFormState
hook 在 React 19 中仍然可用,但它已被废弃,并将在未来版本中移除。推荐使用 useActionState
,它包含额外的属性,比如直接读取 pending
状态。了解更多。
useFormStatus
现在包含额外的键值,如 data
、method
和 action
。如果你没有使用 React 19,则只有 pending
键可用。了解更多。
- 在 React 19 升级指南 中了解更多。
之前依赖运行时信息的同步动态 API 现在变成了异步:
为了减轻迁移负担,我们提供了一个 codemod 来自动化这个过程,并且这些 API 可以暂时以同步方式访问。
runtime
段配置 之前除了支持 edge
值外还支持 experimental-edge
。这两个配置指的是同一件事,为了简化选项,我们现在会在使用 experimental-edge
时报错。要修复这个问题,请将 runtime
配置更新为 edge
。有一个 codemod 可以自动完成这个操作。
fetch
请求 默认不再缓存。
要将特定的 fetch
请求选择性地加入缓存,你可以传递 cache: 'force-cache'
选项。
要将布局或页面中的所有 fetch
请求选择性地加入缓存,你可以使用 export const fetchCache = 'default-cache'
段配置选项。如果单个 fetch
请求指定了 cache
选项,那么将使用该选项。
路由处理程序 中的 GET
函数默认不再缓存。要将 GET
方法选择性地加入缓存,你可以在路由处理程序文件中使用 路由配置选项,比如 export const dynamic = 'force-static'
。
通过 <Link>
或 useRouter
在页面间导航时,页面 段不再从客户端路由缓存中重用。但是,它们在浏览器后退和前进导航以及共享布局时仍然会被重用。
要将页面段选择性地加入缓存,你可以使用 staleTimes
配置选项:
布局 和 加载状态 在导航时仍然会被缓存和重用。
@next/font
包已被移除,改用内置的 next/font
。我们提供了一个 codemod 来安全且自动地重命名你的导入。
experimental.bundlePagesExternals
现在已稳定,并重命名为 bundlePagesRouterDependencies
。
experimental.serverComponentsExternalPackages
现在已稳定,并重命名为 serverExternalPackages
。
Next.js 15 中移除了 Speed Insights 的自动检测。
要继续使用 Speed Insights,请参考 Vercel Speed Insights 快速入门 指南。
NextRequest
上的 geo
和 ip
属性已被移除,因为这些值由你的托管提供商提供。有一个 codemod 可以自动完成这个迁移。
如果你使用的是 Vercel,你可以使用 @vercel/functions
中的 geolocation
和 ipAddress
函数作为替代: