Vite .env.local silently overrides .env — check both
Updating a config value in .env and not understanding why the running app keeps using a different value
Vite (and most modern dev tooling) loads .env.local on top of .env and the .local file wins. When you grep .env for a config value and edit it, your change has no effect if .env.local also defines that key. The trap is that .env.local is gitignored — so when you skim a fresh checkout you naturally read .env and assume that is the source of truth. Always grep BOTH files for any key you intend to change, and if the running process disagrees with what you wrote, suspect .env.local first before suspecting caching or env-injection weirdness. Same trap applies in CI vs local — .env.local existing on dev but not in CI is a classic source of works-on-my-machine bugs.
Before editing .env, do grep -l KEY_NAME .env* to see every file that defines the key. If multiple files define it, edit the most-specific (.local wins over plain), or remove the override deliberately. After changing any env var, also confirm the running process picked it up — most dev servers do not hot-reload .env.