Next.js 16.3 Turbopack build cache: cut CI build time up to 5.5x (2026)

Enable Turbopack's persistent build cache and Rust React Compiler in Next.js 16.3 CI pipelines, with verified benchmarks and honest caveats.

Read time
11 min
Word count
1.5K
Sections
11
FAQs
8
Share
Infographic: Next.js 16.3 Turbopack persistent build cache and Rust React Compiler for faster CI
Next.js 16.3 Turbopack build-cache and Rust React Compiler CI wins.
On this page · 11 sections
  1. What changed in Next.js 16.3
  2. The build-cache and memory numbers, in full
  3. Enable the persistent build cache
  4. Wire it into CI (GitHub Actions)
  5. The Rust React Compiler
  6. Memory eviction and the dev-time wins
  7. Should you turn these on now?
  8. India-specific considerations
  9. FAQ
  10. How eCorpIT can help
  11. References

Summary. Next.js 16.3 extends Turbopack's persistent file-system cache from next dev to next build, and on Vercel's own sites a warm cache cut Turbopack compile time from 30 seconds to 5.5 seconds, about 5.5x, with smaller 2.3x and 1.4x wins elsewhere (Next.js blog, 29 June 2026). Two experimental flags do the work: turbopackFileSystemCacheForBuild for build caching, and turbopackRustReactCompiler for a native React Compiler that trimmed 20-50% off compilation in early tests on large apps like v0. Memory eviction, on by default in 16.3, cut one dev server from 21.5 GB to 2 GB (roughly 90%). As of early August 2026, 16.3 is still a preview; the stable line is 16.2. This guide shows how to turn both on in CI, what to cache, and where they break.

Slow builds are a tax you pay on every pull request. GitHub reduced GitHub-hosted runner prices by up to 39% on 1 January 2026, but paid CI minutes past the free quota still add up, and when GitHub repriced Actions the small share of customers whose bills rose saw a median increase of about $13 a month (GitHub Changelog, 16 December 2025). For a team running hundreds of builds a day, shaving 10 to 60 seconds off every compile is the difference between a review that lands in minutes and one that stalls. Next.js 16.3 gives you two levers for that, plus a large dev-time memory cut. Here is what each one does, and how to adopt it without shipping a broken cache.

What changed in Next.js 16.3

Next.js 16.3 focuses Turbopack on compiler performance: less CPU and memory, faster builds, and a smaller runtime. The Turbopack team lists five headline changes: up to 90% lower dev-server memory, a persistent file-system cache for next build, experimental Rust React Compiler support, the Vite-compatible import.meta.glob API, and faster hot module replacement (HMR) and dev startup (Next.js blog).

Two points matter before you touch a config file. First, 16.3 is a preview as of early August 2026, published under the npm @preview tag while the stable line stays on 16.2 (Next.js release blog; Wikipedia: Next.js). Second, the build cache and the Rust compiler are behind experimental flags, so treat them as opt-in and reversible, not defaults you inherit on upgrade. If you are still moving an app onto the 16.x line, our Next.js 16 migration guide covers the async request APIs and Cache Components first; this piece assumes you are already there. The Next.js 16.3 instant-navigation features and the TypeScript 7 and Rust/Go toolchain changes shipped in the same release and cover different ground; this guide is only about build and dev performance.

The build-cache and memory numbers, in full

Persisting Turbopack's memory cache to disk has sped up next dev since the 16.1 release. After months of hardening on Vercel's own sites, the same persisted cache is now available for next build: when Turbopack sees the cache at the start of a build, it reads entries from disk before compiling any new changes. The published measurements, all from Vercel's own properties, are below.

