Examples
Start with the runnable servers—then steal these short patterns for workers or one-off scripts where you do not want framework middleware.
Runnable repos
Both repos share the same routes so you can compare Express middleware vs Nest interceptor + exception filter:
- replaystack-express-example —
GET /health,GET|POST /ok, BearerPOST /fail(stringquantity→ 500),GET /fail/type;REPLAYSTACK_SELF_TEST=1. - replaystack-nestjs-example — Same routes with
createReplayStackNestInterceptor+createReplayStackNestExceptionFilterfrom@replaystack/sdk/nestjs(default port 3556). - Install the SDK from npm (@replaystack/sdk) or browse the implementation in replaystack-sdk. Python: replaystack-sdk / replaystack-python-sdk. PHP: replaystack/sdk / replaystack-php-sdk.
Manual snippets
captureEvent · payment-ish
await replayStack.captureEvent({
eventType: "api",
method: "POST",
endpoint: "/api/payments",
status: "failed",
statusCode: 402,
requestPayload: { orderId: "ord_123", amount: 99.99 },
responsePayload: { error: "Card declined" },
});captureEvent · queue / worker
await replayStack.captureEvent({
eventType: "queue",
endpoint: "send-welcome-email-job",
status: "failed",
errorMessage: "SMTP timeout",
requestPayload: { jobId: "job_456", recipient: "user@example.com" },
});Express error middleware
Register captured routes first—error middleware listens for thrown failures after routers.
Outline
app.use(replayStackExpressErrorMiddleware(replayStack));
app.post("/api/orders", async (req, res) => {
replayStack.addBreadcrumb("Order handler started");
res.json({ ok: true });
});