name: environment-variables description: Add environment variable
Environment Variables
This is how we add environment variables to the project:
Add to
.env.example:NEW_VARIABLE=value_exampleAdd to
apps/web/env.ts:// For server-only variables server: { NEW_VARIABLE: z.string(), } // For client-side variables client: { NEXT_PUBLIC_NEW_VARIABLE: z.string(), } experimental__runtimeEnv: { NEXT_PUBLIC_NEW_VARIABLE: process.env.NEXT_PUBLIC_NEW_VARIABLE, }For client-side variables:
- Must be prefixed with
NEXT_PUBLIC_ - Add to both
clientandexperimental__runtimeEnvsections
- Must be prefixed with
Add to
turbo.jsonunderglobalDependencies:{ "tasks": { "build": { "env": [ "NEW_VARIABLE" ] } } }
examples:
input: |
Adding a server-side API key
.env.example
API_KEY=your_api_key_here
env.ts
server: { API_KEY: z.string(), }
turbo.json
"build": { "env": ["API_KEY"] } output: "Server-side environment variable properly added"
input: |
Adding a client-side feature flag
.env.example
NEXT_PUBLIC_FEATURE_ENABLED=false
env.ts
client: { NEXT_PUBLIC_FEATURE_ENABLED: z.coerce.boolean().default(false), }, experimental__runtimeEnv: { NEXT_PUBLIC_FEATURE_ENABLED: process.env.NEXT_PUBLIC_FEATURE_ENABLED, }
turbo.json
"build": { "env": ["NEXT_PUBLIC_FEATURE_ENABLED"] } output: "Client-side environment variable properly added"
references:
- apps/web/env.ts
- apps/web/.env.example
- turbo.json