diff --git a/CHANGELOG.md b/CHANGELOG.md
index 851ec08b9a414fc4578c0b00c8e8af7d084c8493..7c435f8fb7ca21c36ac3299be2925b8b4e517956 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@
 ### Added
 - Factory can create checker from requirement array
 - Support for update suggestion when required plugin not found
+- WPDesk_Basic_Requirement_Checker_With_Update_Disable can temporarily say that requirements are not met when required plugin is in the process of being updated
 
 ## [2.4.0] - 2019-06-04
 ### Added
diff --git a/src/Basic_Requirement_Checker.php b/src/Basic_Requirement_Checker.php
index db1e6d5e8eeb3015ed0b84bd266100fadcbaa514..f68f7dae761b919f0abde94dffc1a8ba129118fc 100644
--- a/src/Basic_Requirement_Checker.php
+++ b/src/Basic_Requirement_Checker.php
@@ -15,10 +15,9 @@ if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) {
 
 		const PLUGIN_INFO_KEY_NICE_NAME = 'nice_name';
 		const PLUGIN_INFO_KEY_NAME = 'name';
-		const PLUGIN_INFO_KEY_REPOSITORY_URL = 'repository_url';
 
 		/** @var string */
-		private $plugin_name;
+		protected $plugin_name;
 		/** @var string */
 		private $plugin_file;
 		/** @var string */
@@ -169,6 +168,8 @@ if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) {
 		}
 
 		/**
+		 * Returns true if are requirements are met.
+		 *
 		 * @return bool
 		 */
 		public function are_requirements_met() {
@@ -353,7 +354,7 @@ if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) {
 			if ( ! self::is_wp_plugin_active( $name ) ) {
 				$activate_url = 'plugins.php?action=activate&plugin=' . urlencode( $plugin_info[ self::PLUGIN_INFO_KEY_NAME ] ) . '&plugin_status=all&paged=1&s&_wpnonce=' . urlencode( wp_create_nonce( 'activate-plugin_' . $name ) );
 
-				return sprintf( wp_kses( __( 'The &#8220;%s&#8221; plugin activating %s plugin. <a href="%s">Activate %s →</a>',
+				return sprintf( wp_kses( __( 'The &#8220;%s&#8221; plugin requires activating %s plugin. <a href="%s">Activate %s →</a>',
 					$this->get_text_domain() ), array( 'a' => array( 'href' => array() ) ) ),
 					$this->plugin_name, $nice_name, esc_url( admin_url( $activate_url ) ), $nice_name );
 
diff --git a/src/Basic_Requirement_Checker_Factory.php b/src/Basic_Requirement_Checker_Factory.php
index 8ab7fdd1ea93d1194188d2692015ba1abcbc469c..b3fdd914dd5d1d1e4066499b3e923f6cf83878b4 100644
--- a/src/Basic_Requirement_Checker_Factory.php
+++ b/src/Basic_Requirement_Checker_Factory.php
@@ -4,6 +4,10 @@ if ( ! class_exists( 'Basic_Requirement_Checker' ) ) {
 	require_once 'Basic_Requirement_Checker.php';
 }
 
+if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker_With_Update_Disable' ) ) {
+	require_once 'Basic_Requirement_Checker_With_Update_Disable.php';
+}
+
 /**
  * Falicitates createion of requirement checker
  */
@@ -13,14 +17,12 @@ class WPDesk_Basic_Requirement_Checker_Factory {
 	 *
 	 * @param string $plugin_file
 	 * @param string $plugin_name
-	 * @param string $text_domain
-	 * @param string $php_version
-	 * @param string $wp_version
+	 * @param string|null $text_domain
 	 *
 	 * @return WPDesk_Requirement_Checker
 	 */
-	public function create_requirement_checker( $plugin_file, $plugin_name, $text_domain ) {
-		return new WPDesk_Basic_Requirement_Checker( $plugin_file, $plugin_name, $text_domain, null, null );
+	public function create_requirement_checker( $plugin_file, $plugin_name, $text_domain = null ) {
+		return new WPDesk_Basic_Requirement_Checker( $plugin_file, $plugin_name, $this->initialize_translations($text_domain), null, null );
 	}
 
 	/**
@@ -28,32 +30,50 @@ class WPDesk_Basic_Requirement_Checker_Factory {
 	 *
 	 * @param string $plugin_file
 	 * @param string $plugin_name
-	 * @param string $plugin_text_domain
+	 * @param string $text_domain
 	 * @param array $requirements
 	 *
 	 * @return WPDesk_Requirement_Checker
 	 */
-	public function create_from_requirement_array( $plugin_file, $plugin_name, $plugin_text_domain, $requirements ) {
-		$requirements_checker = new WPDesk_Basic_Requirement_Checker(
+	public function create_from_requirement_array( $plugin_file, $plugin_name, $requirements, $text_domain = null ) {
+		$requirements_checker = new WPDesk_Basic_Requirement_Checker_With_Update_Disable(
 			$plugin_file,
 			$plugin_name,
-			$plugin_text_domain,
+			$this->initialize_translations($text_domain),
 			$requirements['php'],
 			$requirements['wp']
 		);
 
-	    if ( isset( $requirements['plugins'] ) ) {
-		    foreach ( $requirements['plugins'] as $requirement ) {
-			    $requirements_checker->add_plugin_require( $requirement['name'], $requirement['nice_name'] );
-		    }
-	    }
+		if ( isset( $requirements['plugins'] ) ) {
+			foreach ( $requirements['plugins'] as $requirement ) {
+				$requirements_checker->add_plugin_require( $requirement['name'], $requirement['nice_name'] );
+			}
+		}
+
+		if ( isset( $requirements['repo_plugins'] ) ) {
+			foreach ( $requirements['repo_plugins'] as $requirement ) {
+				$requirements_checker->add_plugin_repository_require( $requirement['name'], $requirement['version'],
+					$requirement['nice_name'] );
+			}
+		}
+
+		if ( isset( $requirements['modules'] ) ) {
+			foreach ( $requirements['modules'] as $requirement ) {
+				$requirements_checker->add_php_module_require( $requirement['name'], $requirement['nice_name'] );
+			}
+		}
 
-	    if ( isset( $requirements['modules'] ) ) {
-		    foreach ( $requirements['modules'] as $requirement ) {
-			    $requirements_checker->add_php_module_require( $requirement['name'], $requirement['nice_name'] );
-		    }
-	    }
+		return $requirements_checker;
+	}
 
-	    return $requirements_checker;
-    }
+	/**
+	 * Tries to initialize translations for requirement checker. If not given then default library translation is used.
+	 *
+	 * @param string|null $text_domain
+	 *
+	 * @return string
+	 */
+	private function initialize_translations( $text_domain = null ) {
+		return $text_domain;
+	}
 }
diff --git a/src/Basic_Requirement_Checker_With_Update_Disable.php b/src/Basic_Requirement_Checker_With_Update_Disable.php
new file mode 100644
index 0000000000000000000000000000000000000000..aeaf871381680523dd8218e7d291bc669bf518c4
--- /dev/null
+++ b/src/Basic_Requirement_Checker_With_Update_Disable.php
@@ -0,0 +1,47 @@
+<?php
+
+if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) {
+	require_once 'Basic_Requirement_Checker.php';
+}
+
+if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker_With_Update_Disable' ) ) {
+	/**
+	 * Checks requirements for plugin. When required plugin is updated right now, then say that requirements are not met temporary.
+	 * have to be compatible with PHP 5.2.x
+	 */
+	class WPDesk_Basic_Requirement_Checker_With_Update_Disable extends WPDesk_Basic_Requirement_Checker {
+
+		/**
+		 * Returns true if are requirements are met.
+		 *
+		 * @return bool
+		 */
+		public function are_requirements_met() {
+			$has_been_met = parent::are_requirements_met();
+			if ( ! $has_been_met ) {
+				return $has_been_met;
+			}
+			foreach ( $this->plugin_require as $name => $plugin_info ) {
+				if ( $this->is_currently_updated( $name ) ) {
+					$nice_name = $plugin_info[self::PLUGIN_INFO_KEY_NICE_NAME];
+					$this->notices[] = sprintf( __( 'The &#8220;%s&#8221; plugin disables temporarily as required %s plugin is being upgraded.',
+						$this->get_text_domain() ),
+						$this->plugin_name, $nice_name, $nice_name );
+				}
+			}
+
+			return count( $this->notices ) === 0;
+		}
+
+		/**
+		 * Is plugin upgrading right now?
+		 *
+		 * @param string $name
+		 *
+		 * @return bool
+		 */
+		private function is_currently_updated( $name ) {
+			return isset( $_GET['action'] ) && $_GET['action'] === 'upgrade-plugin' && $_GET['plugin'] === $name;
+		}
+	}
+}
\ No newline at end of file
diff --git a/tests/unit/Test_Basic_Requirement_Checker_With_Update_Disable.php b/tests/unit/Test_Basic_Requirement_Checker_With_Update_Disable.php
new file mode 100644
index 0000000000000000000000000000000000000000..ce3d688f1ea514b93196ae8b8800729fa511847a
--- /dev/null
+++ b/tests/unit/Test_Basic_Requirement_Checker_With_Update_Disable.php
@@ -0,0 +1,42 @@
+<?php
+
+class Test_Basic_Requirement_Checker_With_Update_Disable extends PHPUnit\Framework\TestCase {
+	const RANDOM_PLUGIN_FILE = 'file';
+	const RANDOM_PLUGIN_NAME = 'name';
+	const ALWAYS_VALID_PHP_VERSION = '5.2';
+	const ALWAYS_VALID_WP_VERSION = '4.0';
+	const RANDOM_PLUGIN_TEXTDOMAIN = 'text';
+
+	public function setUp() {
+		WP_Mock::setUp();
+
+		WP_Mock::wpFunction( 'get_bloginfo' )
+		       ->andReturn( self::ALWAYS_VALID_WP_VERSION );
+	}
+
+	public function tearDown() {
+		WP_Mock::tearDown();
+	}
+
+	public function test_requirements_are_not_met_when_plugin_update() {
+		$checker = new WPDesk_Basic_Requirement_Checker_With_Update_Disable( self::RANDOM_PLUGIN_FILE,
+			self::RANDOM_PLUGIN_NAME,
+			self::RANDOM_PLUGIN_TEXTDOMAIN, self::ALWAYS_VALID_PHP_VERSION, self::ALWAYS_VALID_WP_VERSION );
+
+		$this->assertTrue( $checker->are_requirements_met(), 'Initial php and wp version should be met' );
+
+		$valid_plugin_name = 'woocommerce/woocommerce.php';
+
+		WP_Mock::wpFunction( 'get_option' )
+		       ->withArgs( array( 'active_plugins', array() ) )
+		       ->andReturn( array( $valid_plugin_name ) );
+
+		$checker->add_plugin_require( $valid_plugin_name );
+		$this->assertTrue( $checker->are_requirements_met(), 'Plugin is activated so initial requirements should be met' );
+
+		$real_woocommerce_upgrade_url = '/wp-admin/update.php?action=upgrade-plugin&plugin=woocommerce%2Fwoocommerce.php&_wpnonce=263d805825';
+		$url                     = parse_url( $real_woocommerce_upgrade_url );
+		parse_str( $url['query'], $_GET );
+		$this->assertFalse( $checker->are_requirements_met(), 'Info about upgrade should switch result' );
+	}
+}