跳到内容
返回博客

2025年7月14日 星期一

Next.js 15.4

发布者

Next.js 15.4 带来了性能、稳定性和 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@latest

Turbopack 构建

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 与 PPRuse 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/image API,同时提供相应的迁移指南。

我们的目标是使此次更新尽可能顺畅和直接。我们正在谨慎管理这些更改,以尽量减少中断,并将提供清晰的指导和工具来支持您过渡到 Next.js 16。

预览即将推出的功能

您可以通过使用 canary 频道并在 next.config.js 中启用以下标志来立即开始试验其中许多功能:

next.config.ts
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 名独立开发者共同努力的成果。此版本由以下团队提供

非常感谢 @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 提供的帮助!