Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a49f676

Browse files
authored
[devtools] Apply React Compiler to Next.js DevTools source (#82004)
1 parent 4d9361f commit a49f676

File tree

10 files changed

+89
-5
lines changed

10 files changed

+89
-5
lines changed

.eslintrc.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,15 @@
242242
"rules": {
243243
"react/jsx-no-undef": "off"
244244
}
245+
},
246+
{
247+
"files": [
248+
"packages/next/src/next-devtools/dev-overlay/**/*.tsx",
249+
"packages/next/src/next-devtools/dev-overlay/**/*.ts"
250+
],
251+
"rules": {
252+
"react-hooks/react-compiler": "error"
253+
}
245254
}
246255
],
247256
"rules": {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@
173173
"eslint-plugin-jsdoc": "48.0.4",
174174
"eslint-plugin-mdx": "3.1.5",
175175
"eslint-plugin-react": "7.35.0",
176-
"eslint-plugin-react-hooks": "5.0.0",
176+
"eslint-plugin-react-hooks": "6.0.0-rc.1",
177177
"eslint-v8": "npm:eslint@^8.57.0",
178178
"event-stream": "4.0.1",
179179
"execa": "2.0.3",

packages/next/next-devtools.webpack-config.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,25 @@ module.exports = ({ dev, ...rest }) => {
9191
},
9292
type: 'javascript/auto',
9393
},
94+
{
95+
test: /\.(ts|tsx)$/,
96+
exclude: [/node_modules/],
97+
loader: 'babel-loader',
98+
options: {
99+
plugins: [
100+
[
101+
'babel-plugin-react-compiler',
102+
/**
103+
* @type {import('babel-plugin-react-compiler').PluginOptions}
104+
*/
105+
({}),
106+
],
107+
['@babel/plugin-syntax-typescript', { isTSX: true }],
108+
],
109+
sourceMaps: true,
110+
},
111+
type: 'javascript/auto',
112+
},
94113
{
95114
test: /\.css$/,
96115
use: [

packages/next/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@
145145
"@babel/plugin-syntax-dynamic-import": "7.8.3",
146146
"@babel/plugin-syntax-import-attributes": "7.26.0",
147147
"@babel/plugin-syntax-jsx": "7.25.9",
148+
"@babel/plugin-syntax-typescript": "7.25.4",
148149
"@babel/plugin-transform-class-properties": "7.25.9",
149150
"@babel/plugin-transform-export-namespace-from": "7.25.9",
150151
"@babel/plugin-transform-modules-commonjs": "7.26.3",
@@ -234,6 +235,7 @@
234235
"async-retry": "1.2.3",
235236
"async-sema": "3.0.0",
236237
"axe-playwright": "2.0.3",
238+
"babel-loader": "10.0.0",
237239
"babel-plugin-react-compiler": "19.1.0-rc.2",
238240
"babel-plugin-transform-define": "2.0.0",
239241
"babel-plugin-transform-react-remove-prop-types": "0.4.24",

packages/next/src/next-devtools/dev-overlay/components/devtools-panel/resize/resize-provider.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ export const ResizeProvider = ({ value, children }: ResizeProviderProps) => {
125125
value.resizeRef.current.style.width = `${width}px`
126126
value.resizeRef.current.style.height = `${height}px`
127127
}
128+
// eslint-disable-next-line react-hooks/react-compiler
128129
// eslint-disable-next-line react-hooks/exhaustive-deps
129130
}, [])
130131

packages/next/src/next-devtools/dev-overlay/components/errors/dev-tools-indicator/draggable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ export function useDrag(options: UseDragOptions) {
310310
machine.current = { state: 'drag', pointerId: e.pointerId }
311311
ref.current?.setPointerCapture(e.pointerId)
312312
ref.current?.classList.add('dev-tools-grabbing')
313+
// eslint-disable-next-line react-hooks/react-compiler -- Bug in react-hooks/react-compiler
313314
document.body.style.userSelect = 'none'
314315
document.body.style.webkitUserSelect = 'none'
315316
options.onDragStart?.()

packages/next/src/next-devtools/dev-overlay/components/errors/dev-tools-indicator/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export function useFocusTrap(
6161
clearTimeout(id)
6262
rootNode?.removeEventListener('keydown', onTab)
6363
}
64+
// eslint-disable-next-line react-hooks/react-compiler
6465
// eslint-disable-next-line react-hooks/exhaustive-deps
6566
}, [active])
6667
}
@@ -148,8 +149,7 @@ export function useClickOutsideAndEscape(
148149
ownerDocumentEl?.removeEventListener('mousedown', handleClickOutside)
149150
ownerDocumentEl?.removeEventListener('keydown', handleKeyDown)
150151
}
151-
// eslint-disable-next-line react-hooks/exhaustive-deps
152-
}, [active, rootRef, triggerRef])
152+
}, [active, close, ownerDocument, rootRef, triggerRef])
153153
}
154154

155155
//////////////////////////////////////////////////////////////////////////////////////

packages/next/src/next-devtools/dev-overlay/components/errors/error-overlay-call-stack/error-overlay-call-stack.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export function ErrorOverlayCallStack({
3636
dialog.removeEventListener('transitionend', onTransitionEnd)
3737
setIsIgnoreListOpen(false)
3838
}
39+
// eslint-disable-next-line react-hooks/react-compiler -- Bug in react-hooks/react-compiler
3940
dialog.style.height = `${initialDialogHeight.current}px`
4041
dialog.addEventListener('transitionend', onTransitionEnd)
4142
} else {

packages/next/src/next-devtools/dev-overlay/menu/dev-overlay-menu.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ export const DevtoolMenu = ({
141141
menuRef,
142142
setSelectedIndex,
143143
})
144+
// eslint-disable-next-line react-hooks/react-compiler
144145
// eslint-disable-next-line react-hooks/exhaustive-deps
145146
}, [])
146147

pnpm-lock.yaml

Lines changed: 52 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)