diff --git src/wp-admin/admin-ajax.php src/wp-admin/admin-ajax.php
index d57d56b..434bcd8 100644
--- src/wp-admin/admin-ajax.php
+++ src/wp-admin/admin-ajax.php
@@ -58,7 +58,7 @@ $core_actions_post = array(
 	'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment',
 	'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor',
 	'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs',
-	'save-user-color-scheme',
+	'save-user-color-scheme', 'get-updates-data',
 );
 
 // Register core Ajax calls.
diff --git src/wp-admin/includes/ajax-actions.php src/wp-admin/includes/ajax-actions.php
index caf6311..c736ddb 100644
--- src/wp-admin/includes/ajax-actions.php
+++ src/wp-admin/includes/ajax-actions.php
@@ -2205,3 +2205,33 @@ function wp_ajax_save_user_color_scheme() {
 	update_user_meta( get_current_user_id(), 'admin_color', $color_scheme );
 	wp_send_json_success();
 }
+
+/**
+ * Refresh plugin, theme, and core update counts and return localized counts and strings.
+ *
+ *
+ * @since 3.9.0
+ *
+ */
+function wp_ajax_get_updates_data() {
+
+	check_ajax_referer( 'get-updates-data', 'nonce' );
+
+	delete_site_transient( 'update_core' );
+	delete_site_transient( 'update_plugins' );
+	delete_site_transient( 'update_themes' );
+
+	wp_version_check();
+	wp_update_plugins();
+	wp_update_themes();
+
+	$updates = wp_get_update_data();
+	$updates['formatted_counts'] = array();
+
+	foreach( $updates['counts'] as $key => $val ) {
+		$updates['formatted_counts'][$key] = number_Format_i18n( $val );
+	}
+
+	wp_send_json_success( $updates );
+}
+
diff --git src/wp-admin/includes/class-wp-upgrader-skins.php src/wp-admin/includes/class-wp-upgrader-skins.php
index 71a1293..e72c3e3 100644
--- src/wp-admin/includes/class-wp-upgrader-skins.php
+++ src/wp-admin/includes/class-wp-upgrader-skins.php
@@ -91,6 +91,35 @@ class WP_Upgrader_Skin {
 	}
 	function before() {}
 	function after() {}
+	/**
+	 * Output javascript that calls function to update the update counts.
+	 *
+	 * @since 3.9.0
+	 */
+	function update_counts() {
+		echo '<script type="text/javascript">
+				(function( wp ) {
+					if ( wp && wp.updateCounts ) {
+						var nonce = "' . wp_create_nonce( 'get-updates-data' ) . '";
+						wp.updateCounts( nonce );
+					}
+				})( window.wp );
+			</script>';
+
+	}
+	/**
+	 * Output javascript that sends message to trigger update of update count
+	 * information via postMessage.
+	 *
+	 * @since 3.9.0
+	 */
+	function update_counts_iframe() {
+		echo '<script type="text/javascript">
+				if ( window.postMessage && JSON ) {
+					window.parent.postMessage( JSON.stringify( { action: "updateCounts", nonce: "' . wp_create_nonce( 'get-updates-data' ) . '" } ), window.location.protocol + "//" + window.location.hostname );
+				}
+			</script>';
+	}
 
 }
 
diff --git src/wp-admin/includes/class-wp-upgrader.php src/wp-admin/includes/class-wp-upgrader.php
index 664595a..d13178f 100644
--- src/wp-admin/includes/class-wp-upgrader.php
+++ src/wp-admin/includes/class-wp-upgrader.php
@@ -512,6 +512,8 @@ class Plugin_Upgrader extends WP_Upgrader {
 		// Force refresh of plugin update information
 		wp_clean_plugins_cache( $parsed_args['clear_update_cache'] );
 
+		$this->skin->update_counts();
+
 		return true;
 	}
 
@@ -610,6 +612,8 @@ class Plugin_Upgrader extends WP_Upgrader {
 		// Force refresh of plugin update information
 		wp_clean_plugins_cache( $parsed_args['clear_update_cache'] );
 
+		$this->skin->update_counts_iframe();
+
 		return $results;
 	}
 
@@ -895,6 +899,8 @@ class Theme_Upgrader extends WP_Upgrader {
 
 		wp_clean_themes_cache( $parsed_args['clear_update_cache'] );
 
+		$this->skin->update_counts();
+
 		return true;
 	}
 
@@ -995,6 +1001,8 @@ class Theme_Upgrader extends WP_Upgrader {
 		// Refresh the Theme Update information
 		wp_clean_themes_cache( $parsed_args['clear_update_cache'] );
 
+		$this->skin->update_counts_iframe();
+
 		return $results;
 	}
 
