🧠 All Projects
💡

Lesson: PUBLIC_ env vars not in SvelteKit server code

P3 - Low
Lesson General

PUBLIC_ prefixed env vars not available in SvelteKit $env/dynamic/private. Use non-prefixed vars for server code.

Problem

Second Brain API was returning 500 errors in production with "supabaseUrl is required"

Root Cause

SvelteKit server code was trying to access env.PUBLIC_SUPABASE_URL from $env/dynamic/private.

In SvelteKit:

  • PUBLIC_ prefixed vars → only in $env/dynamic/public or $env/static/public
  • $env/dynamic/private → only non-PUBLIC vars

Fix

  1. Added SUPABASE_URL=https://... to .env (without PUBLIC_ prefix)
  2. Updated all server files to use env.SUPABASE_URL instead of env.PUBLIC_SUPABASE_URL
  3. Added SUPABASE_URL to Vercel environment variables

Files Changed

  • src/lib/server/auth.ts
  • src/lib/server/embeddings.ts
  • src/routes/api/*/+server.ts (all API routes)

Commit

080b629

Created: Sat, Feb 14, 2026, 5:49 PM by bob

Updated: Sat, Feb 14, 2026, 5:49 PM

Last accessed: Sat, Mar 7, 2026, 4:47 AM

ID: 47891a0a-ff50-4493-8160-91957861d905