React is one of the most popular programming languages but working with it can sometimes be challenging, especially the errors because they are not easy to understand.
A common error developers may encounter is the “‘React’ must be in scope when using JSX” error. This error occurs when React is not properly imported or initialized in a component that uses JSX syntax.A common error that developers may encounter is “‘React’ must be in scope when using JSX.” This error occurs when React is not properly imported or initialized in a component that uses JSX syntax.
To fix this error, make sure that React is imported and initialized in the component that uses JSX. For example, if you are using React in a component called App, you would import React at the top of the component and then initialize it with the ReactDOM library:
Once React is imported and initialized, you should be able to use JSX in your component without any errors.
Let see what causes these errors and how to fix them.
Causes of “‘react’ must be in scope when using JSX” Error?
To use JSX, you need to import the React library and initialize it. For example, if you are using React in a component called App, you would import React at the top of the component and then initialize it with the ReactDOM library.
Following, we imported React library from the react package and the ReactDOM library from the react-dom package. Then created a class called App that extends the React.Component class. The render() method of the App class returns a div element with the text “This is a React component!”. Finally, called the ReactDOM.render() method to render the App component to the DOM.
Once React is imported and initialized, you can use JSX in your component without any errors.
The “React must be in scope when using JSX” error can occur if React is not imported or initialized correctly in a component that uses react JSX syntax. To fix the error, import React and initialize it in the component that uses JSX. In React v17.0, React is automatically imported in files that use JSX, so you no longer need to import it explicitly.
Also it is better to use react header it is better to use at the bottom of the file for better HTML and CSS readability and page loading speed. Otherwise it can be used where needed, with link to external JS file.
Methods to fix “react-in-jsx-scope” Error
Fixing methods are divided into two, first where the React version is v17 or earlier. The second, where the React’s version is v17 and higher. Lets have a look at both ways to fix the error one-by-one.
1. React v17 and earlier
For v17 and older versions of React, even having an incorrect import statement for like small case ‘react’ gives an error. So, make sure the import statement is correct with capital “R” on “React” and written at the top of the file.
2. For React v17 and later versions
React v17.0 introduced JSX transform that added the feature of auto import for special functions from the React package’s new entry points. Meaning, no more writing import statement in every file where you need JSX.
For example, take the following functional component:
This made the life easier and resulted in less errors if you forgot to import React in every file. However, if you are still getting “‘React’ must be in scope when using JSX” then check package.json file and confirm React version.
If version is the v17 and later but still error occurs, this is technically no longer a React error but rather an ESLint error. So, you have to update the ESLint configurations.
However, if you are using React v17.0 or higher, you can safely disable the rules that force you to import React. This is because React v17.0 automatically imports special functions from the React package’s new entry points, so you no longer need to import React explicitly.
To disable the rules that force you to import React, you can add the following lines to your
ESLint configuration file:
You can also disable the rules by adding the following comments to your code:
// eslint-disable-next-line react/react-in-jsx-scope
In the code above, ‘react’ must be in scope when using jsx react/react-in-jsx-scope rule is turned off, so ESLint won’t throw errors when you fail to import React.
At this point, you should have fixed the “‘react’ must be in scope when using jsx” error once and for all. But it could be the case that something got in your way, and the error is still there.
The “‘React’ must be in scope when using JSX” error can occur in React versions prior to v17 if React is not imported correctly. It can also occur in higher versions of React v17 due to ESLint configurations or incorrectly installed dependencies. The specific steps to fix the error will vary depending on the React version you are using. If you cannot understand the error then hiring a react developer to fix the problem is the best solution.