From c0e33eb4faae150624a325d11403f9712374838e Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 30 Jun 2026 09:08:20 -0700 Subject: [PATCH] skip general rate limiter on dev mode --- server/src/api/middleware/rateLimiter.ts | 16 +++++++++------- server/src/app.ts | 3 ++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/server/src/api/middleware/rateLimiter.ts b/server/src/api/middleware/rateLimiter.ts index 99655149d..839f9377d 100644 --- a/server/src/api/middleware/rateLimiter.ts +++ b/server/src/api/middleware/rateLimiter.ts @@ -1,12 +1,14 @@ import rateLimit from "express-rate-limit"; -export const generalApiLimiter = rateLimit({ - windowMs: 60 * 1000, - limit: 600, - standardHeaders: true, - legacyHeaders: false, - ipv6Subnet: 64, -}); +export const generalApiLimiter = (devMode: boolean) => + rateLimit({ + windowMs: 60 * 1000, + limit: 600, + standardHeaders: true, + legacyHeaders: false, + ipv6Subnet: 64, + skip: () => devMode, + }); export const authApiLimiter = rateLimit({ windowMs: 60 * 1000, diff --git a/server/src/app.ts b/server/src/app.ts index 94a122137..7cb4b9510 100644 --- a/server/src/app.ts +++ b/server/src/app.ts @@ -38,7 +38,8 @@ export const createApp = ({ }; const publicStatusPageCorsOrigin = createStatusPageCorsOrigin(allowedOrigin, services.statusPagesRepository); - app.use(generalApiLimiter); + const devMode = envSettings.nodeEnv === "development"; + app.use(generalApiLimiter(devMode)); app.use((req, res, next) => { const corsOptions = isPublicStatusPageApiPath(req.method, req.path)