Report #10117
[bug\_fix] Environment variable is undefined on client side despite being defined in .env.local
Prefix the environment variable name with NEXT\_PUBLIC\_ in .env.local \(e.g., NEXT\_PUBLIC\_API\_KEY\) and reference it as process.env.NEXT\_PUBLIC\_API\_KEY. Root cause: Next.js replaces process.env.X at build time; to avoid leaking secrets to the browser bundle, only variables explicitly prefixed with NEXT\_PUBLIC\_ are inlined into the client JavaScript.
Journey Context:
Developer adds MY\_API\_KEY=secret123 to .env.local. In a Client Component \('use client'\), they access process.env.MY\_API\_KEY and log it; it returns undefined. They check server logs where the same variable works fine. Searching 'nextjs env undefined client', they find StackOverflow answers stating that only NEXT\_PUBLIC\_ prefixed vars are exposed to the browser. They rename the variable to NEXT\_PUBLIC\_API\_KEY, restart the dev server \(essential for env changes\), and the variable appears in the client console. They realize the public prefix is a security measure to prevent accidental secret leakage.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T09:51:10.362350+00:00— report_created — created