Site (Vercel's own) Metric Cold / before Cached / after Change
vercel.com/geist Turbopack build compile 30s 5.5s ~5.5x faster
nextjs.org Turbopack build compile 21s 9.2s ~2.3x faster
vercel.com/home Turbopack build compile 66s 46s ~1.4x faster
vercel.com dashboard Dev-server memory (50 routes) 21.5 GB 2 GB ~90% smaller
nextjs.org Dev-server memory (50 routes) 4,600 MB 840 MB ~82% smaller

Read the spread, not the headline. A content-heavy site with stable dependencies (vercel.com/geist) saw the biggest win because most of its work was already computed and cached. An app that changes more between builds (vercel.com/home) saw 1.4x. Vercel is explicit that there is no single reduction percentage for every application: results depend on the size of the route graph, how much of it changed, and how long the session ran (Next.js blog). Your first cached build is the one to measure.

Enable the persistent build cache

The build cache is off by default and lives behind one experimental flag in next.config.ts:


            // next.config.ts
const nextConfig = {
  experimental: {
    // Enable filesystem caching for `next build`
    turbopackFileSystemCacheForBuild: true,
  },
};

export default nextConfig;
          

With the flag on, a local rebuild reuses previously computed work automatically. The payoff in continuous integration comes from carrying that cache between runs. Vercel's guidance is direct: CI setups can take advantage of this by copying the generated .next directory from one run to the next. In practice that means caching the .next/cache directory, the long-standing Next.js CI caching target, so a fresh runner starts warm instead of cold.

Wire it into CI (GitHub Actions)

Here is a minimal GitHub Actions job that restores the Turbopack build cache before next build and saves it after. The cache key is scoped to the lockfile and source, so a dependency change starts a clean build instead of trusting stale output.


            # .github/workflows/build.yml
name: build
on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: npm
      - run: npm ci
      - name: Restore Turbopack build cache
        uses: actions/cache@v4
        with:
          path: .next/cache
          key: turbo-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('src/**', 'app/**') }}
          restore-keys: |
            turbo-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}-
      - run: npm run build
          

Two engineering notes. Scope the key to the Next.js version and lockfile, because a persisted cache is not guaranteed portable across framework or Node.js versions; when either moves, you want a fresh build, not a mystery. And keep secrets out of anything the cache can capture: GitHub itself now ships a read-only Actions cache for untrusted triggers, a reminder that cache contents cross trust boundaries in CI (GitHub Changelog).

The Rust React Compiler

Next.js has had stable React Compiler support since the first 16.0 release, but until now the compiler ran only as a Babel transform. On larger applications that could slow builds while the compiler waited for JavaScript execution resources. The React team published a native Rust port of the compiler, and Vercel integrated it into Turbopack. Early tests against large React apps, including Vercel's v0, showed compilation wins of 20-50% (Next.js blog).

It is experimental, and you enable it in two parts: turn the compiler on, then switch it to the native Rust version.


            // next.config.ts
const nextConfig = {
  // enable the React Compiler
  reactCompiler: true,
  experimental: {
    // use the native Rust version instead of the Babel one
    turbopackRustReactCompiler: true,
  },
};

export default nextConfig;
          

The compiler has options for opt-in behaviour and per-file control; the official React Compiler config reference covers them. Because the Rust integration is new, run it in CI against your full test suite before you trust it on a release branch.

Memory eviction and the dev-time wins

The 90% memory figure is a dev-server number, not a build number, and it comes from a new ability to evict much of the in-memory cache. Turbopack leans on the file-system persistence first added in 16.1 to drop cached results from memory, which stops unbounded growth during long dev sessions. In 16.3 both the dev file-system cache and memory eviction are on by default; you can disable eviction while investigating cache behaviour:


            const nextConfig = {
  experimental: {
    turbopackMemoryEviction: false, // default is 'full'
  },
};
          

Three smaller dev-time changes round out the release. Turbopack now supports the Vite-compatible import.meta.glob API for importing sets of files without hardcoding names, though it works only under Turbopack, not with the --webpack option. HMR subscription changes cut dev-server cold start by over 15% on complex apps. And Turbopack now ships WebAssembly, worker, and top-level-async runtime code only when a route needs it, trimming the per-route runtime size.

Should you turn these on now?

A short decision table for teams weighing the upgrade while 16.3 is still a preview.

Feature Default in 16.3 Risk to adopt Recommend for CI now
Memory eviction On Low Yes, already default
Persistent build cache Off (flag) Medium Pilot on one repo, measure the second build
Rust React Compiler Off (flag) Medium-high Test suite first, then a canary branch
import.meta.glob On (Turbopack) Low Use if you drop --webpack

The honest read: memory eviction is a free win you already get on upgrade. The build cache is worth piloting now, because the payoff is real and the downside (a stale cache) is contained by a good cache key. The Rust compiler is the one to gate behind tests, since it is both experimental and preview-stage. None of this is a reason to run a preview release in production; it is a reason to start measuring in CI so you are ready when 16.3 goes stable, and to fold build performance into the wider 2026 web platform baseline your team is already tracking.

India-specific considerations

For India-based teams and the global capability centres that run large front-end fleets, the build-cache win is a direct cost lever. CI compute is billed per minute once you pass the free quota, so a pipeline that runs hundreds of builds a day converts a 2x compile speedup into fewer runner-minutes and a smaller monthly bill in rupees. Two cautions specific to shared or offshore CI. Keep build artifacts and caches scoped so they never carry secrets or personal data across projects, in line with the Digital Personal Data Protection Act 2023 principle of limiting where such data flows. And standardise the Next.js and Node.js versions across your fleet, because a persisted cache that is portable in theory becomes a debugging cost when every team runs a different toolchain.

