bunWay: Express Feel, Bun-Ready, 19 Built-In Middleware
Most teams don't avoid Bun because they dislike performance.
They avoid Bun because migration feels expensive:
- new framework mental model,
- rewritten middleware stack,
- route-by-route uncertainty,
- team retraining.
bunWay exists to remove that friction.
It gives you a Bun-native framework with the Express-style developer experience your team already knows.
What bunWay is
bunWay is a web framework for Bun with strong Express API compatibility:
- same
(req, res, next)handler style, - familiar routing patterns,
- familiar middleware flow,
- one package with 19 built-in middleware.
This is not about inventing a new style. It's about helping Express teams adopt Bun without feeling like they have to start from zero.
Why we built it
At JointOps, we kept seeing the same blocker:
"We want Bun, but we don't want to rewrite everything right now."
So we built bunWay for real migration constraints:
- existing Express codebases,
- business deadlines,
- teams that need predictable rollouts.
Who bunWay is for
You should look at bunWay if:
- your team already ships Express APIs,
- you want to adopt Bun incrementally,
- you want fewer moving parts in your middleware stack,
- you want a familiar developer experience instead of a full framework reset.
You should validate first if:
- you depend on niche Express internals,
- you need strict Node.js runtime compatibility,
- your app relies on uncommon behavior paths you haven't tested yet.
What you get out of the box
bunWay ships with 19 built-in middleware, including:
- body parsing (
json,urlencoded,text,raw) - security (
helmet,csrf,hpp,rateLimit,cors) - auth/session (
session,passport,cookieParser) - files/static (
upload,serveStatic) - utilities (
logger,compression,timeout,validate,errorHandler)
The point is simple: common API needs in one framework package.
Quick look
import bunway, { cors, helmet, logger } from "bunway";
const app = bunway();
app.use(bunway.json());
app.use(cors());
app.use(helmet());
app.use(logger("dev"));
app.get("/health", (req, res) => {
res.json({ ok: true });
});
app.listen(3000);
If you already know Express, this should feel immediately familiar.
Migration mindset (short version)
bunWay is best used as an incremental migration path:
- start with imports,
- move route groups gradually,
- validate behavior with tests,
- keep shipping.
No forced rewrite sprint.
Final thought
bunWay is not a "look how fast" product.
It's a "remove excuses to try Bun" product for teams that value delivery confidence and familiar patterns.
If that sounds like your team, start small and evaluate it in one service. Please leave a star on repo ⭐️
- Docs: https://bunway.jointops.dev
- GitHub: https://github.com/JointOps/bunway
- npm: https://www.npmjs.com/package/bunway
- Discord: https://discord.gg/fTF4qjaMFT
bun add bunway
Built by the JointOps team. MIT licensed. Contributions welcome.
Top comments (0)