[▲ Vercel Community](/) · [Categories](/categories) · [Latest](/latest) · [Top](/top) · [Live](/live) [Help](/c/help/9) # Next.js middleware fails on Edge Runtime but works with Node.js runtime on Vercel 32 views · 0 likes · 2 posts Chen Jiaxing (@rcfans) · 2026-03-06 Next.js Middleware fails on `Edge Runtime` but works with `runtime: 'nodejs'` on `Vercel`. I’m experiencing an issue where `Next.js` Middleware (`middleware.ts`) does not execute at all when deployed to `Vercel` using the default `Edge Runtime`. However, adding `export const runtime = 'nodejs'` makes it work correctly. ## Environment - **Framework:** `Next.js` `15.5.9` (`App Router`) - **Deployment:** `Vercel` (Production & Preview) - **Dependencies:** `@clerk/nextjs` `6.36.5`, but issue persists even with minimal middleware - **Local dev:** Works fine with `Edge Runtime` (`next dev`) ## Configuration ```tsx // middleware.ts (Edge - NOT working on Vercel) import { clerkMiddleware } from '@clerk/nextjs/server' export default clerkMiddleware() export const config = { matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'], } ``` ```tsx // middleware.ts (Node.js - WORKING on Vercel) export const runtime = 'nodejs' // Adding this fixes it import { clerkMiddleware } from '@clerk/nextjs/server' export default clerkMiddleware() ``` ## Observed Behavior - **With default Edge Runtime:** Middleware never executes (no logs in `Vercel` Function Logs). - **Error:** `auth()` throws: > **"can’t detect usage of clerkMiddleware()"** (because the middleware chain is broken). - **With `runtime = 'nodejs'`:** Middleware executes correctly on every matched request. ## Steps Tried 1. Simplified matcher to catch-all patterns 2. Cleared `Vercel` build cache & redeployed 3. Upgraded to latest `Next.js` and `@clerk/nextjs` versions 4. Verified file location (`src/middleware.ts` at project root level) ## Expected Behavior `Edge Runtime` should work as documented for Middleware, or documentation should clarify when `Node.js` runtime is required. ## Additional Context Issue appears specific to `Vercel` build environment; local `next dev` works fine with `Edge Runtime`. Pauline P. Narvas (@pawlean) · 2026-03-06 Closing this in favour of the open post you already commented in.