FAQ

How eCorpIT can help

eCorpIT is a Gurugram-based technology organisation whose senior engineering teams build and maintain production Next.js and React applications, and build performance is part of that work. When a CI pipeline has grown slow, we profile where the time goes, set up a version-scoped Turbopack cache, and pair it with the wider Core Web Vitals and web performance work that keeps the shipped app fast for users, not just for the build server. We are CMMI Level 5, MSME, and ISO 27001:2022 certified, so cache and secret handling in your pipeline is treated as a security concern, not an afterthought. To review your front-end build and delivery setup, contact eCorpIT.

References

  1. Turbopack: What's New in Next.js 16.3 — Next.js blog, 29 June 2026
  1. Next.js 16.3: Instant Navigations — Next.js blog
  1. Next.js 16.3: AI Improvements — Next.js blog
  1. React Compiler configuration reference — Next.js docs
  1. Next.js release blog
  1. Next.js — Wikipedia (version history)
  1. Update to GitHub Actions pricing — GitHub Changelog, 16 December 2025
  1. 2026 pricing changes for GitHub Actions — GitHub resources
  1. Read-only Actions cache for untrusted triggers — GitHub Changelog, 26 June 2026
  1. Actions steps can now be run in parallel — GitHub Changelog, 25 June 2026

_Last updated: 2 August 2026._

Frequently asked

Quick answers.

01 What does turbopackFileSystemCacheForBuild do in Next.js 16.3?
It enables Turbopack's persistent file-system cache for next build, extending the disk cache that has sped up next dev since Next.js 16.1. When Turbopack sees the cache at the start of a build, it reads entries from disk before compiling changes, which cut compile time up to 5.5x on Vercel's own sites.
02 Is the Turbopack build cache safe to use in production?
As of early August 2026, Next.js 16.3 is a preview and the build cache sits behind an experimental flag, so it is not a production default. Pilot it in continuous integration, measure your second cached build, and scope the cache key to your lockfile and Next.js version before relying on it.
03 How much faster is the Rust React Compiler?
Early tests on large React applications, including Vercel's v0, showed compilation wins of 20-50% versus the older Babel transform. The gain comes from a native Rust port of the React Compiler that Vercel integrated into Turbopack. It is experimental in 16.3, so validate it against your full test suite before trusting a release branch.
04 Why did my Next.js dev server use less memory after upgrading?
Next.js 16.3 turns on memory eviction by default, which drops much of Turbopack's in-memory cache to disk during long dev sessions. Vercel measured a fall from 21.5 GB to 2 GB, about 90%, on one dashboard app after compiling 50 routes. Individual results depend on your route graph and session length.
05 How do I cache the Turbopack build cache in GitHub Actions?
Cache the .next/cache directory with actions/cache, keyed on the runner OS, the lockfile hash, and your source files. Restore it before npm run build and save it after. A fresh runner then starts warm. Scope the key so a dependency change forces a clean build rather than reusing stale output.
06 Is Next.js 16.3 stable yet?
No. As of early August 2026, Next.js 16.3 is published under the npm @preview tag while the stable line remains on 16.2, with a stable 16.3 release expected in the following weeks. You can test the build cache and Rust compiler on preview builds in CI, but keep production deployments on the current stable release.
07 Does the build cache help every application equally?
No. Vercel reported 5.5x, 2.3x, and 1.4x on three of its own sites, and states there is no single reduction that applies to every app. The win depends on the size of the route graph, how much changed since the last build, and how long the session ran. Content-heavy sites with stable dependencies gain the most.
08 Do I need Turbopack to use import.meta.glob?
Yes. The Vite-compatible import.meta.glob API in Next.js 16.3 is a Turbopack feature and does not work for apps built with the --webpack option. It imports all modules matching a pattern without hardcoding names, which suits loading sets of similar files such as MDX posts or product descriptions.

About the author

Manu Shukla

Founder & Director

Founder of eCorpIT. Hands-on engineer leading senior-only delivery for AI apps, custom software, and cloud systems for global clients.

Subscribe

One engineering note a week. No fluff, no spam.

Senior-architect playbooks on AI agents, mobile apps, cloud, security, data, and marketing — delivered every Wednesday.

Past the reading

Read enough. Let's build something.

A senior architect responds in 24 working hours with scope, indicative cost, and a timeline. NDA before any technical conversation.