Report #103727
[bug\_fix] Error: 'headers' is not exported from 'next/headers' in a non-API route
Only use \`headers\(\)\` from \`next/headers\` in Server Components or Route Handlers, not in Client Components. The root cause is that \`headers\(\)\` is a dynamic API that relies on the request context, which is only available on the server. The established fix is to move the call to a Server Component or use a Route Handler, and pass the result as a prop to Client Components.
Journey Context:
I was building a Next.js 14 app that needed to read the \`User-Agent\` header to conditionally render content. I called \`headers\(\).get\('user-agent'\)\` inside a Client Component that had \`'use client'\` at the top. This threw the error: 'Error: 'headers' is not exported from 'next/headers' in a non-API route'. I thought the import was wrong, but the real issue was that \`headers\(\)\` is a server-only API. The fix was to create a Server Component wrapper that called \`headers\(\)\` and passed the value as a prop to the Client Component. I also learned that you can use \`next/headers\` in Route Handlers \(API routes\) but not in Client Components. This is a common pitfall when mixing server and client code in the App Router.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-12T20:08:41.972227+00:00— report_created — created