diff --git src/wp-admin/js/updates.js src/wp-admin/js/updates.js
new file mode 100644
index 0000000..3b6b0db
--- /dev/null
+++ src/wp-admin/js/updates.js
@@ -0,0 +1,64 @@
+window.wp = window.wp || {};
+
+(function( $, wp ) {
+
+	function refreshWithNewCounts( updatesData ) {
+		var $pluginCount = $('#menu-plugins'),
+			$coreCount = $('a[href="update-core.php"]'),
+			$adminBarUpdates = $( '#wp-admin-bar-updates' );
+
+		$adminBarUpdates.find('.ab-item').attr( 'title', updatesData.title );
+		$adminBarUpdates.find('.ab-label').text( updatesData.formatted_counts.total );
+		$adminBarUpdates.find('.screen-reader-text').text( updatesData.title );
+
+		$coreCount.find( '.update-plugins' ).attr( 'title', updatesData.title )
+			.each( function( index, elem ) {
+				elem.className = elem.className.replace( /count-\d+/, 'count-' + updatesData.counts.total );
+			} )
+			.find( '.update-count' ).text( updatesData.formatted_counts.total );
+
+
+		$pluginCount.find( '.plugin-count' ).text( updatesData.formatted_counts.plugins );
+
+		$pluginCount.find( '.update-plugins' ).each( function( index, elem ) {
+			elem.className = elem.className.replace( /count-\d+/, 'count-' + updatesData.counts.plugins );
+		} );
+	}
+
+	/**
+	 * Issue ajax call to fetch updated plugin, theme, and core update count information.
+	 *
+	 * @param {string} nonce Valid nonce
+	 */
+	wp.updateCounts = function( nonce ) {
+		var data, dfd;
+
+		data = {
+			nonce: nonce
+		};
+
+		dfd = wp.ajax.post( 'get-updates-data', data );
+		dfd.done( refreshWithNewCounts );
+	};
+
+	$( window ).on( 'message', function( e ) {
+		var event = e.originalEvent,
+			message,
+			loc = document.location,
+			expectedOrigin = loc.protocol + '//' + loc.hostname;
+
+		if ( event.origin !== expectedOrigin ) {
+			return;
+		}
+
+		message = $.parseJSON( event.data );
+
+		if ( typeof message.action === 'undefined' || message.action !== 'updateCounts' ) {
+			return;
+		}
+
+		wp.updateCounts( message.nonce );
+
+	} );
+
+})( jQuery, window.wp );
diff --git src/wp-admin/plugins.php src/wp-admin/plugins.php
index 61efcf5..8b1e4a0 100644
--- src/wp-admin/plugins.php
+++ src/wp-admin/plugins.php
@@ -113,6 +113,7 @@ if ( $action ) {
 			$title = __( 'Update Plugins' );
 			$parent_file = 'plugins.php';
 
+			wp_enqueue_script('updates');
 			require_once(ABSPATH . 'wp-admin/admin-header.php');
 
 			echo '<div class="wrap">';
diff --git src/wp-admin/update-core.php src/wp-admin/update-core.php
index d40349e..fc9fcff 100644
--- src/wp-admin/update-core.php
+++ src/wp-admin/update-core.php
@@ -11,6 +11,7 @@ require_once( dirname( __FILE__ ) . '/admin.php' );
 
 wp_enqueue_style( 'plugin-install' );
 wp_enqueue_script( 'plugin-install' );
+wp_enqueue_script( 'updates' );
 add_thickbox();
 
 if ( is_multisite() && ! is_network_admin() ) {
diff --git src/wp-admin/update.php src/wp-admin/update.php
index e70d9c2..551da8e 100644
--- src/wp-admin/update.php
+++ src/wp-admin/update.php
@@ -37,7 +37,7 @@ if ( isset($_GET['action']) ) {
 		$url = 'update.php?action=update-selected&amp;plugins=' . urlencode(implode(',', $plugins));
 		$nonce = 'bulk-update-plugins';
 
-		wp_enqueue_script('jquery');
+		wp_enqueue_script('updates');
 		iframe_header();
 
 		$upgrader = new Plugin_Upgrader( new Bulk_Plugin_Upgrader_Skin( compact( 'nonce', 'url' ) ) );
@@ -54,6 +54,8 @@ if ( isset($_GET['action']) ) {
 		$title = __('Update Plugin');
 		$parent_file = 'plugins.php';
 		$submenu_file = 'plugins.php';
+
+		wp_enqueue_script('updates');
 		require_once(ABSPATH . 'wp-admin/admin-header.php');
 
 		$nonce = 'upgrade-plugin_' . $plugin;
@@ -154,6 +156,7 @@ if ( isset($_GET['action']) ) {
 		check_admin_referer('upgrade-theme_' . $theme);
 
 		wp_enqueue_script( 'customize-loader' );
+		wp_enqueue_script( 'updates' );
 
 		$title = __('Update Theme');
 		$parent_file = 'themes.php';
@@ -185,7 +188,7 @@ if ( isset($_GET['action']) ) {
 		$url = 'update.php?action=update-selected-themes&amp;themes=' . urlencode(implode(',', $themes));
 		$nonce = 'bulk-update-themes';
 
-		wp_enqueue_script('jquery');
+		wp_enqueue_script('updates');
 		iframe_header();
 
 		$upgrader = new Theme_Upgrader( new Bulk_Theme_Upgrader_Skin( compact( 'nonce', 'url' ) ) );
diff --git src/wp-includes/script-loader.php src/wp-includes/script-loader.php
index 6e4488d..44eb274 100644
--- src/wp-includes/script-loader.php
+++ src/wp-includes/script-loader.php
@@ -471,6 +471,8 @@ function wp_default_scripts( &$scripts ) {
 			'ays' => __('Are you sure you want to install this plugin?')
 		) );
 
+		$scripts->add( 'updates', "/wp-admin/js/updates$suffix.js", array( 'jquery', 'wp-util' ) );
+
 		$scripts->add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' );
 
 		$scripts->add( 'iris', '/wp-admin/js/iris.min.js', array( 'jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), false, 1 );
