diff --git src/wp-admin/js/updates.js src/wp-admin/js/updates.js
index 233714f589..420d277e28 100644
--- src/wp-admin/js/updates.js
+++ src/wp-admin/js/updates.js
@@ -373,6 +373,7 @@
 
 		if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
 			$updateRow = $( 'tr[data-plugin="' + args.plugin + '"]' );
+			$updateRow.removeClass( 'update' ).addClass( 'updating' );
 			$message   = $updateRow.find( '.update-message' ).removeClass( 'notice-error' ).addClass( 'updating-message notice-warning' ).find( 'p' );
 			message    = wp.updates.l10n.pluginUpdatingLabel.replace( '%s', $updateRow.find( '.plugin-title strong' ).text() );
 		} else if ( 'plugin-install' === pagenow || 'plugin-install-network' === pagenow ) {
@@ -888,7 +889,7 @@
 
 		// Add a plugin update row if it doesn't exist yet.
 		if ( ! $pluginUpdateRow.length ) {
-			$plugin.addClass( 'update' ).after(
+			$plugin.removeClass( 'updating' ).addClass( 'update' ).after(
 				pluginUpdateRow( {
 					slug:    response.slug,
 					plugin:  response.plugin || response.slug,
@@ -920,7 +921,7 @@
 	 *                     decorated with an abort() method.
 	 */
 	wp.updates.updateTheme = function( args ) {
-		var $notice;
+		var $updateRow, $message;
 
 		args = _.extend( {
 			success: wp.updates.updateThemeSuccess,
@@ -928,23 +929,24 @@
 		}, args );
 
 		if ( 'themes-network' === pagenow ) {
-			$notice = $( '[data-slug="' + args.slug + '"]' ).find( '.update-message' ).removeClass( 'notice-error' ).addClass( 'updating-message notice-warning' ).find( 'p' );
-
+			$updateRow = $( '[data-slug="' + args.slug + '"]' );
+			$updateRow.removeClass( 'update' ).addClass( 'updating' );
+			$message = $updateRow.find( '.update-message' ).removeClass( 'notice-error' ).addClass( 'updating-message notice-warning' ).find( 'p' );
 		} else {
-			$notice = $( '#update-theme' ).closest( '.notice' ).removeClass( 'notice-large' );
+			$message = $( '#update-theme' ).closest( '.notice' ).removeClass( 'notice-large' );
 
-			$notice.find( 'h3' ).remove();
+			$message.find( 'h3' ).remove();
 
-			$notice = $notice.add( $( '[data-slug="' + args.slug + '"]' ).find( '.update-message' ) );
-			$notice = $notice.addClass( 'updating-message' ).find( 'p' );
+			$message = $message.add( $( '[data-slug="' + args.slug + '"]' ).find( '.update-message' ) );
+			$message = $message.addClass( 'updating-message' ).find( 'p' );
 		}
 
-		if ( $notice.html() !== wp.updates.l10n.updating ) {
-			$notice.data( 'originaltext', $notice.html() );
+		if ( $message.html() !== wp.updates.l10n.updating ) {
+			$message.data( 'originaltext', $message.html() );
 		}
 
 		wp.a11y.speak( wp.updates.l10n.updatingMsg, 'polite' );
-		$notice.text( wp.updates.l10n.updating );
+		$message.text( wp.updates.l10n.updating );
 
 		$document.trigger( 'wp-theme-updating', args );
 
@@ -1309,7 +1311,7 @@
 
 		if ( 'themes-network' === pagenow ) {
 			if ( ! $updateRow.length ) {
-				$themeRow.addClass( 'update' ).after(
+				$themeRow.removeClass( 'updating' ).addClass( 'update' ).after(
 					updateRow( {
 						slug: response.slug,
 						colspan: $( '#bulk-action-form' ).find( 'thead th:not(.hidden), thead td' ).length,
@@ -2065,7 +2067,7 @@
 					$itemRow = $checkbox.parents( 'tr' );
 
 				// Only add update-able items to the update queue.
-				if ( 'update-selected' === bulkAction && ( ! $itemRow.hasClass( 'update' ) || $itemRow.find( 'notice-error' ).length ) ) {
+				if ( 'update-selected' === bulkAction && ( ! $itemRow.hasClass( 'update' ) || $itemRow.find( '.notice.notice-error' ).length ) ) {
 
 					// Un-check the box.
 					$checkbox.prop( 'checked', false );
