diff --git a/crates/oxc_linter/src/rules.rs b/crates/oxc_linter/src/rules.rs
index 548e71c54..0d464e11e 100644
--- a/crates/oxc_linter/src/rules.rs
+++ b/crates/oxc_linter/src/rules.rs
@@ -132,6 +132,7 @@ mod react {
pub mod no_children_prop;
pub mod no_dangerously_set_inner_html;
pub mod no_find_dom_node;
+ pub mod no_render_return_value;
pub mod no_unescaped_entities;
}
@@ -264,6 +265,7 @@ oxc_macros::declare_all_lint_rules! {
react::no_children_prop,
react::no_dangerously_set_inner_html,
react::no_find_dom_node,
+ react::no_render_return_value,
import::named,
import::no_cycle,
import::no_self_import,
diff --git a/crates/oxc_linter/src/rules/react/no_render_return_value.rs b/crates/oxc_linter/src/rules/react/no_render_return_value.rs
new file mode 100644
index 000000000..f6c039a62
--- /dev/null
+++ b/crates/oxc_linter/src/rules/react/no_render_return_value.rs
@@ -0,0 +1,135 @@
+use oxc_ast::{ast::Expression, AstKind};
+use oxc_diagnostics::{
+ miette::{self, Diagnostic},
+ thiserror::Error,
+};
+use oxc_macros::declare_oxc_lint;
+use oxc_semantic::ScopeFlags;
+use oxc_span::Span;
+
+use crate::{context::LintContext, rule::Rule, AstNode};
+
+#[derive(Debug, Error, Diagnostic)]
+#[error("eslint-plugin-react(no-render-return-value): Do not depend on the return value from ReactDOM.render.")]
+#[diagnostic(severity(warning))]
+struct NoRenderReturnValueDiagnostic(#[label] pub Span);
+
+#[derive(Debug, Default, Clone)]
+pub struct NoRenderReturnValue;
+
+declare_oxc_lint!(
+ /// ### What it does
+ ///
+ /// This rule will warn you if you try to use the ReactDOM.render() return value.
+ ///
+ /// ### Example
+ /// ```javascript
+ /// // Bad
+ /// vaa inst =ReactDOM.render(