diff --git a/vendor/magento/module-re-captcha-contact/Plugin/Customer/DisableEditAccountButton.php b/vendor/magento/module-re-captcha-contact/Plugin/Customer/DisableEditAccountButton.php
new file mode 100644
index 00000000..8d7daca1
--- /dev/null
+++ b/vendor/magento/module-re-captcha-contact/Plugin/Customer/DisableEditAccountButton.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\ReCaptchaCustomer\Plugin\Customer;
+
+use Magento\Framework\Exception\InputException;
+use Magento\ReCaptchaUi\Model\IsCaptchaEnabledInterface;
+use Magento\Customer\ViewModel\EditAccountButton;
+
+/**
+ * Disable Edit Account button while captcha is loading
+ */
+class DisableEditAccountButton
+{
+    /**
+     * @var IsCaptchaEnabledInterface
+     */
+    private $isCaptchaEnabled;
+
+    /**
+     * @param IsCaptchaEnabledInterface $isCaptchaEnabled
+     */
+    public function __construct(
+        IsCaptchaEnabledInterface $isCaptchaEnabled
+    ) {
+        $this->isCaptchaEnabled = $isCaptchaEnabled;
+    }
+
+    /**
+     * Temporally disable Edit Account button while captcha is loading
+     *
+     * @param EditAccountButton $subject
+     * @return bool
+     * @throws InputException
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function afterDisabled(EditAccountButton $subject): bool
+    {
+        $key = 'customer_edit';
+        return $this->isCaptchaEnabled->isCaptchaEnabledFor($key);
+    }
+}
diff --git a/vendor/magento/module-re-captcha-contact/Plugin/DisableContactUsButton.php b/vendor/magento/module-re-captcha-contact/Plugin/DisableContactUsButton.php
new file mode 100644
index 00000000..bc172518
--- /dev/null
+++ b/vendor/magento/module-re-captcha-contact/Plugin/DisableContactUsButton.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\ReCaptchaContact\Plugin;
+
+use Magento\Framework\Exception\InputException;
+use Magento\ReCaptchaUi\Model\IsCaptchaEnabledInterface;
+use Magento\Contact\ViewModel\ContactUsButton;
+
+/**
+ * Disable button Contact Us while captcha is loading
+ */
+class DisableContactUsButton
+{
+    /**
+     * @var IsCaptchaEnabledInterface
+     */
+    private $isCaptchaEnabled;
+
+    /**
+     * @param IsCaptchaEnabledInterface $isCaptchaEnabled
+     */
+    public function __construct(
+        IsCaptchaEnabledInterface $isCaptchaEnabled
+    ) {
+        $this->isCaptchaEnabled = $isCaptchaEnabled;
+    }
+
+    /**
+     * Temporally disable Contact Us button while captcha is loading
+     *
+     * @param ContactUsButton $subject
+     * @return bool
+     * @throws InputException
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function afterDisabled(ContactUsButton $subject): bool
+    {
+        $key = 'contact';
+        return $this->isCaptchaEnabled->isCaptchaEnabledFor($key);
+    }
+}
diff --git a/vendor/magento/module-re-captcha-contact/composer.json b/vendor/magento/module-re-captcha-contact/composer.json
index 419d0411..a1a526dc 100644
--- a/vendor/magento/module-re-captcha-contact/composer.json
+++ b/vendor/magento/module-re-captcha-contact/composer.json
@@ -6,6 +6,9 @@
         "magento/framework": "*",
         "magento/module-re-captcha-ui": "1.1.*"
     },
+    "suggest": {
+        "magento/module-contact": "*"
+    },
     "type": "magento2-module",
     "license": "OSL-3.0",
     "autoload": {
diff --git a/vendor/magento/module-re-captcha-contact/etc/frontend/di.xml b/vendor/magento/module-re-captcha-contact/etc/frontend/di.xml
new file mode 100644
index 00000000..de68b013
--- /dev/null
+++ b/vendor/magento/module-re-captcha-contact/etc/frontend/di.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
+    <type name="Magento\Contact\ViewModel\ContactUsButton">
+        <plugin sortOrder="1" name="recaptcha_disable_contact_us_button"
+                type="Magento\ReCaptchaContact\Plugin\DisableContactUsButton"/>
+    </type>
+</config>
diff --git a/vendor/magento/module-re-captcha-customer/Plugin/Customer/DisableCreateAccountButton.php b/vendor/magento/module-re-captcha-customer/Plugin/Customer/DisableCreateAccountButton.php
new file mode 100644
index 00000000..ea6e3ebc
--- /dev/null
+++ b/vendor/magento/module-re-captcha-customer/Plugin/Customer/DisableCreateAccountButton.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\ReCaptchaCustomer\Plugin\Customer;
+
+use Magento\Framework\Exception\InputException;
+use Magento\ReCaptchaUi\Model\IsCaptchaEnabledInterface;
+use Magento\Customer\ViewModel\CreateAccountButton;
+
+/**
+ * Disable button Create Account while captcha is loading
+ */
+class DisableCreateAccountButton
+{
+    /**
+     * @var IsCaptchaEnabledInterface
+     */
+    private $isCaptchaEnabled;
+
+    /**
+     * @param IsCaptchaEnabledInterface $isCaptchaEnabled
+     */
+    public function __construct(
+        IsCaptchaEnabledInterface $isCaptchaEnabled
+    ) {
+        $this->isCaptchaEnabled = $isCaptchaEnabled;
+    }
+
+    /**
+     * Temporally disable button Create Account while captcha is loading
+     *
+     * @param CreateAccountButton $subject
+     * @return bool
+     * @throws InputException
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function afterDisabled(CreateAccountButton $subject): bool
+    {
+        $key = 'customer_create';
+        return $this->isCaptchaEnabled->isCaptchaEnabledFor($key);
+    }
+}
diff --git a/vendor/magento/module-re-captcha-customer/Plugin/Customer/DisableEditAccountButton.php b/vendor/magento/module-re-captcha-customer/Plugin/Customer/DisableEditAccountButton.php
new file mode 100644
index 00000000..8d7daca1
--- /dev/null
+++ b/vendor/magento/module-re-captcha-customer/Plugin/Customer/DisableEditAccountButton.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\ReCaptchaCustomer\Plugin\Customer;
+
+use Magento\Framework\Exception\InputException;
+use Magento\ReCaptchaUi\Model\IsCaptchaEnabledInterface;
+use Magento\Customer\ViewModel\EditAccountButton;
+
+/**
+ * Disable Edit Account button while captcha is loading
+ */
+class DisableEditAccountButton
+{
+    /**
+     * @var IsCaptchaEnabledInterface
+     */
+    private $isCaptchaEnabled;
+
+    /**
+     * @param IsCaptchaEnabledInterface $isCaptchaEnabled
+     */
+    public function __construct(
+        IsCaptchaEnabledInterface $isCaptchaEnabled
+    ) {
+        $this->isCaptchaEnabled = $isCaptchaEnabled;
+    }
+
+    /**
+     * Temporally disable Edit Account button while captcha is loading
+     *
+     * @param EditAccountButton $subject
+     * @return bool
+     * @throws InputException
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function afterDisabled(EditAccountButton $subject): bool
+    {
+        $key = 'customer_edit';
+        return $this->isCaptchaEnabled->isCaptchaEnabledFor($key);
+    }
+}
diff --git a/vendor/magento/module-re-captcha-customer/Plugin/Customer/DisableLoginButton.php b/vendor/magento/module-re-captcha-customer/Plugin/Customer/DisableLoginButton.php
new file mode 100644
index 00000000..b0713fa3
--- /dev/null
+++ b/vendor/magento/module-re-captcha-customer/Plugin/Customer/DisableLoginButton.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\ReCaptchaCustomer\Plugin\Customer;
+
+use Magento\Framework\Exception\InputException;
+use Magento\ReCaptchaUi\Model\IsCaptchaEnabledInterface;
+use Magento\ReCaptchaUi\Model\UiConfigResolverInterface;
+use Magento\Customer\ViewModel\LoginButton;
+
+/**
+ * Disable Login button while captcha is loading
+ */
+class DisableLoginButton
+{
+    /**
+     * @var IsCaptchaEnabledInterface
+     */
+    private $isCaptchaEnabled;
+
+    /**
+     * @param IsCaptchaEnabledInterface $isCaptchaEnabled
+     */
+    public function __construct(
+        IsCaptchaEnabledInterface $isCaptchaEnabled
+    ) {
+        $this->isCaptchaEnabled = $isCaptchaEnabled;
+    }
+
+    /**
+     * Temporally disable Login button while captcha is loading
+     *
+     * @param LoginButton $subject
+     * @return bool
+     * @throws InputException
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function afterDisabled(LoginButton $subject): bool
+    {
+        $key = 'customer_login';
+        return $this->isCaptchaEnabled->isCaptchaEnabledFor($key);
+    }
+}
diff --git a/vendor/magento/module-re-captcha-customer/etc/frontend/di.xml b/vendor/magento/module-re-captcha-customer/etc/frontend/di.xml
index 1d090238..045f144f 100644
--- a/vendor/magento/module-re-captcha-customer/etc/frontend/di.xml
+++ b/vendor/magento/module-re-captcha-customer/etc/frontend/di.xml
@@ -20,5 +20,16 @@
         <plugin sortOrder="1" name="inject_recaptcha_in_authentication_popup"
                 type="Magento\ReCaptchaCustomer\Plugin\Block\Account\InjectRecaptchaInAuthenticationPopup"/>
     </type>
-
+    <type name="Magento\Customer\ViewModel\LoginButton">
+        <plugin sortOrder="1" name="recaptcha_disable_login_button"
+                type="Magento\ReCaptchaCustomer\Plugin\Customer\DisableLoginButton"/>
+    </type>
+    <type name="Magento\Customer\ViewModel\CreateAccountButton">
+        <plugin sortOrder="1" name="recaptcha_disable_create_account_button"
+                type="Magento\ReCaptchaCustomer\Plugin\Customer\DisableCreateAccountButton"/>
+    </type>
+    <type name="Magento\Customer\ViewModel\EditAccountButton">
+        <plugin sortOrder="1" name="recaptcha_disable_edit_account_button"
+                type="Magento\ReCaptchaCustomer\Plugin\Customer\DisableEditAccountButton"/>
+    </type>
 </config>
diff --git a/vendor/magento/module-re-captcha-frontend-ui/view/frontend/web/js/reCaptcha.js b/vendor/magento/module-re-captcha-frontend-ui/view/frontend/web/js/reCaptcha.js
index ddd627f2..4d9a8db0 100644
--- a/vendor/magento/module-re-captcha-frontend-ui/view/frontend/web/js/reCaptcha.js
+++ b/vendor/magento/module-re-captcha-frontend-ui/view/frontend/web/js/reCaptcha.js
@@ -161,6 +161,7 @@ define(
                 } else {
                     this.tokenField = null;
                 }
+                if ($('#send2').length > 0) {$('#send2').prop('disabled', false);}
             },
 
             /**
diff --git a/vendor/magento/module-re-captcha-newsletter/Plugin/DisableNewsletterButton.php b/vendor/magento/module-re-captcha-newsletter/Plugin/DisableNewsletterButton.php
new file mode 100644
index 00000000..b8488d9c
--- /dev/null
+++ b/vendor/magento/module-re-captcha-newsletter/Plugin/DisableNewsletterButton.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\ReCaptchaNewsletter\Plugin;
+
+use Magento\Framework\Exception\InputException;
+use Magento\ReCaptchaUi\Model\IsCaptchaEnabledInterface;
+use Magento\Newsletter\ViewModel\NewsletterButton;
+
+/**
+ * Disable newsletter subscription button while captcha is loading
+ */
+class DisableNewsletterButton
+{
+    /**
+     * @var IsCaptchaEnabledInterface
+     */
+    private $isCaptchaEnabled;
+
+    /**
+     * @param IsCaptchaEnabledInterface $isCaptchaEnabled
+     */
+    public function __construct(
+        IsCaptchaEnabledInterface $isCaptchaEnabled
+    ) {
+        $this->isCaptchaEnabled = $isCaptchaEnabled;
+    }
+
+    /**
+     * Temporally disable newsletter subscription button while captcha is loading
+     *
+     * @param NewsletterButton $subject
+     * @return bool
+     * @throws InputException
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function afterDisabled(NewsletterButton $subject): bool
+    {
+        $key = 'newsletter';
+        return $this->isCaptchaEnabled->isCaptchaEnabledFor($key);
+    }
+}
diff --git a/vendor/magento/module-re-captcha-newsletter/composer.json b/vendor/magento/module-re-captcha-newsletter/composer.json
index 1317e5d1..69579e02 100644
--- a/vendor/magento/module-re-captcha-newsletter/composer.json
+++ b/vendor/magento/module-re-captcha-newsletter/composer.json
@@ -6,6 +6,9 @@
         "magento/framework": "*",
         "magento/module-re-captcha-ui": "1.1.*"
     },
+    "suggest": {
+        "magento/module-newsletter": "*"
+    },
     "type": "magento2-module",
     "license": "OSL-3.0",
     "autoload": {
diff --git a/vendor/magento/module-re-captcha-newsletter/etc/frontend/di.xml b/vendor/magento/module-re-captcha-newsletter/etc/frontend/di.xml
new file mode 100644
index 00000000..8f5220aa
--- /dev/null
+++ b/vendor/magento/module-re-captcha-newsletter/etc/frontend/di.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
+    <type name="Magento\Newsletter\ViewModel\NewsletterButton">
+        <plugin sortOrder="1" name="recaptcha_disable_newsletter_button"
+                type="Magento\ReCaptchaNewsletter\Plugin\DisableNewsletterButton"/>
+    </type>
+</config>
diff --git a/vendor/magento/module-re-captcha-review/Plugin/DisableReviewButton.php b/vendor/magento/module-re-captcha-review/Plugin/DisableReviewButton.php
new file mode 100644
index 00000000..00d4dd23
--- /dev/null
+++ b/vendor/magento/module-re-captcha-review/Plugin/DisableReviewButton.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\ReCaptchaReview\Plugin;
+
+use Magento\Framework\Exception\InputException;
+use Magento\ReCaptchaUi\Model\IsCaptchaEnabledInterface;
+use Magento\Review\ViewModel\ReviewButton;
+
+/**
+ * Disable review button while captcha is loading
+ */
+class DisableReviewButton
+{
+    /**
+     * @var IsCaptchaEnabledInterface
+     */
+    private $isCaptchaEnabled;
+
+    /**
+     * @param IsCaptchaEnabledInterface $isCaptchaEnabled
+     */
+    public function __construct(
+        IsCaptchaEnabledInterface $isCaptchaEnabled
+    ) {
+        $this->isCaptchaEnabled = $isCaptchaEnabled;
+    }
+
+    /**
+     * Temporally disable review button while captcha is loading
+     *
+     * @param ReviewButton $subject
+     * @return bool
+     * @throws InputException
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function afterDisabled(ReviewButton $subject): bool
+    {
+        $key = 'product_review';
+        return $this->isCaptchaEnabled->isCaptchaEnabledFor($key);
+    }
+}
diff --git a/vendor/magento/module-re-captcha-review/composer.json b/vendor/magento/module-re-captcha-review/composer.json
index 0792a4b3..42ade5be 100644
--- a/vendor/magento/module-re-captcha-review/composer.json
+++ b/vendor/magento/module-re-captcha-review/composer.json
@@ -6,6 +6,9 @@
         "magento/framework": "*",
         "magento/module-re-captcha-ui": "1.1.*"
     },
+    "suggest": {
+        "magento/module-review": "*"
+    },
     "type": "magento2-module",
     "license": "OSL-3.0",
     "autoload": {
diff --git a/vendor/magento/module-re-captcha-review/etc/frontend/di.xml b/vendor/magento/module-re-captcha-review/etc/frontend/di.xml
new file mode 100644
index 00000000..307e5ab5
--- /dev/null
+++ b/vendor/magento/module-re-captcha-review/etc/frontend/di.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
+    <type name="Magento\Review\ViewModel\ReviewButton">
+        <plugin sortOrder="1" name="recaptcha_disable_review_button"
+                type="Magento\ReCaptchaReview\Plugin\DisableReviewButton"/>
+    </type>
+</config>
diff --git a/vendor/magento/module-re-captcha-send-friend/Plugin/DisableSendFriendButton.php b/vendor/magento/module-re-captcha-send-friend/Plugin/DisableSendFriendButton.php
new file mode 100644
index 00000000..be1f5027
--- /dev/null
+++ b/vendor/magento/module-re-captcha-send-friend/Plugin/DisableSendFriendButton.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\ReCaptchaSendFriend\Plugin;
+
+use Magento\Framework\Exception\InputException;
+use Magento\ReCaptchaUi\Model\IsCaptchaEnabledInterface;
+use Magento\SendFriend\ViewModel\SendFriendButton;
+
+/**
+ * Disable Email to a Friend button while captcha is loading
+ */
+class DisableSendFriendButton
+{
+    /**
+     * @var IsCaptchaEnabledInterface
+     */
+    private $isCaptchaEnabled;
+
+    /**
+     * @param IsCaptchaEnabledInterface $isCaptchaEnabled
+     */
+    public function __construct(
+        IsCaptchaEnabledInterface $isCaptchaEnabled
+    ) {
+        $this->isCaptchaEnabled = $isCaptchaEnabled;
+    }
+
+    /**
+     * Temporally disable Email to a Friend button while captcha is loading
+     *
+     * @param SendFriendButton $subject
+     * @return bool
+     * @throws InputException
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function afterDisabled(SendFriendButton $subject): bool
+    {
+        $key = 'sendfriend';
+        return $this->isCaptchaEnabled->isCaptchaEnabledFor($key);
+    }
+}
diff --git a/vendor/magento/module-re-captcha-send-friend/composer.json b/vendor/magento/module-re-captcha-send-friend/composer.json
index 0ab1278a..b3387734 100644
--- a/vendor/magento/module-re-captcha-send-friend/composer.json
+++ b/vendor/magento/module-re-captcha-send-friend/composer.json
@@ -6,6 +6,9 @@
         "magento/framework": "*",
         "magento/module-re-captcha-ui": "1.1.*"
     },
+    "suggest": {
+        "magento/module-send-friend": "*"
+    },
     "type": "magento2-module",
     "license": "OSL-3.0",
     "autoload": {
diff --git a/vendor/magento/module-re-captcha-send-friend/etc/frontend/di.xml b/vendor/magento/module-re-captcha-send-friend/etc/frontend/di.xml
new file mode 100644
index 00000000..55dc0ede
--- /dev/null
+++ b/vendor/magento/module-re-captcha-send-friend/etc/frontend/di.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
+    <type name="Magento\SendFriend\ViewModel\SendFriendButton">
+        <plugin sortOrder="1" name="recaptcha_disable_sendfriend_button"
+                type="Magento\ReCaptchaSendFriend\Plugin\DisableSendFriendButton"/>
+    </type>
+</config>
