Skip to content

Instantly share code, notes, and snippets.

@Hero-Development
Last active August 23, 2022 19:50
Show Gist options
  • Save Hero-Development/100ede0b9e95f83e1cf28c915d0f6bc3 to your computer and use it in GitHub Desktop.
Save Hero-Development/100ede0b9e95f83e1cf28c915d0f6bc3 to your computer and use it in GitHub Desktop.
Downgrade React 18 to version 17

Downgrade React 18 to version 17

NOTE: this also downgrads webpack to version 4

Step 1: downgrade React modules

1a - Using NPM:

npm remove react react-dom react-scripts
npm add react@^17.0.2 react-dom@^17.0.2 react-scripts@^4.0.3

1b - Using yarn:

yarn remove react react-dom react-scripts
yarn add react@^17.0.2 react-dom@^17.0.2 react-scripts@^4.0.3

Here is a diff of what that might look like in package.json:

{
  "name": "squeebo-does-it",
  "version": "1.3.37",
  "private": true,
  "dependencies": {
-    "react": "^18.2.0",
-    "react-dom": "^18.2.0",
-    "react-scripts": "5.0.1",
+    "react": "^17.0.2",
+    "react-dom": "^17.0.2",
+    "react-scripts": "^4.0.3",
  }
}

Step 2: use the "old" index.js setup:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import reportWebVitals from './reportWebVitals';

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root'),
);

And the diff:

import React from 'react';
-import ReactDOM from 'react-dom/client';
+import ReactDOM from 'react-dom';
import App from './App';
import reportWebVitals from './reportWebVitals';

-const root = ReactDOM.createRoot(document.getElementById('root'));
-root.render(
+ReactDOM.render(
  <React.StrictMode>
    <App />
-  </React.StrictMode>
+  </React.StrictMode>,
+  document.getElementById('root'),
);

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