Next.js 16.3 Turbopack:内存降 90%、构建持久化缓存、Rust React 编译器实验性上线

Next.js 16.3 Preview 把 Turbopack 的开发服务器内存占用压缩 90%,首次将持久化磁盘缓存引入 next build,并带来 import.meta.glob 支持和实验性 Rust React 编译器——梳理四项改动的原理与启用方式。

阅读时长: 3 分钟
共 1309字
作者: longlikun

Next.js 16.3 Preview 于 2026 年 6 月底以 @preview dist-tag 发布到 npm,稳定版仍在 16.2 系列。这一版的重心全在 Turbopack 上:四项改动,各自针对一个具体的痛点。


一、开发服务器内存降 90%:Memory Eviction

16.3 之前,Turbopack 的内存缓存只增不减——开发会话越长,内存占用越高。

16.3 引入了 Memory Eviction:把不活跃的路由的编译缓存从内存里驱逐到磁盘,需要时再读回来。这个特性依赖 16.1 里引入的文件系统持久化能力,两者现在默认都开启

实测数据(Vercel 自家项目):

项目 16.2 内存 16.3 内存 降幅
vercel.com 控制台(50 个路由) 21.5 GB ~2 GB ~90%
nextjs.org 4,600 MB 840 MB ~82%

对长时间跑着 dev server 的场景来说,这是一个感知明显的改进——内存不会因为开了一天而占满。

Trade-off 说清楚:磁盘缓存换内存的本质是 CPU 和内存的取舍。驱逐后的路由再次访问时需要从磁盘读回缓存,有一次小的延迟开销。对于 CPU bound 的场景(本机 CPU 很快),效果更好;对于磁盘 I/O 很慢的环境(网络磁盘、慢 HDD),需要自己评估。


二、构建持久化缓存:Persistent Cache for Builds

Turbopack 的文件系统缓存此前只用于 next dev,16.3 把它带进了 next build

原理:next build 开始时,Turbopack 先扫描磁盘上已有的 .next 缓存目录,把上次构建里没变的编译结果直接读进来,只重新计算真正改动过的部分。

启用方式(需要在 next.config.js 里开 flag):

// next.config.js
module.exports = {
  experimental: {
    turbopackFileSystemCacheForBuild: true,
  },
}

官方数据:有缓存的构建最快可以快 5.5 倍

在 CI 里利用这个特性的做法是把 .next 目录作为 cache artifact 在 job 间传递:

# GitHub Actions 示例
- uses: actions/cache@v4
  with:
    path: .next
    key: nextjs-${{ hashFiles('**/package-lock.json') }}-${{ github.sha }}
    restore-keys: nextjs-${{ hashFiles('**/package-lock.json') }}-

第一次构建正常跑,之后每次构建都能复用上次的缓存,只编译增量变化。对于改动范围小的 PR,构建时间会大幅缩短。


三、import.meta.glob 支持

import.meta.glob 是 Vite 的 glob 导入语法,让你可以批量导入匹配模式的文件:

// 导入所有组件
const components = import.meta.glob('./components/**/*.tsx')

// 立即导入(eager)
const icons = import.meta.glob('./icons/*.svg', { eager: true })

在 Next.js 16.3 之前,这个语法只能在 Vite 项目里用;依赖它的库(比如一些图标系统、本地化工具)在 Next.js 里无法正常工作。

16.3 的 Turbopack 把 import.meta.glob 接进了文件监听系统:增删匹配文件时,dev 模式自动触发重编译,行为和 Vite 完全一致。这关闭了一个长期存在的移植性缺口。


四、Rust React 编译器(实验性)

React 团队发布了 React Compiler 的 Rust 原生移植版,16.3 把它接入了 Turbopack。

背景:React Compiler 会分析组件代码,自动插入 memoization,省去手写 useMemo / useCallback 的负担。此前的 JS 版在大型项目里会是编译时的一个明显开销;Rust 版大幅降低了这个开销。

早期测试(基于 v0 等大型 React 项目):编译时间提升 20–50%

启用方式(experimental):

// next.config.js
module.exports = {
  experimental: {
    reactCompiler: {
      compilationMode: 'annotation', // 或 'all'
    },
  },
}

注意目前是实验性,不建议在生产环境默认开启,但值得在开发环境评估一下。


升级方式

16.3 目前在 @preview tag 下,不是默认安装的稳定版:

npm install next@preview react@preview react-dom@preview

想留在稳定版的话,继续用 16.2 即可;等稳定版发布后,16.3 的这些改动会一并进来。


四项改动,两个已默认开启(内存驱逐、文件系统缓存),一个需要 flag(构建持久化缓存),一个还在实验阶段(Rust React 编译器)。从 import.meta.glob 的支持来看,Turbopack 也在持续补齐 Vite 的生态兼容性。


原文:Turbopack: What’s New in Next.js 16.3,发布于 Next.js 官方博客,Vercel 出品,2026 年 6 月。

关于

关注我获取更多资讯

月球基地博客公众号二维码,扫码关注获取更多 AI 与编程资讯
📢 公众号
月球基地博客作者个人微信二维码,扫码交流 AI 与编程话题
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计