# .env.development REACT_APP_API_URL=http://localhost:3001 REACT_APP_ENABLE_MOCKS=true Next.js supports .env.development natively but distinguishes between build-time and run-time variables. You must prefix browser-safe variables with NEXT_PUBLIC_ .
| File Name | Typical Usage | | :--- | :--- | | .env | The fallback or default file. Contains base variables. | | | Loaded specifically during local development ( npm start or dev ). | | .env.production | Loaded when the app is built for production. | | .env.test | Loaded during unit/integration testing (e.g., Jest). | .env.development
# .env.development NEXT_PUBLIC_GOOGLE_MAPS_KEY=dev_test_key_123 DATABASE_URL="postgresql://user@localhost:5432/dev_db" Vite loads .env.development when you run vite or vite build --mode development . Variables must be prefixed with VITE_ . Contains base variables
# settings.py import environ env = environ.Env() environ.Env.read_env(os.path.join(BASE_DIR, '.env.development')) To prevent your project from descending into "environment variable hell," follow these battle-tested principles. 1. Always Commit .env.development (With Care) This is a controversial point. You should not commit .env.production (it contains secrets). However, .env.development should be committed to your repository because it contains no real secrets—only local URLs, mock keys, and safe defaults. Committing it ensures all developers on your team have the same baseline configuration. .env.development
// package.json