Skip to content

Commit 89db3d4

Browse files
committed
Switches to createRoot, increases React minimum to v18 to support v19
1 parent b333a28 commit 89db3d4

File tree

18 files changed

+1175
-260
lines changed

18 files changed

+1175
-260
lines changed

demo/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@
1414
"@stitches/react": "1.2.8",
1515
"leva": "*",
1616
"noisejs": "^2.1.0",
17-
"react": "^17.0.2",
18-
"react-dom": "^17.0.2",
17+
"react": "^18.0.0",
18+
"react-dom": "^18.0.0",
1919
"react-use": "^17.3.2",
2020
"three": "^0.143.0",
2121
"wouter": "^2.7.5"
2222
},
2323
"devDependencies": {
24-
"@types/react": "^17.0.39",
25-
"@types/react-dom": "^17.0.11",
24+
"@types/react": "^18.0.0",
25+
"@types/react-dom": "^18.0.0",
2626
"@vitejs/plugin-react-refresh": "^1.3.6",
2727
"typescript": "^4.5.5",
2828
"vite": "2.7.13"

demo/src/sandboxes/leva-advanced-panels/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"main": "src/index.jsx",
55
"dependencies": {
66
"leva": "*",
7-
"react": "^17.0.1",
8-
"react-dom": "^17.0.1",
7+
"react": "^18.0.0",
8+
"react-dom": "^18.0.0",
99
"react-scripts": "4.0.3"
1010
},
1111
"scripts": {

demo/src/sandboxes/leva-busy/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"@radix-ui/react-icons": "^1.0.2",
77
"leva": "*",
88
"noisejs": "2.1.0",
9-
"react": "^17.0.1",
10-
"react-dom": "^17.0.1",
9+
"react": "^18.0.0",
10+
"react-dom": "^18.0.0",
1111
"react-scripts": "4.0.3",
1212
"react-use": "^17.2.4"
1313
},
@@ -24,8 +24,8 @@
2424
"not op_mini all"
2525
],
2626
"devDependencies": {
27-
"@types/react": "^17.0.2",
28-
"@types/react-dom": "^17.0.1",
27+
"@types/react": "^18.0.0",
28+
"@types/react-dom": "^18.0.0",
2929
"typescript": "^4.1.5"
3030
}
3131
}

