Next.js middleware fails on Edge Runtime but works with Node.js runtime on Vercel

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

// 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).*)'],
}
// 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.

3 posts were merged into an existing topic: Next.js middleware fails to execute after Vercel CLI 50.28.0 build regression

Closing this in favour of the open post you already commented in.