oxc-project/oxc · error · OxcDiagnostic
React Hook {hook_name} has a missing dependency: {deps_prett
Error message
React Hook {hook_name} has a missing dependency: {deps_pretty} What it means
Raised by react/exhaustive-deps when a value used inside a hook callback is not listed in its dependency array (single missing dependency). Omitted dependencies cause stale closures and bugs when the value changes.
Source
Thrown at crates/oxc_linter/src/rules/react/exhaustive_deps.rs:123
dep.span.into()
}
})
.chain(std::iter::once(span.primary()));
let mut message = if single {
format!("React Hook {hook_name} has a missing dependency: {deps_pretty}")
} else {
format!("React Hook {hook_name} has missing dependencies: {deps_pretty}")
};
if let Some(dep) = mutable_ref_dependency {
let _ = write!(
message,
". Mutable values like '{dep}' aren't valid dependencies because mutating them doesn't re-render the component."
);
}
OxcDiagnostic::warn(message)
.with_labels(labels)
.with_help("Either include it or remove the dependency array.")
.with_error_code_scope(SCOPE)
}
fn unnecessary_dependency_diagnostic(hook_name: &str, dep_name: &str, span: Span) -> OxcDiagnostic {
OxcDiagnostic::warn(format!("React Hook {hook_name} has unnecessary dependency: {dep_name}"))
.with_label(span)
.with_help("Either include it or remove the dependency array.")
.with_error_code_scope(SCOPE)
}
fn dependency_array_not_array_literal_diagnostic(hook_name: &str, span: Span) -> OxcDiagnostic {
OxcDiagnostic::warn(format!(
"React Hook {hook_name} was passed a dependency list that is not an array literal. This means we can't statically verify whether you've passed the correct dependencies."
))
.with_label(span)
.with_help("Use an array literal as the second argument.")View on GitHub (pinned to e1e7af627c)
Solutions
- Add the listed value to the dependency array.
- If the value should not retrigger the hook, memoize it with useRef/useCallback/useMemo.
- Move the value inside the callback if it does not need to be reactive.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/oxc_linter/src/rules/react/exhaustive_deps.rs:123 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of oxc-project/oxc@e1e7af627c (2026-08-20).
Data as JSON: /api/errors/2b9f4ffb2fe4c69e.
Report an issue: GitHub.