# Vercel Support Ticket: Environment Variables Not Updating in Deployments
## Issue Summary
Environment variables are not being picked up by deployments despite being correctly set in the Vercel dashboard. The `DATABASE_URL` environment variable shows the correct value in the dashboard, but deployments continue to use an old cached value.
- **Vercel CLI Version**: 48.8.2
- **Next.js Version**: 14.2.25
## Problem Description
### What’s Happening
1. We update `DATABASE_URL` in Vercel Dashboard → Settings → Environment Variables
2. The value is correctly saved (verified in the dashboard)
3. We redeploy the application
4. The deployment still uses the **old** environment variable value
### Diagnostic Evidence
We have a diagnostic endpoint (`/api/test-db-staging`) that logs the actual `DATABASE_URL` value being used:
**Current Behavior:**
- `databaseUrlLength: 111` (old connection string length)
- `databaseUrlFull: “postgresql://postgres:XXXXXXXXXXXXX@db.ficbirpcqotketdpqirf.supabase.co:5432/postgres?sslmode=require”` (old direct connection)
**Expected Behavior:**
- `databaseUrlLength: ~149` (new connection pooler string length)
- `databaseUrlFull: “postgresql://postgres.ficbirpcqotketdpqirf:XXXXXXXXXXXXXXXXXX@aws-0-us-east-1.pooler.supabase.com:6543/postgres?sslmode=require”` (new pooler connection)
### Environment Variable Configuration
- **Variable Name**: `DATABASE_URL`
- **Current Value in Dashboard**: `postgresql://postgres.ficbirpcqotketdpqirf:xxxxxxxxxxxxxxx@aws-0-us-east-1.pooler.supabase.com:6543/postgres?sslmode=require`
- **Environment**: Set for **All** (Production, Preview, Development)
- **Status**: Shows as saved correctly in dashboard
## Steps Taken to Resolve
1. Updated environment variable in Vercel dashboard
2. Verified value is correct in dashboard (shows pooler URL)
3. Set variable for All environments (Production, Preview, Development)
4. Deleted and recreated the environment variable
5. Redeployed multiple times (with and without cache)
6. Unchecked “Use existing build cache” during redeploy
7. Pushed code changes to trigger fresh deployments
8. Verified no `.env` files or `vercel.json` are overriding the variable
9. Confirmed no duplicate `DATABASE_URL` entries exist
## Technical Details
### Diagnostic Endpoint Code
```typescript
// src/app/api/test-db-staging/route.ts
export async function GET() {
const diagnostics = {
hasDatabaseUrl: !!process.env.DATABASE_URL,
databaseUrlLength: process.env.DATABASE_URL?.length || 0,
databaseUrlFull: process.env.DATABASE_URL || ‘NOT SET’,
};
// … connection test
}
```
### Current Diagnostic Output
```json
{
“success”: false,
“error”: “Database connection failed”,
“diagnostics”: {
“hasDatabaseUrl”: true,
“databaseUrlLength”: 111,
“databaseUrlFull”: “postgresql://postgres:xxxxxxxxxxxxxx@db.ficbirpcqotketdpqirf.supabase.co:5432/postgres?sslmode=require”
}
}
```
### Expected Diagnostic Output
```json
{
“success”: true,
“diagnostics”: {
“hasDatabaseUrl”: true,
“databaseUrlLength”: 149,
“databaseUrlFull”: “postgresql://postgres.ficbirpcqotketdpqirf:xxxxxxxxxxxxx@aws-0-us-east-1.pooler.supabase.com:6543/postgres?sslmode=require”
}
}
```
## Impact
This prevents the application from connecting to the database, causing all API routes to return 500 errors:
- `/api/homes` → 500
- `/api/profile` → 500
- `/api/climate-zones` → 500
- `/api/property-types` → 500
- All other database-dependent routes → 500
## Requested Help
1. **Why is the deployment using the old environment variable value?**
- The dashboard shows the correct value
- But deployments continue using the old value
2. **Is there a Vercel caching mechanism we need to clear?**
- We’ve tried redeploying without cache
- Still shows old value
3. **Are there any project settings that might override environment variables?**
- We’ve checked vercel.json (empty)
- No .env files in the repository
4. **Is there a way to verify environment variables are loaded correctly?**
- Our diagnostic endpoint shows what’s actually being used
- It consistently shows the old value
## Additional Information
- **Environment Variable Length**: Old value is 111 characters, new value should be ~149 characters
- **Connection String Format**: Changing from direct connection (port 5432) to connection pooler (port 6543)
- **Database**: Supabase PostgreSQL
- **Region**: us-east-1
- **Deployment Environment**: Staging branch deploys to Production environment
## Expected Resolution
The deployment should use the environment variable value as set in the Vercel dashboard, not a cached or old value.
**Can you please help us understand why environment variables aren’t updating in deployments?**