[▲ 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.