Vercel with NextJS - Integrations

Vercel Next.js

Vercel with NextJS

Learn how to make Vercel, NextJS, and Dotenv Vault work together. This tutorial assumes you have already created a .env file and synced it.

You can find a complete example repo here.

1. Install dotenv

Install dotenv.

$ npm install dotenv --save

2. Preload dotenv

Preload NextJS scripts using dotenv. This will inject the environment variables ahead of NextJS.

"scripts": {
  "dev": "node -r dotenv/config ./node_modules/.bin/next dev",
  "build": "node -r dotenv/config ./node_modules/.bin/next build",
  "start": "node -r dotenv/config ./node_modules/.bin/next start",
  "lint": "node -r dotenv/config ./node_modules/.bin/next lint"


When using pnpm, add a .npmrc file with node-linker=hoisted. See pnpm/pnpm#4782 for more information.

3. Run dotenv-vault build

Run npx dotenv-vault build to build your encrypted .env.vault file.

$ npx dotenv-vault build


Run npx dotenv-vault keys production.

$ npx dotenv-vault keys production
remote:   Listing .env.vault decryption keys... done

dotenv://:[email protected]/vault/.env.vault?environment=production

Visit your Vercel Project > Settings > Environment Variables.

Set DOTENV_KEY to the value returned above.

5. Commit and push

That’s it!

Commit those changes safely to code and push to Vercel.

When the build runs, it will recognize the DOTENV_KEY, decrypt the .env.vault file, and load the production environment variables to ENV. If a DOTENV_KEY is not set (like during development on your local machine) it will fall back to regular dotenv.

You will know it worked when you see the message ‘Loading env from encrypted .env.vault’.