From 5d4e8b552b084f0133290f56859ff0d002d457fa Mon Sep 17 00:00:00 2001
From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com>
Date: Tue, 17 Feb 2026 15:45:08 -0500
Subject: [PATCH] Extract rule: template-deprecated-render-helper
---
README.md | 1 +
.../template-deprecated-render-helper.md | 23 ++++++++++
.../template-deprecated-render-helper.js | 44 +++++++++++++++++++
.../template-deprecated-render-helper.js | 18 ++++++++
4 files changed, 86 insertions(+)
create mode 100644 docs/rules/template-deprecated-render-helper.md
create mode 100644 lib/rules/template-deprecated-render-helper.js
create mode 100644 tests/lib/rules/template-deprecated-render-helper.js
diff --git a/README.md b/README.md
index 1997fcd7ea..6224713570 100644
--- a/README.md
+++ b/README.md
@@ -236,6 +236,7 @@ rules in templates can be disabled with eslint directives with mustache or html
| [no-observers](docs/rules/no-observers.md) | disallow usage of observers | ✅ | | |
| [no-old-shims](docs/rules/no-old-shims.md) | disallow usage of old shims for modules | ✅ | 🔧 | |
| [no-string-prototype-extensions](docs/rules/no-string-prototype-extensions.md) | disallow usage of `String` prototype extensions | ✅ | | |
+| [template-deprecated-render-helper](docs/rules/template-deprecated-render-helper.md) | disallow {{render}} helper | | | |
### Ember Data
diff --git a/docs/rules/template-deprecated-render-helper.md b/docs/rules/template-deprecated-render-helper.md
new file mode 100644
index 0000000000..31b9ff554c
--- /dev/null
+++ b/docs/rules/template-deprecated-render-helper.md
@@ -0,0 +1,23 @@
+# ember/template-deprecated-render-helper
+
+
+
+Disallows the {{render}} helper which is deprecated.
+
+## Examples
+
+Incorrect:
+
+```gjs
+{{render "user"}}
+```
+
+Correct:
+
+```gjs
+
+```
+
+## References
+
+- [ember-template-lint deprecated-render-helper](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/deprecated-render-helper.md)
diff --git a/lib/rules/template-deprecated-render-helper.js b/lib/rules/template-deprecated-render-helper.js
new file mode 100644
index 0000000000..c214cbe717
--- /dev/null
+++ b/lib/rules/template-deprecated-render-helper.js
@@ -0,0 +1,44 @@
+/** @type {import('eslint').Rule.RuleModule} */
+module.exports = {
+ meta: {
+ type: 'suggestion',
+ docs: {
+ description: 'disallow {{render}} helper',
+ category: 'Deprecations',
+ strictGjs: true,
+ strictGts: true,
+ url: 'https://github.com/ember-cli/eslint-plugin-ember/tree/master/docs/rules/template-deprecated-render-helper.md',
+ },
+ fixable: null,
+ schema: [],
+ messages: {
+ deprecated:
+ 'The render helper is deprecated in favor of using components. See https://emberjs.com/deprecations/v2.x/#toc_code-render-code-helper',
+ },
+ },
+
+ create(context) {
+ function checkForRender(node) {
+ if (
+ node.path &&
+ node.path.type === 'GlimmerPathExpression' &&
+ node.path.original === 'render'
+ ) {
+ context.report({
+ node,
+ messageId: 'deprecated',
+ });
+ }
+ }
+
+ return {
+ GlimmerMustacheStatement(node) {
+ checkForRender(node);
+ },
+
+ GlimmerBlockStatement(node) {
+ checkForRender(node);
+ },
+ };
+ },
+};
diff --git a/tests/lib/rules/template-deprecated-render-helper.js b/tests/lib/rules/template-deprecated-render-helper.js
new file mode 100644
index 0000000000..393b639ebd
--- /dev/null
+++ b/tests/lib/rules/template-deprecated-render-helper.js
@@ -0,0 +1,18 @@
+const rule = require('../../../lib/rules/template-deprecated-render-helper');
+const RuleTester = require('eslint').RuleTester;
+
+const ruleTester = new RuleTester({
+ parser: require.resolve('ember-eslint-parser'),
+ parserOptions: { ecmaVersion: 2022, sourceType: 'module' },
+});
+
+ruleTester.run('template-deprecated-render-helper', rule, {
+ valid: ['', '{{this.render}}'],
+ invalid: [
+ {
+ code: '{{render "user"}}',
+ output: null,
+ errors: [{ messageId: 'deprecated' }],
+ },
+ ],
+});