Next.js only statically inlines NEXT_PUBLIC_* variables when accessed via dot notation (process.env.NEXT_PUBLIC_SUPABASE_URL). The generic requireEnv helper used bracket notation (process.env[name]) which Next.js cannot replace at build time, causing the browser bundle to always see undefined regardless of what is set in the Vercel dashboard. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>