diff --git src/wp-admin/includes/class-wp-plugin-install-list-table.php src/wp-admin/includes/class-wp-plugin-install-list-table.php
index cd718360cb..0c7f23d0c6 100644
--- src/wp-admin/includes/class-wp-plugin-install-list-table.php
+++ src/wp-admin/includes/class-wp-plugin-install-list-table.php
@@ -32,34 +32,51 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 	}
 
 	/**
-	 * Return a list of slugs of installed plugins, if known.
+	 * Return the list of known plugins.
 	 *
-	 * Uses the transient data from the updates API to determine the slugs of
-	 * known installed plugins. This might be better elsewhere, perhaps even
-	 * within get_plugins().
+	 * Uses the transient data from the updates API to determine the known
+	 * installed plugins.
 	 *
-	 * @since 4.0.0
+	 * @since ?
 	 * @access protected
 	 *
 	 * @return array
 	 */
-	protected function get_installed_plugin_slugs() {
-		$slugs = array();
+	protected function get_installed_plugins() {
+		$plugins = array();
 
 		$plugin_info = get_site_transient( 'update_plugins' );
 		if ( isset( $plugin_info->no_update ) ) {
 			foreach ( $plugin_info->no_update as $plugin ) {
-				$slugs[] = $plugin->slug;
+				$plugin->upgrade          = false;
+				$plugins[ $plugin->slug ] = $plugin;
 			}
 		}
 
 		if ( isset( $plugin_info->response ) ) {
 			foreach ( $plugin_info->response as $plugin ) {
-				$slugs[] = $plugin->slug;
+				$plugin->upgrade          = true;
+				$plugins[ $plugin->slug ] = $plugin;
 			}
 		}
 
-		return $slugs;
+		return $plugins;
+	}
+
+	/**
+	 * Return a list of slugs of installed plugins, if known.
+	 *
+	 * Uses the transient data from the updates API to determine the slugs of
+	 * known installed plugins. This might be better elsewhere, perhaps even
+	 * within get_plugins().
+	 *
+	 * @since 4.0.0
+	 * @access protected
+	 *
+	 * @return array
+	 */
+	protected function get_installed_plugin_slugs() {
+		return array_keys( $this->get_installed_plugins() );
 	}
 
 	/**
@@ -125,6 +142,9 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 		if ( empty( $tab ) || ( !isset( $tabs[ $tab ] ) && !in_array( $tab, (array) $nonmenu_tabs ) ) )
 			$tab = key( $tabs );
 
+		// Installed plugins
+		$installed_plugins = $this->get_installed_plugins();
+
 		$args = array(
 			'page' => $paged,
 			'per_page' => $per_page,
@@ -135,7 +155,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 			),
 			// Send the locale and installed plugin slugs to the API so it can provide context-sensitive results.
 			'locale' => get_user_locale(),
-			'installed_plugins' => $this->get_installed_plugin_slugs(),
+			'installed_plugins' => array_keys( $installed_plugins ),
 		);
 
 		switch ( $tab ) {
@@ -225,6 +245,25 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 		if ( isset( $api->info['groups'] ) ) {
 			$this->groups = $api->info['groups'];
 		}
+
+		if ( $installed_plugins ) {
+			$js_plugins = array_fill_keys(
+				array( 'all', 'search', 'active', 'inactive', 'recently_activated', 'mustuse', 'dropins' ),
+				array()
+			);
+
+			$js_plugins['all'] = array_values( wp_list_pluck( $installed_plugins, 'plugin' ) );
+			$upgrade_plugins   = wp_filter_object_list( $installed_plugins, array( 'upgrade' => true ), 'and', 'plugin' );
+
+			if ( $upgrade_plugins ) {
+				$js_plugins['upgrade'] = array_values( $upgrade_plugins );
+			}
+
+			wp_localize_script( 'updates', '_wpUpdatesItemCounts', array(
+				'plugins' => $js_plugins,
+				'totals'  => wp_get_update_data(),
+			) );
+		}
 	}
 
 	/**
