@vitalsjs/express
v1.1.1
Published
Express adaptor for @vitalsjs
Downloads
90
Maintainers
Readme
🚨 Important: Framework support is currently limited to Express. Vitals currently ships with an official adapter for Express only. Support for additional Node.js frameworks is planned.
Vitals provides real-time monitoring for Express applications through middleware-based request tracking and a built-in live dashboard.
⚠️ Note: Vitals is designed for live inspection and debugging — not long-term metrics storage or alerting.
🚂 @vitalsjs/express
Express.js integration layer for Vitals.
@vitalsjs/express connects Express applications with the Vitals engine by providing request tracking middleware and a dashboard router.
📥 Installation
npm install @vitalsjs/expressor:
pnpm add @vitalsjs/express📋 Requirements
- 🟢 Node.js >= 18
- 🚂 Express 4 or 5
🚀 Quick start
import express from "express";
import { VitalsEngine } from "@vitalsjs/core";
import {
createVitalsRouter,
vitalsMiddleware,
} from "@vitalsjs/express";
const app = express();
const engine = new VitalsEngine().start();
app.use(
"/vitals",
createVitalsRouter({ engine })
);
app.use(vitalsMiddleware(engine));
app.get("/api/health", (_req, res) => {
res.json({ ok: true });
});
app.listen(3000);Open:
http://localhost:3000/vitals✨ Features
- 📡 Request monitoring — automatically tracks Express traffic
- 📊 Live dashboard — built-in Vitals UI route
- 🔁 SSE streaming — real-time browser updates
- ⏱️ Latency tracking — request duration measurements
- 🚦 Status tracking — HTTP status distribution
- 🛤️ Route tracking — aggregated route metrics
- 🔐 Authorization support — protect dashboard access
🧩 Middleware
app.use(vitalsMiddleware(engine));The middleware records:
- request count
- response duration
- status codes
- aborted requests
📊 Dashboard router
app.use(
"/vitals",
createVitalsRouter({
engine,
})
);Available endpoints:
| Method | Path | Description |
| ------ | --------- | ------------------ |
| GET | / | Dashboard UI |
| GET | /events | SSE metrics stream |
🔐 Custom authorization
createVitalsRouter({
engine,
authorize: (req) => {
return req.headers.authorization === "Bearer token";
},
});By default, dashboard access is restricted to loopback clients.
🛡️ Content Security Policy (CSP)
The dashboard serves a standalone HTML application and automatically sets a route-specific Content-Security-Policy header.
This policy only applies to responses served by the Vitals dashboard routes and does not affect the rest of your Express application.
⚠️ Mount order
Mount the dashboard router before the middleware:
app.use("/vitals", createVitalsRouter({ engine }));
app.use(vitalsMiddleware(engine));This prevents the dashboard's long-lived SSE connection from being counted as application traffic.
🔌 Related packages
- 📦
@vitalsjs/core— metrics engine - 📊
@vitalsjs/ui— dashboard interface
📄 License
MIT © 2026 Ayush Jain
