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 @@ diff --git a/packages/redux-devtools-inspector-monitor-test-tab/demo/src/index.tsx b/packages/redux-devtools-inspector-monitor-test-tab/demo/src/index.tsx index 1e3e0203..f31cfbb6 100644 --- a/packages/redux-devtools-inspector-monitor-test-tab/demo/src/index.tsx +++ b/packages/redux-devtools-inspector-monitor-test-tab/demo/src/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render } from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { Container } from '@redux-devtools/ui'; import { Provider } from 'react-redux'; import { @@ -50,7 +50,8 @@ const enhancer = compose( const store = createStore(rootReducer, enhancer); -render( +const root = createRoot(document.getElementById('root')!); +root.render( } - , - document.getElementById('root') + ); diff --git a/packages/redux-devtools-inspector-monitor/demo/src/index.tsx b/packages/redux-devtools-inspector-monitor/demo/src/index.tsx index 3ce6495b..026cf4ce 100644 --- a/packages/redux-devtools-inspector-monitor/demo/src/index.tsx +++ b/packages/redux-devtools-inspector-monitor/demo/src/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 { createStore, @@ -49,7 +49,8 @@ const enhancer = compose( const store = createStore(rootReducer, enhancer); -render( +const root = createRoot(document.getElementById('root')!); +root.render( @@ -57,6 +58,5 @@ render( {!useDevtoolsExtension && } - , - document.getElementById('root') + ); diff --git a/packages/redux-devtools-rtk-query-monitor/demo/src/index.tsx b/packages/redux-devtools-rtk-query-monitor/demo/src/index.tsx index 9a1655dd..ed11d81f 100644 --- a/packages/redux-devtools-rtk-query-monitor/demo/src/index.tsx +++ b/packages/redux-devtools-rtk-query-monitor/demo/src/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDOM from 'react-dom'; +import ReactDOM from 'react-dom/client'; import { Provider } from 'react-redux'; import { ChakraProvider } from '@chakra-ui/react'; import './index.css'; @@ -11,8 +11,8 @@ import { worker } from './mocks/browser'; function renderApp() { const rootElement = document.getElementById('root'); - - ReactDOM.render( + const root = ReactDOM.createRoot(rootElement!); + root.render( @@ -20,8 +20,7 @@ function renderApp() { - , - rootElement + ); } diff --git a/packages/redux-devtools-slider-monitor/examples/todomvc/src/index.tsx b/packages/redux-devtools-slider-monitor/examples/todomvc/src/index.tsx index 6f0b93e7..d1f82b41 100644 --- a/packages/redux-devtools-slider-monitor/examples/todomvc/src/index.tsx +++ b/packages/redux-devtools-slider-monitor/examples/todomvc/src/index.tsx @@ -1,10 +1,11 @@ import 'todomvc-app-css/index.css'; import React from 'react'; -import ReactDOM from 'react-dom'; +import ReactDOM from 'react-dom/client'; import configureStore from './store/configureStore'; import Root from './containers/Root'; const store = configureStore(); const rootEl = document.getElementById('root'); -ReactDOM.render(, rootEl); +const root = ReactDOM.createRoot(rootEl!); +root.render(); diff --git a/packages/redux-devtools/examples/counter/src/index.tsx b/packages/redux-devtools/examples/counter/src/index.tsx index d731d108..6f7fc48a 100644 --- a/packages/redux-devtools/examples/counter/src/index.tsx +++ b/packages/redux-devtools/examples/counter/src/index.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import { render } from 'react-dom'; +import { createRoot } from 'react-dom/client'; import configureStore from './store/configureStore'; import Root from './containers/Root'; const store = configureStore(); -render(, document.getElementById('root')); +const root = createRoot(document.getElementById('root')!); +root.render(); diff --git a/packages/redux-devtools/examples/todomvc/src/index.tsx b/packages/redux-devtools/examples/todomvc/src/index.tsx index ea5cd00e..1aa83dbb 100644 --- a/packages/redux-devtools/examples/todomvc/src/index.tsx +++ b/packages/redux-devtools/examples/todomvc/src/index.tsx @@ -1,9 +1,10 @@ import 'todomvc-app-css/index.css'; import React from 'react'; -import { render } from 'react-dom'; +import { createRoot } from 'react-dom/client'; import configureStore from './store/configureStore'; import Root from './containers/Root'; const store = configureStore(); -render(, document.getElementById('root')); +const root = createRoot(document.getElementById('root')!); +root.render();