Vercel has announced that Turbopack is officially production-ready in Next.js. The Rust-based bundler is designed to replace Webpack, providing faster local development and production build times.
This marks the culmination of a multi-year effort to improve developer tooling speed.
Up to 10x Faster Development Starts
Turbopack leverages a caching system written in Rust. It caches compile results at a granular level, so it only rechecks code that has changed.
This reduces the time required to spin up local development servers.
| Build Phase / Metric | Webpack (Next.js 14) | Turbopack (Next.js 16) | Speed Increase |
|---|---|---|---|
| Dev Server Start (Cold) | ~6.5s | ~0.8s | 8.1x faster |
| Hot Module Replacement (HMR) | ~650ms | ~45ms | 14.4x faster |
| Full Production Build | ~42.3s | ~12.1s | 3.5x faster |
For larger projects, start times have dropped from over 15 seconds to under 2 seconds.
Parity with Webpack Features
Achieving production readiness required matching Webpack's feature set. The team spent months ensuring compatibility with custom CSS configurations, image optimization, and font loaders.
This means most Next.js projects can switch to Turbopack without changing their config files.
You can enable it by adding the --turbo flag to your dev script inside the package configuration:
// package.json script configuration
{
"name": "my-app",
"scripts": {
"dev": "next dev --turbo",
"build": "next build",
"start": "next start"
}
}
This simple update activates the Rust engine out-of-the-box. As of Next.js 15.5 and later, next build --turbo also compiles production builds with the same engine, not just the dev server, which is what closed most of the remaining gap with Webpack build times.
We run this site's dev server on Turbopack (see npm run dev in this repo), and the difference shows up mostly in hot reload after editing a page deep in src/app rather than in the initial cold start.
Where It Still Falls Short
Production readiness doesn't mean full parity everywhere. A few gaps are worth knowing about before you flip the switch on an existing project:
- Custom Webpack plugins. If your
next.config.jshas awebpack()override that adds third-party plugins (bundle analyzers, custom loaders for non-standard file types), those don't carry over. Turbopack has its own plugin API, and not every Webpack plugin has an equivalent yet. - Some CSS-in-JS libraries. Styled-components and similar runtime CSS-in-JS tools work, but a handful of less common ones with custom Babel transforms need updated adapters.
- Monorepo edge cases. Turbopack's caching assumes a fairly standard project layout. Non-standard monorepo setups with symlinked packages outside the workspace root have reported occasional cache invalidation bugs.
None of these are dealbreakers for a typical Next.js app, but they're the reason the migration guide recommends testing on a branch before switching your main branch's build command.
The Future of Rust-Based Tooling
The transition to Turbopack is part of a broader trend of rewriting web build tools in system languages. By moving away from JavaScript-based bundlers, build steps become significantly faster.
This allows developers to spend less time waiting for compilers and more time writing application code.
Written by
DebuggerMe TeamThe DebuggerMe team builds developer tools, writes technical content, and helps teams ship better software.
Related Articles
All articles →Next.js 16 App Router Caching Overhaul
Next.js 16 changes dynamic page caching behaviors, making pages dynamic by default to prevent stale user state.
React Server Components in Depth: What They Are and When to Use Them
React Server Components fundamentally change how we think about rendering. This guide breaks down how they work, how they differ from Client Components, and the patterns that will make your Next.js apps faster.
Getting Started with Next.js 16: A Complete Guide
Everything you need to know to build fast, modern web applications with Next.js 16 App Router, Server Components, and TypeScript. From project setup to production deployment.