Bird
Raised Fist0
Supabasecloud~10 mins

Environment variables and secrets in Supabase - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Environment variables and secrets
Start: Deploy Supabase Project
↓
Set Environment Variables
↓
Set Secrets (Sensitive Data)
↓
Supabase Reads Variables & Secrets
↓
Use Variables in Functions/Configs
↓
Run Project with Secure Config
↓
End
This flow shows how you set environment variables and secrets in Supabase, which the system then uses securely during project execution.
Execution Sample
Supabase
SUPABASE_URL=https://xyz.supabase.co
SUPABASE_ANON_KEY=anon-key-123

// Use in function:
const url = Deno.env.get('SUPABASE_URL');
This code sets environment variables for Supabase URL and anon key, then accesses the URL in code securely.
Process Table
StepActionVariable/Secret SetValueEffect
1Deploy Supabase projectNoneNoneProject created, ready for config
2Set environment variable SUPABASE_URLSUPABASE_URLhttps://xyz.supabase.coURL stored for project use
3Set secret SUPABASE_ANON_KEYSUPABASE_ANON_KEYanon-key-123Secret stored securely, hidden from logs
4Supabase reads variablesSUPABASE_URLhttps://xyz.supabase.coVariable available to runtime
5Supabase reads secretsSUPABASE_ANON_KEYanon-key-123Secret available securely to runtime
6Code accesses SUPABASE_URLSUPABASE_URLhttps://xyz.supabase.coCode uses URL to connect to Supabase
7Code accesses SUPABASE_ANON_KEYSUPABASE_ANON_KEYanon-key-123Code uses anon key for authentication
8Run projectNoneNoneProject runs with secure config
9ExitNoneNoneAll variables and secrets used securely
💡 All environment variables and secrets set and used securely; project runs with correct config
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5Final
SUPABASE_URLundefinedhttps://xyz.supabase.cohttps://xyz.supabase.cohttps://xyz.supabase.cohttps://xyz.supabase.cohttps://xyz.supabase.co
SUPABASE_ANON_KEYundefinedundefinedanon-key-123anon-key-123anon-key-123anon-key-123
Key Moments - 3 Insights
Why do we set environment variables separately from secrets?
Environment variables like URLs are less sensitive and can be visible in some logs, but secrets like keys must be stored securely and hidden from logs, as shown in steps 2 and 3 of the execution_table.
How does the code access these variables safely?
The code accesses variables via Deno.env.get('VAR_NAME'), which reads the secure environment at runtime, ensuring secrets are not hardcoded, as shown in steps 6 and 7.
What happens if a secret is missing?
If a secret is missing, the project may fail to authenticate or connect properly, causing errors at runtime, which would be evident if the value is undefined in the variable_tracker.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3. What is the value of SUPABASE_ANON_KEY?
Ahttps://xyz.supabase.co
Bundefined
Canon-key-123
Dnull
💡 Hint
Check the 'Variable/Secret Set' and 'Value' columns at step 3 in execution_table.
At which step does the code first access the SUPABASE_URL variable?
AStep 4
BStep 6
CStep 2
DStep 8
💡 Hint
Look for 'Code accesses SUPABASE_URL' in the Action column of execution_table.
If SUPABASE_ANON_KEY was not set at step 3, what would be its value at step 7?
Aundefined
Banon-key-123
Cnull
Dempty string
💡 Hint
Refer to variable_tracker to see how missing secrets appear as undefined.
Concept Snapshot
Environment variables store configuration like URLs.
Secrets store sensitive data like keys securely.
Set them in Supabase dashboard or CLI.
Access in code via Deno.env.get('VARIABLE_NAME').
Secrets are hidden from logs and safe at runtime.
Always keep secrets out of code files.
Full Transcript
This lesson shows how environment variables and secrets work in Supabase. First, you deploy your project. Then you set environment variables like SUPABASE_URL and secrets like SUPABASE_ANON_KEY. Supabase reads these securely at runtime. Your code accesses them using Deno.env.get(). This keeps sensitive data safe and your project configured correctly. The execution table traces each step from setting variables to running the project. The variable tracker shows how values change. Key moments clarify why secrets are separate and how code uses them. The quiz tests your understanding of these steps and values.

Practice

(1/5)
1. What is the main purpose of environment variables in Supabase?
easy
A. To display data on the website
B. To write SQL queries directly in the dashboard
C. To store important information like API keys outside the code
D. To create user accounts automatically

