diff --git a/src/js/_enqueues/wp/updates.js b/src/js/_enqueues/wp/updates.js
index 55eb0fbf95..269ac3c54f 100644
--- a/src/js/_enqueues/wp/updates.js
+++ b/src/js/_enqueues/wp/updates.js
@@ -516,6 +516,7 @@
 		if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
 			$pluginRow     = $( 'tr[data-plugin="' + response.plugin + '"]' )
 				.removeClass( 'update' )
+				.removeClass( 'is-enqueued' )
 				.addClass( 'updated' );
 			$updateMessage = $pluginRow.find( '.update-message' )
 				.removeClass( 'updating-message notice-warning' )
@@ -585,6 +586,8 @@
 		);
 
 		if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
+			$pluginRow     = $( 'tr[data-plugin="' + response.plugin + '"]' ).removeClass( 'is-enqueued' );
+
 			if ( response.plugin ) {
 				$message = $( 'tr[data-plugin="' + response.plugin + '"]' ).find( '.update-message' );
 			} else {
@@ -1616,10 +1619,10 @@
 
 		// DecrementCount from update count.
 		if ( 'themes' === pagenow ) {
-		    var theme = _.find( _wpThemeSettings.themes, { id: response.slug } );
-		    if ( theme.hasUpdate ) {
-		        wp.updates.decrementCount( 'theme' );
-		    }
+			var theme = _.find( _wpThemeSettings.themes, { id: response.slug } );
+			if ( theme.hasUpdate ) {
+				wp.updates.decrementCount( 'theme' );
+			}
 		}
 
 		wp.a11y.speak( _x( 'Deleted!', 'theme' ) );
@@ -2468,6 +2471,13 @@
 					return;
 				}
 
+				// Don't add items to the update queue again even if the user click the update button several times.
+				if ( 'update-selected' === bulkAction && $itemRow.hasClass( 'is-enqueued' )) {
+					return;
+				}
+
+				$itemRow.addClass( 'is-enqueued' );
+
 				// Add it to the queue.
 				wp.updates.queue.push( {
 					action: action,
