vercel/next.js · error

Route ${workStore.route} used `${callingExpression}()` insid

Error message

Route ${workStore.route} used `${callingExpression}()` inside `generateStaticParams`. This is not supported because `generateStaticParams` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context

What it means

Error "Route ${workStore.route} used `${callingExpression}()` inside `generateStaticParams`. This is not supported because `generateStaticParams` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context" thrown in vercel/next.js.

Source

Thrown at packages/next/src/server/request/draft-mode.ts:86

      if (draftModeProvider) {
        return createOrGetCachedDraftMode(draftModeProvider, workStore)
      }

    // Otherwise, we fall through to providing an empty draft mode.
    // eslint-disable-next-line no-fallthrough
    case 'prerender':
    case 'prerender-legacy':
      // Return empty draft mode
      return createOrGetCachedDraftMode(null, workStore)
    case 'prerender-client':
    case 'validation-client': {
      const exportName = '`draftMode`'
      throw new InvariantError(
        `${exportName} must not be used within a Client Component. Next.js should be preventing ${exportName} from being included in Client Components statically, but did not in this case.`
      )
    }
    case 'generate-static-params':
      throw new Error(
        `Route ${workStore.route} used \`${callingExpression}()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`
      )

    default:
      return workUnitStore satisfies never
  }
}

function createOrGetCachedDraftMode(
  draftModeProvider: DraftModeProvider | null,
  workStore: WorkStore | undefined
): Promise<DraftMode> {
  const cacheKey = draftModeProvider ?? NullDraftMode
  const cachedDraftMode = CachedDraftModes.get(cacheKey)

  if (cachedDraftMode) {
    return cachedDraftMode
  }

View on GitHub (pinned to 258b1c1bc0)

Solutions

  1. Do not call draftMode() inside generateStaticParams; it runs at build time without a request.
Defensive patterns

Strategy: validation

When it happens

Trigger: draftMode() is called inside generateStaticParams.

Common situations: Using draft mode APIs at build time inside generateStaticParams.


AI-assisted analysis of vercel/next.js@258b1c1bc0 (2026-08-19). Data as JSON: /api/errors/d3d80a19e0ccb7a2. Report an issue: GitHub.