demo/src/sandboxes/leva-custom-plugin/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"main": "src/index.tsx",
55
"dependencies": {
66
"leva": "*",
7-
"react": "^17.0.1",
8-
"react-dom": "^17.0.1",
7+
"react": "^18.0.0",
8+
"react-dom": "^18.0.0",
99
"react-scripts": "4.0.3"
1010
},
1111
"devDependencies": {
12-
"@types/react": "^17.0.2",
13-
"@types/react-dom": "^17.0.1",
12+
"@types/react": "^18.0.0",
13+
"@types/react-dom": "^18.0.0",
1414
"typescript": "^4.1.5"
1515
},
1616
"scripts": {

demo/src/sandboxes/leva-minimal/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
"dependencies": {
66
"@radix-ui/react-icons": "^1.0.2",
77
"leva": "*",
8-
"react": "^17.0.1",
9-
"react-dom": "^17.0.1",
8+
"react": "^18.0.0",
9+
"react-dom": "^18.0.0",
1010
"react-scripts": "4.0.3"
1111
},
1212
"scripts": {

demo/src/sandboxes/leva-plugin-bezier/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
"dependencies": {
77
"@leva-ui/plugin-bezier": "*",
88
"leva": "*",
9-
"react": "^17.0.1",
10-
"react-dom": "^17.0.1",
9+
"react": "^18.0.0",
10+
"react-dom": "^18.0.0",
1111
"react-scripts": "4.0.3"
1212
},
1313
"devDependencies": {
14-
"@types/react": "^17.0.2",
15-
"@types/react-dom": "^17.0.1",
14+
"@types/react": "^18.0.0",
15+
"@types/react-dom": "^18.0.0",
1616
"typescript": "^4.1.5"
1717
},
1818
"scripts": {

demo/src/sandboxes/leva-plugin-dates/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
"dependencies": {
77
"@leva-ui/plugin-dates": "*",
88
"leva": "*",
9-
"react": "^17.0.1",
10-
"react-dom": "^17.0.1",
9+
"react": "^18.0.0",
10+
"react-dom": "^18.0.0",
1111
"react-scripts": "4.0.3"
1212
},
1313
"devDependencies": {
14-
"@types/react": "^17.0.2",
15-
"@types/react-dom": "^17.0.1",
14+
"@types/react": "^18.0.0",
15+
"@types/react-dom": "^18.0.0",
1616
"typescript": "^4.1.5"
1717
},
1818
"scripts": {

demo/src/sandboxes/leva-plugin-plot/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
"dependencies": {
77
"@leva-ui/plugin-plot": "*",
88
"leva": "*",
9-
"react": "^17.0.1",
10-
"react-dom": "^17.0.1",
9+
"react": "^18.0.0",
10+
"react-dom": "^18.0.0",
1111
"react-scripts": "4.0.3"
1212
},
1313
"devDependencies": {
14-
"@types/react": "^17.0.2",
15-
"@types/react-dom": "^17.0.1",
14+
"@types/react": "^18.0.0",
15+
"@types/react-dom": "^18.0.0",
1616
"typescript": "^4.1.5"
1717
},
1818
"scripts": {

demo/src/sandboxes/leva-plugin-spring/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
"dependencies": {
77
"@leva-ui/plugin-spring": "*",
88
"leva": "*",
9-
"react": "^17.0.1",
10-
"react-dom": "^17.0.1",
9+
"react": "^18.0.0",
10+
"react-dom": "^18.0.0",
1111
"react-scripts": "4.0.3"
1212
},
1313
"devDependencies": {
14-
"@types/react": "^17.0.2",
15-
"@types/react-dom": "^17.0.1",
14+
"@types/react": "^18.0.0",
15+
"@types/react-dom": "^18.0.0",
1616
"typescript": "^4.1.5"
1717
},
1818
"scripts": {

demo/src/sandboxes/leva-scroll/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"dependencies": {
88
"leva": "*",
99
"noisejs": "2.1.0",
10-
"react": "^17.0.1",
11-
"react-dom": "^17.0.1",
10+
"react": "^18.0.0",
11+
"react-dom": "^18.0.0",
1212
"react-scripts": "4.0.3"
1313
},
1414
"scripts": {

demo/src/sandboxes/leva-theme/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"leva": "*",
77
"@leva-ui/plugin-spring": "*",
88
"noisejs": "2.1.0",
9-
"react": "^17.0.1",
10-
"react-dom": "^17.0.1",
9+
"react": "^18.0.0",
10+
"react-dom": "^18.0.0",
1111
"react-scripts": "4.0.3"
1212
},
1313
"scripts": {

demo/src/sandboxes/leva-transient/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"@react-three/drei": "^4.3.3",
77
"@react-three/fiber": "^6.0.21",
88
"leva": "*",
9-
"react": "^17.0.1",
10-
"react-dom": "^17.0.1",
9+
"react": "^18.0.0",
10+
"react-dom": "^18.0.0",
1111
"react-scripts": "4.0.3",
1212
"three": "^0.143.0"
1313
},

demo/src/sandboxes/leva-ui/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"main": "src/index.jsx",
77
"dependencies": {
88
"leva": "*",
9-
"react": "^17.0.1",
10-
"react-dom": "^17.0.1",
9+
"react": "^18.0.0",
10+
"react-dom": "^18.0.0",
1111
"react-dropzone": "11.3.1",
1212
"react-scripts": "4.0.3",
1313
"react-use-gesture": "^9.0.0"

package.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@
5858
},
5959
"bugs": "https://github.com/pmndrs/leva/issues",
6060
"peerDependencies": {
61-
"react": ">=16.8.0",
62-
"react-dom": ">=16.8.0"
61+
"react": ">=18.0.0",
62+
"react-dom": ">=18.0.0"
6363
},
6464
"devDependencies": {
6565
"@babel/core": "^7.17.0",
@@ -70,15 +70,15 @@
7070
"@emotion/react": "^11.7.1",
7171
"@preconstruct/cli": "^2.1.5",
7272
"@radix-ui/react-icons": "^1.0.3",
73-
"@size-limit/preset-big-lib": "^8.1.0",
73+
"@size-limit/preset-big-lib": "^11.0.0",
7474
"@storybook/addon-actions": "^6.4.18",
7575
"@storybook/addon-essentials": "^6.4.18",
7676
"@storybook/addon-links": "^6.4.18",
7777
"@storybook/addon-storysource": "^6.4.18",
7878
"@storybook/react": "^6.4.18",
7979
"@testing-library/cypress": "^8.0.2",
80-
"@types/react": "^17.0.39",
81-
"@types/react-dom": "^17.0.11",
80+
"@types/react": "^18.0.0",
81+
"@types/react-dom": "^18.0.0",
8282
"@typescript-eslint/eslint-plugin": "^5.10.2",
8383
"@typescript-eslint/parser": "^5.10.2",
8484
"all-contributors-cli": "^6.20.0",
@@ -97,8 +97,8 @@
9797
"postinstall-postinstall": "^2.1.0",
9898
"prettier": "^2.5.1",
9999
"pretty-quick": "^3.1.3",
100-
"react": "^17.0.2",
101-
"react-dom": "^17.0.2",
100+
"react": "^18.0.0",
101+
"react-dom": "^18.0.0",
102102
"size-limit": "^8.1.0",
103103
"start-server-and-test": "^1.14.0",
104104
"tsd": "^0.19.1",

packages/leva/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
]
1919
},
2020
"peerDependencies": {
21-
"react": ">=16.8.0",
22-
"react-dom": ">=16.8.0"
21+
"react": ">=18.0.0",
22+
"react-dom": ">=18.0.0"
2323
},
2424
"dependencies": {
2525
"@radix-ui/react-portal": "^1.0.2",

packages/leva/src/components/Leva/Leva.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useEffect } from 'react'
2+
import { createRoot } from 'react-dom/client'
23
import { levaStore } from '../../store'
34
import { LevaRoot, LevaRootProps } from './LevaRoot'
4-
import { render } from '../../utils/react'
55

66
let rootInitialized = false
77
let rootEl: HTMLElement | null = null
@@ -40,7 +40,7 @@ export function useRenderRoot(isGlobalPanel: boolean) {
4040
document.getElementById('leva__root') || Object.assign(document.createElement('div'), { id: 'leva__root' })
4141
if (document.body) {
4242
document.body.appendChild(rootEl)
43-
render(<Leva isRoot />, rootEl)
43+
createRoot(rootEl).render(<Leva isRoot />)
4444
}
4545
}
4646
rootInitialized = true

packages/leva/src/utils/react.ts

-16
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,4 @@
11
import React from 'react'
2-
import ReactDOM from 'react-dom'
3-
4-
/**
5-
* With React 18, renderers will warn when not using the new createRoot signature to opt-in to concurrent mode.
6-
* We're okay with creating a (blocking) legacy root to support older versions, so we disable the warning.
7-
* @see https://github.com/facebook/react/pull/21652
8-
*/
9-
export function render<P>(element: React.ReactElement<P>, container: HTMLElement): void {
10-
// eslint-disable-next-line no-console
11-
const error = console.error
12-
// eslint-disable-next-line no-console
13-
console.error = () => {}
14-
ReactDOM.render(element, container)
15-
// eslint-disable-next-line no-console
16-
console.error = error
17-
}
182

193
/*
204
* https://github.com/gregberge/react-merge-refs

0 commit comments

Comments
 (0)