Bun v3.1 has just dropped, and the JavaScript community is buzzing. If you thought Bun was already fast, this release proves it's only getting started. With new APIs, deeper Node.js compatibility, and speed optimizations that push the boundaries of what a runtime can do, Bun v3.1 isn't just an incremental update, it's a statement of intent.
2. Improved Node.js Compatibility
One of the biggest barriers to Bun adoption has been compatibility with existing Node.js code. Bun v3.1 makes significant strides here:
- Full support for Node.js built-in modules like
crypto,fs,path,http, andstream, now passing 98% of Node.js core test suite. - Better CommonJS interop, require statements work with most npm packages without manual configuration.
- Experimental support for Node.js worker threads, important for CPU-bound tasks.
3. New APIs and Developer Experience
Bun v3.1 introduces several new APIs that make it more than just a faster Node:
- Bun.serve() now supports HTTP/2 out of the box with zero config.
- Bun.file() improvements: faster reading of large files with streaming support.
- Native support for TypeScript decorators (both legacy and TC39 proposals).
- Built-in test runner now supports snapshot testing and code coverage.
4. Package Manager and Workspace Enhancements
Bun's npm-compatible package manager (bun install) gets a speed bump of its own:
- Lockfile generation is now 1.5x faster.
- Workspace support is now stable, perfect for monorepos.
- Publishing packages directly from Bun with
bun publish(experimental).
Real-World Migration Story
Dianne Penn, a technical product manager at Anthropic, shared her team's experience migrating a production service from Node.js to Bun:

"We were running a data pipeline that processes real-time analytics. Cold starts with Node were around 400ms, tolerable but costly at scale. After migrating to Bun, cold starts dropped to under 150ms. Our total compute costs reduced by 25%."
How to Get Started with Bun v3.1
If you're new to Bun, here's a quick setup:
curl -fsSL https://bun.sh/install | bash
Or upgrade if you already have Bun:
bun upgrade
Verify the version:
bun --version
# Should be 3.1.x
Porting a Simple Express App
Let's see a quick migration. Here's a basic Express app:
// app.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
With Bun, you can run it directly:
bun run app.js
But for maximum performance, use Bun's native APIs:
// bun-server.js
Bun.serve({
port: 3000,
fetch(req) {
return new Response('Hello World!');
},
});
The Bigger Picture: What Bun v3.1 Means for JavaScript
Bun's meteoric rise has forced Node.js and Deno to innovate. Node.js recently added experimental support for TypeScript, and Deno improved its npm compatibility. This competition benefits everyone.

For frontend developers, the most practical impact is in the build toolchain. Bun's built-in transpiler, bundler, and package manager mean you can replace Webpack, Babel, and npm with a single binary. That's not just faster, it's simpler.
Conclusion
Bun v3.1 is a major step forward. It solidifies Bun as a viable alternative to Node.js for modern development, especially in performance-sensitive contexts. While it's not yet perfect, the rate of improvement is staggering.
If you haven't tried Bun yet, now is a great time. Install it, try running your current project, and see the difference. Your future self, and your build pipeline, will thank you.
What's your experience with Bun? Are you considering migrating from Node.js? Share your thoughts in the comments or on Twitter. Happy coding!
