Vercel “No Next.js version detected” for Next 15 app in pnpm monorepo

Current versus Expected behavior

  • Current:
    • Deploying apps/student-web fails with:

      Error: No Next.js version detected. Make sure your package.json has "next" in either "dependencies" or "devDependencies". Also check your Root Directory setting matches the directory of your package.json file.
      
    • Running locally from the app directory yields the same error:

      $ cd apps/student-web && vercel
      ...
      Error: No Next.js version detected...
      
    • apps/teacher-web (Vite) deploys successfully.

  • Expected:
    • Vercel detects Next.js in apps/student-web and builds/deploys normally.

Code, configuration, and steps that reproduce this issue

  1. Monorepo with pnpm workspaces; apps are under apps/.

  2. From apps/student-web, run:

    vercel pull --yes --environment=preview --token=$VERCEL_TOKEN
    vercel build --token=$VERCEL_TOKEN
    vercel deploy --prebuilt --token=$VERCEL_TOKEN
    
  3. Observe the “No Next.js version detected” error.

  • apps/student-web/package.json:
{
  "name": "@crabit/student-web",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "build": "next build",
    "check-types": "tsc --noEmit",
    "dev": "NEXT_PUBLIC_API_MOCKING=false next dev",
    "dev:mock": "NEXT_PUBLIC_API_MOCKING=true next dev",
    "lint": "biome check .",
    "start": "next start",
    "test": "vitest run",
    "test:e2e": "playwright test",
    "test:e2e:ui": "playwright test --ui",
    "test:watch": "vitest watch"
  },
  "dependencies": {
    "@crabit/api": "workspace:*",
    "@crabit/assets": "workspace:*",
    "@crabit/assets-icons": "workspace:*",
    "@crabit/crabit-ui": "workspace:*",
    "@sentry/nextjs": "^9.32.0",
    "@t3-oss/env-nextjs": "^0.13.8",
    "next": "15.3.4"
  },
  "devDependencies": {
    "@playwright/test": "^1.53.1",
    "@svgr/core": "^8.1.0",
    "@tsconfig/next": "^2.0.3",
    "@types/file-loader": "^5.0.4",
    "@vanilla-extract/next-plugin": "^2.4.14",
    "msw": "^2.10.2",
    "next-plugin-svgr": "^1.1.12"
  },
  "peerDependencies": {
    "@hookform/resolvers": "^5",
    "@tanstack/react-query": "^5",
    "react": "^19",
    "react-dom": "^19",
    "react-hook-form": "^7",
    "zod": "^3"
  }
}
  • apps/student-web/vercel.json:
{ "framework": "nextjs" }
  • apps/student-web/next.config.ts: exists; exports a valid NextConfig.

  • pnpm-workspace.yaml:

onlyBuiltDependencies:
  - sharp

packages:
  - apps/*
  - packages/*
  - packages/assets/*
  • GitHub Actions (student) excerpt:
- name: Pull Vercel Environment Information
  run: vercel pull --yes --environment=${{ github.event_name == 'push' && 'production' || 'preview' }} --token=${{ secrets.VERCEL_TOKEN }}
  working-directory: ./apps/student-web

- name: Build Project Artifacts with Vercel
  run: vercel build ${{ github.event_name == 'push' && '--prod' || '' }} --token=${{ secrets.VERCEL_TOKEN }}
  working-directory: ./apps/student-web

- name: Deploy to Vercel
  run: vercel deploy --prebuilt ${{ github.event_name == 'push' && '--prod' || '' }} --token=${{ secrets.VERCEL_TOKEN }}
  working-directory: ./apps/student-web

Project information (URL, framework, environment, project settings)

  • Monorepo: Turborepo + pnpm
  • Package manager: pnpm 10.14.0
  • Node: 22.x
  • Vercel CLI: 44.7.3
  • Frameworks:
    • apps/student-web: Next.js 15.3.4
    • apps/teacher-web: Vite (deploys fine)
  • .gitignore includes .vercel at repo root.
  • apps/teacher-web/.vercel/project.json exists and is linked.
  • apps/student-web/.vercel was not found at one point; running vercel from that folder still shows the detection error.

What I’ve tried

  • Running all Vercel commands strictly from apps/student-web.
  • Ensuring next is in dependencies (not just devDependencies).
  • Setting framework: "nextjs" in apps/student-web/vercel.json.
  • Using working-directory: ./apps/student-web in CI.
  • Verifying next.config.ts is present and valid.

Question

  • In a pnpm monorepo, why would Vercel fail to detect Next.js for apps/student-web even when:
    • next is present in that app’s dependencies,
    • commands run from the app directory,
    • and framework: "nextjs" is set?
  • Is there a monorepo Root Directory/linking nuance I’m missing (per-app .vercel link, dashboard Root Directory must be apps/student-web, etc.)?
  • Any additional settings required for pnpm workspaces so Vercel can correctly resolve the app-level package.json during build?

Title: Vercel “No Next.js version detected” for Next 15 app in pnpm monorepo under apps/student-web (teacher Vite app deploys fine)

Hi @crabit-official, welcome to the Vercel Community!

I’m sorry that you are running into this issue. Can you confirm that the Vercel project apps/student-web has the Root directory set as apps/student-web?