oxc-project/oxc · error · OxcDiagnostic
React Hook {hook_name} has unnecessary dependency: {dep_name
Error message
React Hook {hook_name} has unnecessary dependency: {dep_name} What it means
Raised by react/exhaustive_deps when the dependency array contains a value that is never referenced inside the hook callback. At the throw site the listed dependency causes the effect/callback/memo to be invalidated (re-run or recompute) needlessly on changes to that value, since it is not actually used. run() compares each declared dependency against the values the callback references and reports the superfluous ones, advising either including its usage or removing it from the array.
Source
Thrown at crates/oxc_linter/src/rules/react/exhaustive_deps.rs:130
} 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.")
.with_error_code_scope(SCOPE)
}
fn literal_in_dependency_array_diagnostic(span: Span) -> OxcDiagnostic {
OxcDiagnostic::warn("The literal is not a valid dependency because it never changes.")
.with_label(span)
.with_help("Remove the literal from the array.")View on GitHub (pinned to e1e7af627c)
Solutions
- Remove the unused value from the dependency array.
- Use the value inside the callback if it was omitted by mistake.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/oxc_linter/src/rules/react/exhaustive_deps.rs:130 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/42eef319447fbd97.
Report an issue: GitHub.