Vercel plugin: false positive "Use named exports" error on page.tsx / layout.tsx files

Resolved 💬 1 comment Opened Apr 30, 2026 by JackDempsey9 Closed May 31, 2026

Bug

The Vercel plugin's posttooluse-validate hook fires a false positive ERROR on every page.tsx, layout.tsx, sitemap.ts, loading.tsx, and not-found.tsx file in a Next.js App Router project.

Error message:

[ERROR]: Use named exports (GET, POST, PUT, DELETE) instead of default export for route handlers

Root cause: The validation rule in vercel-functions skill uses the regex pattern export\s+default\s+function which matches ALL files containing a default export. However, this rule is only relevant for route.ts files (API route handlers). Next.js App Router requires default exports for page.tsx, layout.tsx, sitemap.ts, loading.tsx, error.tsx, and not-found.tsx.

Location in plugin: skills/vercel-functions/SKILL.md lines 27-29:

validate:
  -
    pattern: export\s+default\s+function
    message: 'Use named exports (GET, POST, PUT, DELETE) instead of default export for route handlers'
    severity: error

Impact

  • Fires on every Write/Edit to any page or layout file
  • Displays a misleading ERROR that the user has to mentally ignore every time
  • Cannot be suppressed without disabling the entire vercel-functions skill
  • Particularly noisy in projects with many pages (my project has 44 page.tsx files)

Suggested fix

Add a filename filter so the rule only fires on route.ts / route.js files:

validate:
  -
    pattern: export\s+default\s+function
    message: 'Use named exports (GET, POST, PUT, DELETE) instead of default export for route handlers'
    severity: error
    onlyIfFilename: 'route\.(ts|js)$'

Or alternatively, use skipIfFilename to exclude known App Router files:

    skipIfFilename: 'page\.(tsx|jsx)$|layout\.(tsx|jsx)$|sitemap\.(ts|js)$|loading\.(tsx|jsx)$|error\.(tsx|jsx)$|not-found\.(tsx|jsx)$'

Environment

  • Claude Code version: 2.1.119
  • Vercel plugin version: 0.32.4 (claude-plugins-official)
  • Framework: Next.js 16 App Router
  • Plugin source: vercel@claude-plugins-official

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