The Modern Node.js Middleware Toolkit - A lightweight, modular middleware system for Express and beyond.
- 🧩 Plugin-based architecture - Compose middleware like building blocks
- ⚡ Performance optimized - Low overhead middleware execution
- 🔌 Universal adapter - Works with Express, Fastify, and vanilla Node.js
- 📦 Batteries included - Common middleware utilities included
- 🛠️ TypeScript ready - Full type definitions out of the box
npm install middy-js
# or
yarn add middy-js
# or
pnpm add middy-js
const { Middy } = require('middy-js');
const express = require('express');
const app = express();
const middy = new Middy(app);
// Add middleware
middy.use((req, res, next) => {
console.log('Request received at', new Date());
next();
});
// Add error handler
middy.onError((err, req, res, next) => {
console.error(err);
res.status(500).send('Something broke!');
});
app.get('/', (req, res) => {
res.send('Hello Middy!');
});
app.listen(3000);
middy.use([
// Authentication
require('@middy/auth'),
// Request validation
require('@middy/validator'),
// Response formatting
require('@middy/format-response')
]);
Middy.js comes with several useful middleware:
-
bodyParser
- Parse JSON/URL-encoded bodies -
cors
- Cross-Origin Resource Sharing -
helmet
- Security headers -
logger
- Request logging -
rateLimit
- Rate limiting
const { bodyParser, cors } = require('middy-js/middleware');
middy.use([
cors(),
bodyParser()
]);
function myMiddleware(config) {
return {
before: (req, res, next) => {
// Pre-request logic
req.startTime = Date.now();
next();
},
after: (req, res, next) => {
// Post-request logic
console.log(`Request took ${Date.now() - req.startTime}ms`);
next();
}
}
}
middy.use(myMiddleware({ option: true }));
// Fastify adapter
const fastify = require('fastify');
const { FastifyMiddy } = require('middy-js/adapters');
const app = fastify();
const middy = new FastifyMiddy(app);
Framework | Requests/sec | Latency (ms) |
---|---|---|
Plain Express | 15,678 | 1.21 |
Middy.js | 14,892 | 1.34 |
Connect | 14,120 | 1.45 |
Benchmarks run on Node 18, 2.4GHz Quad-Core Intel Core i5
Official plugins:
-
@middy/auth
- Authentication utilities -
@middy/cache
- Request/response caching -
@middy/validator
- Request validation -
@middy/swagger
- OpenAPI/Swagger integration