Skip to content

Instantly share code, notes, and snippets.

Last active Jan 21, 2021
What would you like to do?

Configs + Environment Variables



  • Very simple to setup.
  • Automatically assigns configured values on top of process.env.
  • Automatically supports overriding configured values via Environment Variables.
  • Promotes best practices (FAQ):
    • Have only one config file.
    • Don't commit the file to version control.
  • Supported by Create React App out of the box.


  • Can't use dynamic values. e.g.:
    • Referencing other variables (can use dotenv-expand for that).
    • Importing constants from another file.
    • Setting a value by running a JavaScript expression like
  • All values are translated into strings.
    • That's just how process.env behaves when assigning values on it. e.g.:
      process.env.ENABLED = true;
      process.env.NUM = 3;
      console.log(process.env.ENABLED, process.env.NUM);
      // 'true' '3'



  • Very flexible.
  • Can use any data structure.
  • Supports overriding configured values via Environment Variables (although requires a mapping config).
  • Supports multi deployment/instance configs out of the box.


  • Doesn't automatically map config values on process.env.
    • That's because it takes a different approach to configs.
  • Environment Variables overrides require a non trivial mapping config (Custom Environment Variables).
  • Doesn't support ES Modules syntax (although TypeScript is supported).
Copy link

alexilyaev commented Jan 21, 2021


Prefer using .env as it's much simpler to setup and covers most use cases, especially for Frontend projects.
Use node-config only if you need complex or multi deployment/instance configs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment