2025年7月14日 星期一
Next.js 15.4
发布者Next.js 15.4 带来了性能、稳定性和 Turbopack 兼容性的更新。此版本的主要亮点包括:
- Turbopack 构建:
next build --turbopack的集成测试兼容性达到 100% - 稳定性改进:Next.js 和 Turbopack 的诸多稳定性与性能改进
这篇博文还包含了 Next.js 16(我们的下一个主要版本)的早期预览。
立即升级,或开始使用
# Use the automated upgrade CLI
npx @next/codemod@canary upgrade latest
# ...or upgrade manually
npm install next@latest react@latest react-dom@latest
# ...or start a new project
npx create-next-app@latestTurbopack 构建
next build --turbopack 现在通过了 所有 8298 项生产构建集成测试,并已支持 vercel.com。这是 Next.js 中 Turbopack 稳定版发布的一个关键里程碑。
团队目前的优先事项是通过生产分块完成捆绑优化,并修复 Alpha 版本早期采用者报告的错误。我们还在 Turbopack 内部进行了多项稳定性与性能改进。
我们相信 Turbopack 即将可用于生产环境,并且我们正在努力在 Next.js 16 中发布 Beta 版本。如果您之前尝试过 Turbopack,现在是再次尝试的好时机。如果您遇到任何问题,请通过 GitHub Issues 告诉我们。
展望未来:Next.js 16
在过去的几个月里,我们一直在迭代 Next.js 的重大改进,重点关注 Turbopack 的开发者体验以及 App Router 与 PPR 和 use cache 的核心功能。虽然我们尚未准备好默认启用这些功能,但我们正致力于为用户在今年夏天发布的 Next.js 16 中试用这些功能奠定基础。
以下是 Next.js 16 即将推出的功能预览:
- 缓存组件(Beta):将实验性缓存功能(动态 IO、
use cache和部分预渲染)整合到一个统一的cacheComponents标志中,简化了性能优化策略。Next.js 16 博文将详细阐述我们的愿景。 - Turbopack 构建(Beta):引入
next build --turbopack,完全通过集成测试,并在 vercel.com 等高流量站点内部进行验证。准备好在 Next.js 16 中进行更广泛的公共 Beta 测试。 - 优化客户端路由:通过更智能的预取、改进的缓存失效策略和减少的带宽使用来增强 App Router 导航,从而实现更快、响应更灵敏的导航。
- 开发工具和调试:添加路由信息以检查应用结构和切换
loading.tsx等组件。添加实验性浏览器日志转发到终端,以支持 AI 驱动的调试工作流。 - Node.js 中间件(稳定版):将先前在 Next.js 15.2 中引入的实验性 Node.js 运行时对中间件的支持提升为稳定版。
- 部署适配器(Alpha):允许开发人员创建自定义部署适配器,以便更精细地控制构建和部署目标。
- 次要弃用和更改:弃用 Node.js 18 支持、AMP,并更改部分
next/imageAPI,同时提供相应的迁移指南。
我们的目标是使此次更新尽可能顺畅和直接。我们正在谨慎管理这些更改,以尽量减少中断,并将提供清晰的指导和工具来支持您过渡到 Next.js 16。
预览即将推出的功能
您可以通过使用 canary 频道并在 next.config.js 中启用以下标志来立即开始试验其中许多功能:
import type { NextConfig } from 'next';
const nextConfig: NextConfig = {
experimental: {
// Forward browser logs to the terminal for easier debugging
browserDebugInfoInTerminal: true,
// Enable new caching and pre-rendering behavior
dynamicIO: true, // will be renamed to cacheComponents in Next.js 16
// Activate new client-side router improvements
clientSegmentCache: true,
// Explore route composition and segment overrides via DevTools
devtoolSegmentExplorer: true,
// Enable support for `global-not-found`, which allows you to more easily define a global 404 page.
globalNotFound: true,
// Enable persistent caching for the turbopack dev server and build.
turbopackPersistentCaching: true,
},
};
export default nextConfig;显著变化
- [改进] 在重定向期间保留 RSC 查询 (#77963)
- [改进] 机器人优雅的错误回退 (#77916)
- [改进] 禁止在客户端组件中使用
unstable_rootParams(#79471) - [改进] 修复
bodySizeLimit错误和非多部分操作 (#77746) - [改进] 对未知操作 ID 响应 404 (#77012)
- [改进] 检查 RSC 请求上的缓存清除参数 (#80669)
- [改进] 将 Vercel OG 升级到 0.7.2 (#81447)
- [改进] 将
assert/strict列为外部依赖 (#80884) - [改进] 在传输前从
FlightRouterState中省略 searchParam 数据 (#80734) - [改进] 在顶层渲染流式元数据 (#80566)
- [修复] 错误修复:克隆配置模块以避免突变 (#80573)
- [修复] 错误修复:将
staleTime传播到种子预取条目 (#81263) - [修复] 恢复 vary (#79939)
- [修复] 修复 React Compiler 的趣味性检测 (#79558)
- [修复] 修复 react 编译器有用性检测器 (#79480)
- [修复] 更好地处理 launchEditor 中的边缘情况文件路径 (#79526)
- [修复] 客户端路由器应丢弃静态页面过时的预取条目 (#79362)
- [功能] 向
router.prefetch添加onInvalidate(#77880) - [功能] 将
prefetch="auto"添加为prefetch={undefined}到 Link 的别名 (#78689) - [功能] 支持全局未找到的元数据 (#78961)
- [功能] 从错误覆盖层重启开发服务器 (#80060)
- [功能] 从指示器首选项重启开发服务器 (#80072)
- [功能] 为
next build添加--debug-prerender选项 (#80667) - [功能] 将 htmlrewriter 添加到服务器外部依赖项 (#80819)
- [功能] 允许部分预渲染被拦截的动态路由 (#80851)
- [性能] 在 React Compiler 之前使用 SWC 检查文件 (#75605)
- [性能] 改进静态路径生成性能和参数处理 (#81254)
- [杂项] 修复开发期间
NEXT_CPU_PROF的用法,以允许捕获 CPU 跟踪 (#81248)
分享您的反馈,帮助塑造 Next.js 的未来
贡献者
Next.js 是超过 3,000 名独立开发者共同努力的成果。此版本由以下团队提供
- Next.js 团队:Andrew、Ben、Hendrik、Janka、Jiachi、Jimmy、Jiwon、JJ、Josh、Jude、Rob、Sam、Sebastian、Sebbie、Wyatt 和 Zack。
- Turbopack 团队:Benjamin、Donny、Josh、Luke、Maia、Niklas、Tim、Tobias 和 Will。
- Next.js 文档 团队:Delba、Rich、Ismael、Joseph 和 Lee。
非常感谢 @sokra、@huozhi、@Marukome0743、@mischnic、@wbinnssmith、@eps1lon、@razzeee、@delbaoliveira、@kdy1、@wyattjoh、@acdlite、@ztanner、@bgw、@jantimon、@lubieowoce、@Fonger、@ospira、@gnoff、@styfle、@Cy-Tek、@timneutkens、@raunofreiberg、@devchaudhary24k、@Neschadin、@OreQr、@drewlong314、@ijjk、@praizjosh、@unstubbable、@lukesandberg、@ScriptedAlchemy、@sqidermad、@Juneezee、@devjiwonchoi、@Kamitenshi、@feedthejim、@leerob、@mauerbac、@miki-tebe、@gaearon、@mrbadri、@luwes、@lucacasonato、@M4xymm、@jirihofman、@vicb、@jackwilson323、@SyMind、@kevva、@xyf7、@gaojude、@dario-piotrowicz、@mastoj、@nicole0707、@lourd、@Karibash、@chipit24、@icyJoseph、@xusd320、@fireairforce、@GenhaoLi、@igas、@Macw07、@amannn、@bcdipesh、@r34son、@ivasilov、@lpalmes、@imskyleen、@teamleaderleo、@vitaliemiron、@agadzik、@chdeskur、@nakanoh、@luiscobot、@GameRoMan、@dferber90、@maurobonfietti、@navandstokes、@sajadtorkamani、@bobziroll、@lumirlumir、@KkOoSsTtAa、@msabramo、@sommeeeer、@schoenwaldnils、@remcohaszing、@HerringtonDarkholme、@bgub、@RobPruzan、@lmammino、@MohammedYehia、@extoci、@padmaia、@aacosta11、@vercel-release-bot、@maral、@ethanniser、@MichalMoravik、@rajrawat37、@kidonng、@dnhn、@kristian240、@rachnac-emeritus、@rortan134 和 @nick20name17 提供的帮助!