Environment Variables
All environment variables use the VITE_ prefix so Vite exposes them to the client at build time.
File location
| File | Purpose |
|---|---|
.env.example | Template (committed to Git) |
.env | Local secrets (never commit) |
Add .env to .gitignore — it is already excluded by default.
Variables reference
| Variable | Required | Description |
|---|---|---|
VITE_FIREBASE_API_KEY | Yes | Firebase web API key |
VITE_FIREBASE_AUTH_DOMAIN | Yes | {projectId}.firebaseapp.com |
VITE_FIREBASE_PROJECT_ID | Yes | Firebase project ID |
VITE_FIREBASE_STORAGE_BUCKET | Yes | {projectId}.appspot.com |
VITE_FIREBASE_MESSAGING_SENDER_ID | Yes | FCM sender ID |
VITE_FIREBASE_APP_ID | Yes | Firebase app ID |
VITE_FIREBASE_MEASUREMENT_ID | No | Google Analytics measurement ID |
Example .env
VITE_FIREBASE_API_KEY=AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
VITE_FIREBASE_AUTH_DOMAIN=my-assets.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=my-assets
VITE_FIREBASE_STORAGE_BUCKET=my-assets.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=123456789012
VITE_FIREBASE_APP_ID=1:123456789012:web:abcdef123456
VITE_FIREBASE_MEASUREMENT_ID=G-XXXXXXXXXX
Loading order
- On app start,
src/firebase.tsreads env vars viaimport.meta.env - If missing, falls back to
src/config/defaultFirebase.tsdefaults - Super Admin saved config in Firestore
settings/adminoverrides on reload
Production builds
Environment variables are baked in at build time:
# Ensure .env is correct before building
npm run build
For CI/CD, inject env vars in your pipeline before npm run build.
Dev server API
During npm run dev, POST to /api/firebase-backend-config writes .env from the Settings UI. This only works in development mode.
warning
Never expose service account keys or admin SDK credentials in VITE_ variables. The client only needs the public web config.