-
Notifications
You must be signed in to change notification settings - Fork 50.2k
Open
Description
What kind of issue is this?
- React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)
- babel-plugin-react-compiler (build issue installing or using the Babel plugin)
- eslint-plugin-react-compiler (build issue installing or using the eslint plugin)
- react-compiler-healthcheck (build issue installing or using the healthcheck script)
Link to repro
Repro steps
A codebase where I’m adopting React Compiler right now has multiple components with // eslint-disable-next-line react-hooks/exhaustive-deps put in front of a useEffect dependency array:
function Component() {
const { value, setOtherValue } = useSomeHook()
useEffect(() => {
console.log(value)
setOtherValue(value)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [value])
return <Child value={value} />
}(In this scenario, the developer’s intention is to run the effect only when value changes.)
This is, arguably, a code smell (if setOtherValue changes, we won’t call it, and that might lead to bugs!). But this doesn’t affect the effectiveness of memoization. However, Compiler bails out when it sees any ESLint comment like that, leading to deopts in components that would otherwise be perfectly memoized.
How often does this bug happen?
Every time
What version of React are you using?
19.1.1
What version of React Compiler are you using?
19.1.0-rc.2