diff --git a/vendor/magento/module-customer/ViewModel/CreateAccountButton.php b/vendor/magento/module-customer/ViewModel/CreateAccountButton.php
new file mode 100644
index 00000000000..8fa8718fe37
--- /dev/null
+++ b/vendor/magento/module-customer/ViewModel/CreateAccountButton.php
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\Customer\ViewModel;
+
+use Magento\Framework\View\Element\Block\ArgumentInterface;
+
+/**
+ * Custom Create Account button view model
+ */
+class CreateAccountButton implements ArgumentInterface
+{
+    /**
+     * If Create Account button should be disabled
+     *
+     * @return bool
+     */
+    public function disabled(): bool
+    {
+        return false;
+    }
+}
diff --git a/vendor/magento/module-customer/ViewModel/LoginButton.php b/vendor/magento/module-customer/ViewModel/LoginButton.php
new file mode 100644
index 00000000000..75349043e8b
--- /dev/null
+++ b/vendor/magento/module-customer/ViewModel/LoginButton.php
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\Customer\ViewModel;
+
+use Magento\Framework\View\Element\Block\ArgumentInterface;
+
+/**
+ * Custom Login button view model
+ */
+class LoginButton implements ArgumentInterface
+{
+    /**
+     * If Login button should be disabled
+     *
+     * @return bool
+     */
+    public function disabled(): bool
+    {
+        return false;
+    }
+}
diff --git a/vendor/magento/module-customer/view/frontend/layout/customer_account_create.xml b/vendor/magento/module-customer/view/frontend/layout/customer_account_create.xml
index 0c5af453f23..a995c929799 100644
--- a/vendor/magento/module-customer/view/frontend/layout/customer_account_create.xml
+++ b/vendor/magento/module-customer/view/frontend/layout/customer_account_create.xml
@@ -17,6 +17,7 @@
             <block class="Magento\Customer\Block\Form\Register" name="customer_form_register" template="Magento_Customer::form/register.phtml">
                 <arguments>
                     <argument name="attribute_data" xsi:type="object">Magento\Customer\Block\DataProviders\AddressAttributeData</argument>
+                    <argument name="create_account_button_view_model" xsi:type="object">Magento\Customer\ViewModel\CreateAccountButton</argument>
                 </arguments>
                 <container name="form.additional.info" as="form_additional_info"/>
                 <container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>
diff --git a/vendor/magento/module-customer/view/frontend/layout/customer_account_login.xml b/vendor/magento/module-customer/view/frontend/layout/customer_account_login.xml
index 3518df736c4..8fb51eeb665 100644
--- a/vendor/magento/module-customer/view/frontend/layout/customer_account_login.xml
+++ b/vendor/magento/module-customer/view/frontend/layout/customer_account_login.xml
@@ -15,6 +15,9 @@
             <container name="customer.login.container" label="Customer Login Container" htmlTag="div" htmlClass="login-container">
                 <block class="Magento\Customer\Block\Form\Login" name="customer_form_login" template="Magento_Customer::form/login.phtml">
                     <container name="form.additional.info" as="form_additional_info"/>
+                    <arguments>
+                        <argument name="login_button_view_model" xsi:type="object">Magento\Customer\ViewModel\LoginButton</argument>
+                    </arguments>
                 </block>
                 <block class="Magento\Customer\Block\Form\Login\Info" name="customer.new" template="Magento_Customer::newcustomer.phtml"/>
             </container>
diff --git a/vendor/magento/module-customer/view/frontend/templates/form/login.phtml b/vendor/magento/module-customer/view/frontend/templates/form/login.phtml
index 119bb72083a..0cc3dd5973b 100644
--- a/vendor/magento/module-customer/view/frontend/templates/form/login.phtml
+++ b/vendor/magento/module-customer/view/frontend/templates/form/login.phtml
@@ -7,6 +7,8 @@
 // phpcs:disable Generic.Files.LineLength.TooLong
 
 /** @var \Magento\Customer\Block\Form\Login $block */
+/** @var \Magento\Customer\ViewModel\LoginButton $loginButtonViewModel */
+$loginButtonViewModel = $block->getData('login_button_view_model');
 ?>
 <div class="block block-customer-login">
     <div class="block-title">
@@ -47,12 +49,13 @@
                 </div>
                 <?= $block->getChildHtml('form_additional_info') ?>
                 <div class="actions-toolbar">
-                    <div class="primary"><button type="submit" class="action login primary" name="send" id="send2"><span><?= $block->escapeHtml(__('Sign In')) ?></span></button></div>
+                    <div class="primary"><button type="submit" class="action login primary" name="send" id="send2" <?php if ($loginButtonViewModel->disabled()): ?> disabled="disabled" <?php endif; ?>><span><?= $block->escapeHtml(__('Sign In')) ?></span></button></div>
                     <div class="secondary"><a class="action remind" href="<?= $block->escapeUrl($block->getForgotPasswordUrl()) ?>"><span><?= $block->escapeHtml(__('Forgot Your Password?')) ?></span></a></div>
                 </div>
             </fieldset>
         </form>
     </div>
+    <?php // phpcs:ignore Magento2.Legacy.PhtmlTemplate ?>
     <script type="text/x-magento-init">
         {
             "*": {
diff --git a/vendor/magento/module-customer/view/frontend/templates/form/register.phtml b/vendor/magento/module-customer/view/frontend/templates/form/register.phtml
index 0394f112b14..4e705e7944a 100644
--- a/vendor/magento/module-customer/view/frontend/templates/form/register.phtml
+++ b/vendor/magento/module-customer/view/frontend/templates/form/register.phtml
@@ -15,6 +15,8 @@ $addressHelper = $block->getData('addressHelper');
 /** @var \Magento\Directory\Helper\Data $directoryHelper */
 $directoryHelper = $block->getData('directoryHelper');
 $formData = $block->getFormData();
+/** @var \Magento\Customer\ViewModel\CreateAccountButton $createAccountButtonViewModel */
+$createAccountButtonViewModel = $block->getData('create_account_button_view_model');
 ?>
 <?php $displayAll = $block->getConfig('general/region/display_all'); ?>
 <?= $block->getChildHtml('form_fields_before') ?>
@@ -289,7 +291,9 @@ $formData = $block->getFormData();
         <div class="primary">
             <button type="submit"
                     class="action submit primary"
-                    title="<?= $escaper->escapeHtmlAttr(__('Create an Account')) ?>">
+                    title="<?= $escaper->escapeHtmlAttr(__('Create an Account')) ?>"
+                    id="send2"
+                    <?php if ($createAccountButtonViewModel->disabled()): ?> disabled="disabled" <?php endif; ?>>
                 <span><?= $escaper->escapeHtml(__('Create an Account')) ?></span>
             </button>
         </div>
@@ -346,6 +350,7 @@ script;
     $regionId = (int) $formData->getRegionId();
     $countriesWithOptionalZip = /* @noEscape */ $directoryHelper->getCountriesWithOptionalZip(true);
     ?>
+<?php // phpcs:ignore Magento2.Legacy.PhtmlTemplate ?>
 <script type="text/x-magento-init">
     {
         "#country": {
@@ -363,7 +368,7 @@ script;
     }
 </script>
 <?php endif; ?>
-
+<?php // phpcs:ignore Magento2.Legacy.PhtmlTemplate ?>
 <script type="text/x-magento-init">
     {
         ".field.password": {
