Index: src/wp-admin/js/updates.js
===================================================================
--- src/wp-admin/js/updates.js	(revision 31915)
+++ src/wp-admin/js/updates.js	(working copy)
@@ -178,6 +178,35 @@
 	};
 
 	/**
+	 * Add an admin notice on plugin install success or failure.
+	 *
+	 * @since 4.2.0
+	 *
+	 * @param {string} plugin    The plugin name or slug
+	 * @param {string} className Class of the notice to add, either updated or error.
+	 *
+	 */
+	wp.updates.addAdminNotice = function( plugin, className ) {
+			/**
+			 * Add a success admin notice at the top of the page.
+			 */
+			var $messageorigin  = $( '.plugin-notice.' + className ).first(),
+				message         = $messageorigin.clone().insertAfter( $messageorigin ),
+				$message        = $( message ),
+				$messageP       = $message.find( 'p' ),
+				capitalizedSlug = plugin.charAt( 0 ).toUpperCase() + plugin.slice( 1 );
+				newtext         = capitalizedSlug + $messageP.text();
+
+			$message.removeClass( 'hidden' );
+			$messageP.text( newtext );
+
+			/**
+			 * Scroll to the top so the user can see the notice.
+			 */
+			$( window ).scrollTop( 0 );
+	};
+
+	/**
 	 * On a successful plugin update, update the UI with the result.
 	 *
 	 * @since 4.2.0
@@ -191,6 +220,8 @@
 			$updateMessage = $pluginRow.next().find( '.update-message' );
 			$pluginRow.addClass( 'updated' ).removeClass( 'update' );
 
+			wp.updates.addAdminNotice( response.slug, 'updated' );
+
 			// Update the version number in the row.
 			var newText = $pluginRow.find('.plugin-version-author-uri').html().replace( response.oldVersion, response.newVersion );
 			$pluginRow.find('.plugin-version-author-uri').html( newText );
@@ -231,6 +262,8 @@
 		}
 		if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
 			$message = $( '[data-slug="' + response.slug + '"]' ).next().find( '.update-message' );
+			wp.updates.addAdminNotice( response.slug, 'error' );
+
 		} else if ( 'plugin-install' === pagenow ) {
 			$message = $( '.plugin-card-' + response.slug ).find( '.update-now' );
 		}
Index: src/wp-admin/plugins.php
===================================================================
--- src/wp-admin/plugins.php	(revision 31915)
+++ src/wp-admin/plugins.php	(working copy)
@@ -442,7 +442,8 @@
 if ( $s )
 	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( $s ) ); ?>
 </h2>
-
+<div class="plugin-notice updated hidden"><p><?php _e( ' updated successfully.' ); ?></p></div>
+<div class="plugin-notice error hidden"><p><?php _e( ' update failed.' ); ?></p></div>
 <?php
 /**
  * Fires before the plugins list table is rendered.