Solution

  1. Step 1: Understand environment variables

    Environment variables hold data like API keys or URLs outside the code to keep it safe and flexible.
  2. Step 2: Identify their use in Supabase

    Supabase uses environment variables to keep secrets safe and avoid hardcoding sensitive info.
  3. Final Answer:

    To store important information like API keys outside the code -> Option C
  4. Quick Check:

    Environment variables = store secrets safely [OK]
Hint: Environment variables keep secrets outside code [OK]
Common Mistakes:
  • Thinking environment variables are for writing SQL
  • Confusing environment variables with user data
  • Assuming environment variables display data
2. Which is the correct way to reference an environment variable named SUPABASE_URL in a Supabase project?
easy
A. env.SUPABASE_URL()
B. process.env.SUPABASE_URL
C. getEnv('SUPABASE_URL')
D. SUPABASE_URL.value

Solution

  1. Step 1: Recall environment variable syntax in JavaScript

    In JavaScript, environment variables are accessed using process.env.VARIABLE_NAME.
  2. Step 2: Match with Supabase usage

    Supabase projects use this standard way to access environment variables like SUPABASE_URL.
  3. Final Answer:

    process.env.SUPABASE_URL -> Option B
  4. Quick Check:

    Access env vars with process.env.VAR [OK]
Hint: Use process.env.VAR to access environment variables [OK]
Common Mistakes:
  • Using function calls like getEnv() which don't exist
  • Trying to access variables as object properties incorrectly
  • Forgetting the process.env prefix
3. Given this code snippet in a Supabase project:
const supabaseUrl = process.env.SUPABASE_URL;
const supabaseKey = process.env.SUPABASE_ANON_KEY;
console.log(supabaseUrl, supabaseKey);

What will be the output if SUPABASE_URL is set to https://xyz.supabase.co and SUPABASE_ANON_KEY is not set?
medium
A. https://xyz.supabase.co undefined
B. undefined undefined
C. https://xyz.supabase.co null
D. Error: SUPABASE_ANON_KEY not found

Solution

  1. Step 1: Check environment variable values

    SUPABASE_URL is set to a URL string, but SUPABASE_ANON_KEY is missing, so it is undefined.
  2. Step 2: Understand console.log output

    Logging both variables prints the URL string and undefined for the missing key.
  3. Final Answer:

    https://xyz.supabase.co undefined -> Option A
  4. Quick Check:

    Missing env vars print undefined [OK]
Hint: Missing env vars show as undefined in logs [OK]
Common Mistakes:
  • Expecting an error when env var is missing
  • Assuming missing vars print null
  • Confusing undefined with empty string
4. You added a secret API_SECRET in the Supabase dashboard but your app still logs undefined when accessing process.env.API_SECRET. What is the most likely cause?
medium
A. You must include the secret in your code manually
B. The secret name is case-insensitive and should be lowercase
C. Supabase does not support environment variables
D. You forgot to restart the app after adding the secret

Solution

  1. Step 1: Understand environment variable loading

    Environment variables are loaded when the app starts, so changes require a restart to take effect.
  2. Step 2: Identify the cause of undefined

    If the app logs undefined, it likely did not reload the updated environment variables after adding the secret.
  3. Final Answer:

    You forgot to restart the app after adding the secret -> Option D
  4. Quick Check:

    Restart app to load new env vars [OK]
Hint: Restart app after adding secrets to load them [OK]
Common Mistakes:
  • Thinking secret names are case-insensitive
  • Believing Supabase doesn't support env vars
  • Trying to hardcode secrets in code
5. You want to securely use a third-party API key in your Supabase Edge Function without exposing it in client code. Which approach is best?
hard
A. Store the API key as a secret in Supabase dashboard and access it via process.env inside the Edge Function
B. Hardcode the API key directly in the Edge Function code
C. Send the API key from the client app to the Edge Function on every request
D. Publish the API key in a public GitHub repo for easy access

Solution

  1. Step 1: Understand secure storage of secrets

    Secrets like API keys should never be hardcoded or exposed publicly to avoid leaks.
  2. Step 2: Use Supabase secrets in Edge Functions

    Storing the API key as a secret in the dashboard and accessing it via process.env inside the Edge Function keeps it secure and hidden from clients.
  3. Final Answer:

    Store the API key as a secret in Supabase dashboard and access it via process.env inside the Edge Function -> Option A
  4. Quick Check:

    Use secrets in server code, not client [OK]
Hint: Keep API keys in secrets, access only server-side [OK]
Common Mistakes:
  • Hardcoding keys in code risking exposure
  • Sending keys from client risking interception
  • Publishing keys publicly causing leaks
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard