前言:21.5 GB 内存压到 2 GB、开发服务器内存使用量最多可减少90%——Next.js 16.3 Turbopack 官方博客里的数字,足够让任何一个日常跑着 next dev --turbo 的人手痒。本文记录读完官方博客、又亲手本地升级留下的阅读记录——不是劝你别升,而是帮你分清「读官方升级博客该兴奋什么」和「升 preview 该警惕什么」。如果你也在等大版本、又不敢盲跟,下文有原文要点、我的实测踩坑,以及 stable 出来前我会怎么等。
原文在讲什么:编译器性能补课,不是新功能秀
原文:Turbopack: What's New in Next.js 16.3 (nextjs.org/blog/next-1… Next.js 16.3 Preview 系列第三篇(前两篇分别是 nextjs.org/blog/next-1… 和 nextjs.org/blog/next-1…
-
开发态内存使用量降低,长会话 dev 内存最高可降约 90%
-
构建阶段也能用文件系统持久化缓存(16.1 起 dev 已有)
-
实验性 Rust React Compiler
-
import.meta.glob等工程化补齐,外加 HMR 冷启动、运行时体积、monorepo PostCSS 等
官方立场很明确:Turbopack 的设计是增量编译——编译成本和改动量成正比,而不是和整个路由树成正比。为此早期做过取舍:多缓存在内存里,换更低 CPU。16.3 是在这个取舍上回调——内存可以降低到磁盘,不再无限涨。
博客里最扎眼的数字:内存和构建
开发内存:编译 50 条路由之后
实现路径:数据结构压缩 + 缩短缓存生命周期 + memory eviction(依赖 16.1 的 dev 文件系统缓存)。16.3 默认开启;排查时可关:
const nextConfig = { experimental: { turbopackMemoryEviction: false, },};
官方也说了:降幅因路由图规模、会话时长、摸过多少路由而异,没有普适的 90%。
构建:next build 也能吃磁盘缓存
需显式开:
const nextConfig = { experimental: { turbopackFileSystemCacheForBuild: true, },};
CI 思路:把上次 .next 带到下一次 job。
其他博客要点
-
Rust React Compiler:大应用 compile 收益 20%–50%(实验性,需
turbopackRustReactCompiler: true) -
import.meta.glob:Vite 兼容 API,仅 Turbopack,不走--webpack -
HMR:大应用冷启动快 15%+
-
兼容性:Windows
import.meta.url、createRequire、chunk 重试、Safari CSS HMR 等
读到这里,我的第一反应和很多人一样:内存和构建数字都好看,值得升级——尤其对我MuseMVP和MuseCanto两个大型MonoRepo项目日常开着 dev、32G内存常常顶满的情况,官方那组「开发服务器内存使用量最多可减少90%」的数据实在诱人。于是我去试了 preview。
项目实测:升到 16.3.0-preview.5,Windows 上先踩刹车
实测是在自己的 Next.js 16 App Router monorepo 上做的——package.json 里 dev 脚本是 next dev --turbo,版本已跟到当前最新稳定线16.2.9。试升级时把 next 改成 16.3.0-preview.5,pnpm install 后本地 pnpm dev,终端会显示类似:
没有改 webpack,也没有关 Turbopack——就是想看博客里那套默认路径在我自己的 Windows 环境里表现如何。
我实际遇到了什么
说实话,没有跑完「官方 benchmark 那种理想路径」。
在 Windows 本机(Win10/11,日常开发机)上,preview 版暴露出一些问题——其中有像是旧版本已经修过、preview 又冒出来的 regression。具体表现我打算用截图贴在公众号里(终端报错、异常页面、版本信息),这里用文字概括观察到的几类现象,避免空口编 stack trace:
-
dev 链路不稳定:并非「一启动就挂」,而是在正常开发节奏下(改文件、切路由、触发热更新)出现此前 16.2 稳定版没有的行为;有的场景需要重启 dev server 才能恢复。
-
和博客「兼容性修复」的预期有落差:原文专门提了 Windows 上
import.meta.url、chunk 重试等修复——我这边仍踩到平台相关的问题,说明 preview 离「默认放心升」还有距离。 -
不只看自己:在 X 上反馈,也有相关开发人员正在调查中。
基于此
16.3 博客讲的是方向和 benchmark,不是「今天就能升生产」。preview 在 Windows 上的回归,足够让我把两个项目继续留在当前稳定版,只把 16.3 preview 当本地观察分支。
os error 5的问题多是window缘故,mac用户可以尝试一下更新一下
收束:读博客有价值,升 preview 要克制
官方博客把 Turbopack 16.3 的设计回调讲清楚了:从「内存换 CPU」走向「内存使用量最多可减少90%、构建可落盘」。数字好看,方向也对。
但作为读完原文又去试 16.3.0-preview.5 的人,我目前的结论是:
-
读:推荐阅读原文,搞懂配置项和取舍
-
试:可以在分支上本地玩 preview
-
升:生产级应用,尤其 Windows + 大 monorepo,我建议再等 stable,至少等我这类 regression 在 release note 或社区里被确认修掉
增量编译的账,不只在快不快,还在升级后能不能安心写一下午代码——我这边 preview 还没过这条线,但 memory eviction 一旦 stable,我还是会第一时间在 MuseMVP 和 MuseCanto 上验证。
后续Nextjs升级到16.3稳定版,再做详细的项目升级记录。