diff --git a/extension/src/browser/extension/devpanel/index.tsx b/extension/src/browser/extension/devpanel/index.tsx
index af1823ad..af4fbfc3 100644
--- a/extension/src/browser/extension/devpanel/index.tsx
+++ b/extension/src/browser/extension/devpanel/index.tsx
@@ -1,5 +1,5 @@
import React, { CSSProperties } from 'react';
-import { render, unmountComponentAtNode } from 'react-dom';
+import { createRoot, Root } from 'react-dom/client';
import { Provider } from 'react-redux';
import { Persistor } from 'redux-persist';
import { REMOVE_INSTANCE, StoreAction } from '@redux-devtools/app';
@@ -27,23 +27,21 @@ let naTimeout: NodeJS.Timeout;
const isChrome = navigator.userAgent.indexOf('Firefox') === -1;
-function renderDevTools() {
- const node = document.getElementById('root');
- unmountComponentAtNode(node!);
+function renderDevTools(root: Root) {
+ root.unmount();
clearTimeout(naTimeout);
({ store, persistor } = configureStore(position, bgConnection));
- render(
+ root.render(
- ,
- node
+
);
rendered = true;
}
-function renderNA() {
+function renderNA(root: Root) {
if (rendered === false) return;
rendered = false;
naTimeout = setTimeout(() => {
@@ -76,32 +74,31 @@ function renderNA() {
);
}
- const node = document.getElementById('root');
- unmountComponentAtNode(node!);
- render(message, node);
+ root.unmount();
+ root.render(message);
store = undefined;
});
} else {
- const node = document.getElementById('root');
- unmountComponentAtNode(node!);
- render(message, node);
+ root.unmount();
+ root.render(message);
store = undefined;
}
}, 3500);
}
function init(id: number) {
- renderNA();
+ const root = createRoot(document.getElementById('root')!);
+ renderNA(root);
bgConnection = chrome.runtime.connect({
name: id ? id.toString() : undefined,
});
bgConnection.onMessage.addListener(
>(message: PanelMessage) => {
if (message.type === 'NA') {
- if (message.id === id) renderNA();
+ if (message.id === id) renderNA(root);
else store!.dispatch({ type: REMOVE_INSTANCE, id: message.id });
} else {
- if (!rendered) renderDevTools();
+ if (!rendered) renderDevTools(root);
store!.dispatch(message);
}
}
diff --git a/extension/src/browser/extension/options/index.tsx b/extension/src/browser/extension/options/index.tsx
index 55805985..b344b86b 100644
--- a/extension/src/browser/extension/options/index.tsx
+++ b/extension/src/browser/extension/options/index.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { render } from 'react-dom';
+import { createRoot } from 'react-dom/client';
import OptionsComponent from './Options';
import { Options } from './syncOptions';
@@ -13,10 +13,8 @@ chrome.runtime.getBackgroundPage((background) => {
};
const renderOptions = (options: Options) => {
- render(
- ,
- document.getElementById('root')
- );
+ const root = createRoot(document.getElementById('root')!);
+ root.render();
};
syncOptions.subscribe(renderOptions);
diff --git a/extension/src/browser/extension/window/index.tsx b/extension/src/browser/extension/window/index.tsx
index 4fc8d38a..41b72b08 100644
--- a/extension/src/browser/extension/window/index.tsx
+++ b/extension/src/browser/extension/window/index.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { render } from 'react-dom';
+import { createRoot } from 'react-dom/client';
import { Provider } from 'react-redux';
import { PersistGate } from 'redux-persist/integration/react';
import { UPDATE_STATE } from '@redux-devtools/app';
@@ -25,13 +25,13 @@ chrome.runtime.getBackgroundPage((window) => {
bg.onMessage.addListener(update);
update();
- render(
+ const root = createRoot(document.getElementById('root')!);
+ root.render(
- ,
- document.getElementById('root')
+
);
});
diff --git a/extension/src/browser/extension/window/remote.tsx b/extension/src/browser/extension/window/remote.tsx
index 4f8b196b..f91c372a 100644
--- a/extension/src/browser/extension/window/remote.tsx
+++ b/extension/src/browser/extension/window/remote.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { render } from 'react-dom';
+import { createRoot } from 'react-dom/client';
import { Root } from '@redux-devtools/app';
import '../../views/remote.pug';
@@ -15,7 +15,8 @@ chrome.storage.local.get(
},
(options) => {
const AppAsAny = Root as any;
- render(
+ const root = createRoot(document.getElementById('root')!);
+ root.render(
,
- document.getElementById('root')
+ />
);
}
);
diff --git a/packages/react-dock/demo/src/index.tsx b/packages/react-dock/demo/src/index.tsx
index b597a442..fb0bce67 100644
--- a/packages/react-dock/demo/src/index.tsx
+++ b/packages/react-dock/demo/src/index.tsx
@@ -1,5 +1,6 @@
import React from 'react';
-import ReactDOM from 'react-dom';
+import ReactDOM from 'react-dom/client';
import App from './App';
-ReactDOM.render(, document.getElementById('root'));
+const root = ReactDOM.createRoot(document.getElementById('root')!);
+root.render();
diff --git a/packages/react-json-tree/examples/src/index.tsx b/packages/react-json-tree/examples/src/index.tsx
index aca61f2f..7e1c5c48 100644
--- a/packages/react-json-tree/examples/src/index.tsx
+++ b/packages/react-json-tree/examples/src/index.tsx
@@ -1,5 +1,6 @@
-import { render } from 'react-dom';
+import { createRoot } from 'react-dom/client';
import React from 'react';
import App from './App';
-render(, document.getElementById('root'));
+const root = createRoot(document.getElementById('root')!);
+root.render();
diff --git a/packages/redux-devtools-app/README.md b/packages/redux-devtools-app/README.md
index 60167928..021e71e7 100644
--- a/packages/redux-devtools-app/README.md
+++ b/packages/redux-devtools-app/README.md
@@ -16,10 +16,11 @@ Also it's a react component you can use to build amazing monitor applications li
```js
import React from 'react';
-import ReactDom from 'react-dom';
+import ReactDOM from 'react-dom/client';
import { Root } from '@redux-devtools/app';
-ReactDom.render(, document.getElementById('root'));
+const root = ReactDOM.createRoot(document.getElementById('root'));
+root.render();
```
### Parameters
diff --git a/packages/redux-devtools-app/demo/index.tsx b/packages/redux-devtools-app/demo/index.tsx
index f95bc46a..97641977 100644
--- a/packages/redux-devtools-app/demo/index.tsx
+++ b/packages/redux-devtools-app/demo/index.tsx
@@ -1,8 +1,9 @@
import React from 'react';
-import { render } from 'react-dom';
+import { createRoot } from 'react-dom/client';
import { Root } from '../src';
-render(, document.getElementById('root'));
+const root = createRoot(document.getElementById('root')!);
+root.render();
if (module.hot) {
// https://github.com/webpack/webpack/issues/418#issuecomment-53398056
diff --git a/packages/redux-devtools-cli/app/index.html b/packages/redux-devtools-cli/app/index.html
index 1c8ee65d..453dcbf6 100644
--- a/packages/redux-devtools-cli/app/index.html
+++ b/packages/redux-devtools-cli/app/index.html
@@ -31,16 +31,15 @@