diff --git a/CHANGELOG.md b/CHANGELOG.md
index 826696a029..cb5e6fbbe6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,7 +7,9 @@ This change log adheres to standards from [Keep a CHANGELOG](https://keepachange
 
 ### Fixed
 * [`jsx-no-leaked-render`]: prevent wrongly adding parens ([#3700][] @developer-bandi)
+* [`boolean-prop-naming`]: detect TS interfaces ([#3701][] @developer-bandi)
 
+[#3701]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3701
 [#3700]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3700
 
 ## [7.34.0] - 2024.03.03
diff --git a/lib/rules/boolean-prop-naming.js b/lib/rules/boolean-prop-naming.js
index b5dd37b529..62b687b6a1 100644
--- a/lib/rules/boolean-prop-naming.js
+++ b/lib/rules/boolean-prop-naming.js
@@ -264,7 +264,7 @@ module.exports = {
     }
 
     function findAllTypeAnnotations(identifier, node) {
-      if (node.type === 'TSTypeLiteral' || node.type === 'ObjectTypeAnnotation') {
+      if (node.type === 'TSTypeLiteral' || node.type === 'ObjectTypeAnnotation' || node.type === 'TSInterfaceBody') {
         const currentNode = [].concat(
           objectTypeAnnotations.get(identifier.name) || [],
           node
@@ -363,6 +363,10 @@ module.exports = {
         findAllTypeAnnotations(node.id, node.typeAnnotation);
       },
 
+      TSInterfaceDeclaration(node) {
+        findAllTypeAnnotations(node.id, node.body);
+      },
+
       // eslint-disable-next-line object-shorthand
       'Program:exit'() {
         if (!rule) {
@@ -386,7 +390,7 @@ module.exports = {
               [].concat(propType).forEach((prop) => {
                 validatePropNaming(
                   component.node,
-                  prop.properties || prop.members
+                  prop.properties || prop.members || prop.body
                 );
               });
             }
diff --git a/tests/lib/rules/boolean-prop-naming.js b/tests/lib/rules/boolean-prop-naming.js
index 2e2be01e5d..4cd01d6fc6 100644
--- a/tests/lib/rules/boolean-prop-naming.js
+++ b/tests/lib/rules/boolean-prop-naming.js
@@ -1239,5 +1239,20 @@ ruleTester.run('boolean-prop-naming', rule, {
         },
       ],
     },
+    {
+      code: `
+        interface TestFNType {
+          enabled: boolean
+        }
+        const HelloNew = (props: TestFNType) => { return <div /> };
+    `,
+      options: [{ rule: '^is[A-Z]([A-Za-z0-9]?)+' }],
+      features: ['ts', 'no-babel'],
+      errors: [
+        {
+          message: 'Prop name (enabled) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)',
+        },
+      ],
+    },
   ]),
 });