104

Is there a way to inject environment variables, e.g. REACT_APP_MY_API into the index.html file?

According to this, it can be done, but I can't seem to get it to work.

.env

REACT_APP_MY_API=https://something.com

index.html

<script type="text/javascript">
  console.log("%REACT_APP_MY_API%") // undefined 
  console.log("%NODE_ENV%") // development
</script>
1

6 Answers 6

130

I just tried with an (almost) new CRA setup and it works.

<head>
  <title>React App</title>
  <script type="text/javascript">
   console.log("%REACT_APP_TEST%") // OK
   console.log("%NODE_ENV%") // development
  </script>
</head>

Did you try restarting the server? I just tried changing the test variable with your example and it works if you restart the development server.

As someone pointed out in the comments, the official documentation of CRA has a section about that.

Sign up to request clarification or add additional context in comments.

2 Comments

Very strange, I had restarted and it still wasn't working. Working now, thanks!
I got the same problem. I have TypeScript project and I cannot access .env.local variables in index.html. I tried '%proces.env.REACT_APP_TEST_VAR%',"%REACT_APP_TEST_VAR%",${process.env.REACT_APP_TEST_VAR}. Tried to rebuild project and nothing worked. It gives me either an error "process is undefined" or treated it as a string. Anybody has any clue what can be wrong?
39

Make sure you restart your create-react-app when adding variables into the .env file

Also make sure you have >= [email protected]

I use .env variables for the meta title of a site with various language versions of the build:

<title>%REACT_APP_SITE_TITLE%</title>

1 Comment

This is only applied at build time.
32

From the docs (here):

  • make sure your react-scripts dependency version is equal or greater than 0.0.9
  • create a .env file at the same level of your package.json
  • make sure all you variables start with REACT_APP_; for example REACT_APP_TITLE
  • use them in you js / ts code using process.env.REACT_APP_XXX
  • or in you html code surrounding it with % ie <title>%REACT_APP_TITLE%</title>
  • restart your development server / re-compile your app when making changes to your .env file

Comments

4

If you want environmental variable in script tag, put the variable in quote:

<script src="https://maps.googleapis.com/maps/api/js?key=%REACT_APP_MAP_API%&v=3.exp&libraries=places" async
    ></script>

Comments

3

Solution in 2022

In create react app I have .env.production, .env.staging and .env.development.

In all .env files I have REACT_APP_FB_ID.

So in index.html I just use <meta name="fb:app_id" content="%REACT_APP_FB_ID%" />

1 Comment

Docs are here
1

I tried like this 'NODE_ENV=development npm start' and it works well

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.