For years, we’ve optimized our Next.js apps at the framework level—we’ve moved to Turbopack, adopted React Server Components (RSC), and fine-tuned our caching strategies. But there’s a fundamental layer we’ve ignored: the runtime.
In a recent talk at Vercel, Lydia Hallie (Head of Propaganda at Bun) made a compelling case for why the future of Next.js isn't just about the framework—it's about the engine under the hood.
The Node.js Bottleneck
Node.js was a revolution when it launched in 2009. However, it was designed for a different era of hardware (limited cores, slow storage). In 2025, our hardware is 50x faster, yet Node still pushes everything through an architecture that requires multiple layers of abstraction (V8 -> C++ Bindings -> libuv -> OS) just to read a file or make a network request.
In modern environments like serverless functions and hot-reloading dev servers, these milliseconds of overhead add up to significant latency.
Enter Bun: Re-engineered for 2025
Bun isn't just a "faster Node." It’s a runtime built from the ground up in Zig. By using Apple’s JavaScriptCore (the engine powering Safari), Bun prioritizes fast startup and low memory usage—perfect for the short-burst tasks typical of modern web development.
Key advantages of running Next.js on Bun include:
Direct System Calls: Bun eliminates layers of abstraction, making file access and HTTP streaming significantly faster.
Built-in Tooling: You get a package manager (up to 17x faster than Yarn), a bundler, a transpiler, and a test runner (up to 23x faster than Jest) out of the box.
The "Batteries Included" API: Need to connect to PostgreSQL or S3? Instead of installing heavy NPM packages, Bun provides native APIs that are up to 11x faster than their Node/NPM counterparts.
How to Use Bun with Next.js Today
The transition is designed to be seamless. Because Bun aims for 100% Node compatibility, you can start using it incrementally:
Step 1: Swap npm install for bun install. It’s faster and changes nothing in your codebase.
Step 2: Run your dev server with Bun:
bun run --bun next dev
The --bun flag tells Bun to use its own runtime even if the script specifies Node.
Step 3: Use Bun's native APIs (like bun.sql or Bun.S3) inside your Server Components to reduce bundle size and latency.
Deployment: Vercel + Bun
The most exciting news from the talk? Native Bun support is coming to Vercel. Internal tests have already shown up to a 30% drop in CPU usage just by switching the runtime. This means your apps won't just be faster; they'll be cheaper and more efficient to run.
Conclusion
We’ve spent a decade optimizing our JavaScript. Now, it’s time to optimize the environment where that JavaScript lives. By combining the developer experience of Next.js with the raw speed of Bun, we’re entering a new era of web performance.
Watch the full talk here: Next.js at the speed of Bun
Top comments (0)