diff --git a/src/wp-admin/js/updates.js b/src/wp-admin/js/updates.js
index e1d963a..a8de967 100644
--- a/src/wp-admin/js/updates.js
+++ b/src/wp-admin/js/updates.js
@@ -1597,12 +1597,105 @@
 		}
 	};
 
+	/**
+	 * Handles the plugin searching from the repository dynamically.
+	 *
+	 * @param {object} data  $_POST data for ajax request 'search-install-plugins'.
+	 *
+	 */
+	wp.updates.pluginInstallSearchRequest = function ( data ) {
+		var $searchTab = $( '.plugin-install-search' ), searchLocation, $pluginFilter = $( '#plugin-filter' );
+
+		$pluginFilter.empty();
+
+		if ( ! $searchTab.length ) {
+
+			searchLocation = location.href.split( '?' )[ 0 ] + '?' + $.param( _.omit( data, [ '_ajax_nonce', 'pagenow' ] ) );
+
+			$searchTab = $( '<li class="plugin-install-search" />' )
+				.append( $( '<a />', {
+					'class': 'current',
+					'href': searchLocation,
+					'text': wp.updates.l10n.searchResultsLabel
+				} ) );
+
+			$( '.wp-filter .filter-links .current' )
+				.removeClass( 'current' )
+				.parents( '.filter-links' )
+				.prepend( $searchTab );
+
+			$pluginFilter.prev( 'p' ).remove();
+
+			$( '.plugins-popular-tags-wrapper' ).remove();
+		}
+
+		if ( 'undefined' !== typeof wp.updates.searchRequest ) {
+			wp.updates.searchRequest.abort();
+		}
+
+		$( 'body' ).addClass( 'loading-content' );
+
+		wp.updates.searchRequest = wp.ajax.post( 'search-install-plugins', data ).done( function( response ) {
+			$( 'body' ).removeClass( 'loading-content' );
+			$pluginFilter.append( response.items );
+			delete wp.updates.searchRequest;
+
+			if ( 0 === response.count ) {
+				wp.a11y.speak( wp.updates.l10n.noPluginsFound );
+			} else {
+				wp.a11y.speak( wp.updates.l10n.pluginsFound.replace( '%d', response.count ) );
+			}
+		} );
+	};
+
+	/**
+	 * Handles the plugin searching from install plugins.
+	 *
+	 * @param {object} data  $_POST data for ajax request 'search-plugins'.
+	 *
+	 */
+	wp.updates.pluginSearchRequest = function ( data ) {
+		var $bulkActionForm      = $( '#bulk-action-form' );
+		if ( 'undefined' !== typeof wp.updates.searchRequest ) {
+			wp.updates.searchRequest.abort();
+		}
+
+		$bulkActionForm.empty();
+
+		$( 'body' ).addClass( 'loading-content' );
+
+		wp.updates.searchRequest = wp.ajax.post( 'search-plugins', data ).done( function ( response ) {
+
+			// Can we just ditch this whole subtitle business?
+			var $subTitle = $( '<span />' ).addClass( 'subtitle' ).html( wp.updates.l10n.searchResults.replace( '%s', _.escape( data.s ) ) ), $oldSubTitle = $( '.wrap .subtitle' );
+
+			if ( ! data.s.length ) {
+				$oldSubTitle.remove();
+			} else if ( $oldSubTitle.length ) {
+				$oldSubTitle.replaceWith( $subTitle );
+			} else {
+				$( '.wrap h1' ).append( $subTitle );
+			}
+
+			$( 'body' ).removeClass( 'loading-content' );
+			$bulkActionForm.append( response.items );
+			delete wp.updates.searchRequest;
+
+			if ( 0 === response.count ) {
+				wp.a11y.speak( wp.updates.l10n.noPluginsFound );
+			} else {
+				wp.a11y.speak( wp.updates.l10n.pluginsFound.replace( '%d', response.count ) );
+			}
+		} );
+	};
+
 	$( function() {
 		var $pluginFilter        = $( '#plugin-filter' ),
 			$bulkActionForm      = $( '#bulk-action-form' ),
 			$filesystemModal     = $( '#request-filesystem-credentials-dialog' ),
 			$pluginSearch        = $( '.plugins-php .wp-filter-search' ),
-			$pluginInstallSearch = $( '.plugin-install-php .wp-filter-search' );
+			$pluginInstallSearch = $( '.plugin-install-php .wp-filter-search' ),
+			$pluginSearchType    = $( '#typeselector' );
 
 		/*
 		 * Whether a user needs to submit filesystem credentials.
@@ -2033,13 +2126,13 @@
 		 * @since 4.6.0
 		 */
 		$pluginInstallSearch.on( 'keyup input', _.debounce( function( event, eventtype ) {
-			var $searchTab = $( '.plugin-install-search' ), data, searchLocation;
+			var data, searchLocation;
 
 			data = {
 				_ajax_nonce: wp.updates.ajaxNonce,
 				s:           event.target.value,
 				tab:         'search',
-				type:        $( '#typeselector' ).val(),
+				type:        $pluginSearchType.val(),
 				pagenow:     pagenow
 			};
 			searchLocation = location.href.split( '?' )[ 0 ] + '?' + $.param( _.omit( data, [ '_ajax_nonce', 'pagenow' ] ) );
@@ -2052,7 +2145,6 @@
 			if ( wp.updates.searchTerm === data.s && 'typechange' !== eventtype ) {
 				return;
 			} else {
-				$pluginFilter.empty();
 				wp.updates.searchTerm = data.s;
 			}
 
@@ -2060,39 +2152,8 @@
 				window.history.pushState( null, '', searchLocation );
 			}
 
-			if ( ! $searchTab.length ) {
-				$searchTab = $( '<li class="plugin-install-search" />' )
-					.append( $( '<a />', {
-						'class': 'current',
-						'href': searchLocation,
-						'text': wp.updates.l10n.searchResultsLabel
-					} ) );
-
-				$( '.wp-filter .filter-links .current' )
-					.removeClass( 'current' )
-					.parents( '.filter-links' )
-					.prepend( $searchTab );
-
-				$pluginFilter.prev( 'p' ).remove();
-				$( '.plugins-popular-tags-wrapper' ).remove();
-			}
-
-			if ( 'undefined' !== typeof wp.updates.searchRequest ) {
-				wp.updates.searchRequest.abort();
-			}
-			$( 'body' ).addClass( 'loading-content' );
-
-			wp.updates.searchRequest = wp.ajax.post( 'search-install-plugins', data ).done( function( response ) {
-				$( 'body' ).removeClass( 'loading-content' );
-				$pluginFilter.append( response.items );
-				delete wp.updates.searchRequest;
+			wp.updates.pluginInstallSearchRequest( data );
 
-				if ( 0 === response.count ) {
-					wp.a11y.speak( wp.updates.l10n.noPluginsFound );
-				} else {
-					wp.a11y.speak( wp.updates.l10n.pluginsFound.replace( '%d', response.count ) );
-				}
-			} );
 		}, 500 ) );
 
 		if ( $pluginSearch.length ) {
@@ -2127,37 +2188,8 @@
 				window.history.pushState( null, '', location.href.split( '?' )[ 0 ] + '?s=' + data.s );
 			}
 
-			if ( 'undefined' !== typeof wp.updates.searchRequest ) {
-				wp.updates.searchRequest.abort();
-			}
-
-			$bulkActionForm.empty();
-			$( 'body' ).addClass( 'loading-content' );
-
-			wp.updates.searchRequest = wp.ajax.post( 'search-plugins', data ).done( function( response ) {
-
-				// Can we just ditch this whole subtitle business?
-				var $subTitle    = $( '<span />' ).addClass( 'subtitle' ).html( wp.updates.l10n.searchResults.replace( '%s', _.escape( data.s ) ) ),
-					$oldSubTitle = $( '.wrap .subtitle' );
-
-				if ( ! data.s.length ) {
-					$oldSubTitle.remove();
-				} else if ( $oldSubTitle.length ) {
-					$oldSubTitle.replaceWith( $subTitle );
-				} else {
-					$( '.wrap h1' ).append( $subTitle );
-				}
-
-				$( 'body' ).removeClass( 'loading-content' );
-				$bulkActionForm.append( response.items );
-				delete wp.updates.searchRequest;
+			wp.updates.pluginSearchRequest( data );
 
-				if ( 0 === response.count ) {
-					wp.a11y.speak( wp.updates.l10n.noPluginsFound );
-				} else {
-					wp.a11y.speak( wp.updates.l10n.pluginsFound.replace( '%d', response.count ) );
-				}
-			} );
 		}, 500 ) );
 
 		/**
@@ -2176,7 +2208,7 @@
 		 *
 		 * @since 4.6.0
 		 */
-		$( '#typeselector' ).on( 'change', function() {
+		$pluginSearchType.on( 'change', function() {
 			var $search = $( 'input[name="s"]' );
 
 			if ( $search.val().length ) {
@@ -2298,5 +2330,59 @@
 		 * @since 4.2.0
 		 */
 		$( window ).on( 'beforeunload', wp.updates.beforeunload );
+
+		/**
+		 * Window popstate for search plugins
+		 */
+		$( window ).on( 'popstate', function ( event ) {
+
+			if ( 'plugin-install' === pagenow || 'plugins' === pagenow ) {
+				var data, currentLocation, urlSearchString, urlTypeString, urlTabString;
+				currentLocation = location.href;
+				urlSearchString = wp.urlParam( 's', currentLocation );
+
+				switch ( pagenow ) {
+
+					case 'plugins':
+
+						$pluginSearch.val( urlSearchString );
+
+						data = {
+							_ajax_nonce: wp.updates.ajaxNonce,
+							s:           urlSearchString,
+							pagenow:     pagenow
+						};
+
+						wp.updates.pluginSearchRequest( data );
+						break;
+
+					case 'plugin-install':
+
+						urlTypeString   = wp.urlParam( 'type', currentLocation );
+						urlTabString    = wp.urlParam( 'tab', currentLocation );
+
+						if ( urlTypeString == "" ) {
+							urlTypeString = "term";
+						}
+						$pluginSearchType.val( urlTypeString );
+						$pluginInstallSearch.val( urlSearchString );
+
+						data = {
+							_ajax_nonce: wp.updates.ajaxNonce,
+							s:           urlSearchString,
+							tab:         urlTabString,
+							type:        urlTypeString,
+							pagenow:     pagenow
+						};
+
+						wp.updates.pluginInstallSearchRequest( data );
+						break;
+
+					default:
+						return;
+				}
+			}
+
+		} );
 	} );
 })( jQuery, window.wp, _.extend( window._wpUpdatesSettings, window._wpUpdatesItemCounts || {} ) );
diff --git a/src/wp-includes/js/wp-util.js b/src/wp-includes/js/wp-util.js
index 527441d..6e2acdf 100644
--- a/src/wp-includes/js/wp-util.js
+++ b/src/wp-includes/js/wp-util.js
@@ -6,6 +6,28 @@ window.wp = window.wp || {};
 	var settings = typeof _wpUtilSettings === 'undefined' ? {} : _wpUtilSettings;
 
 	/**
+	 * wp.urlParam( name, url )
+	 *
+	 * Fetch parameters from given URL
+	 *
+	 * @param  {string} name   A parameter name to fetch value from url.
+	 *                       For example, "param1" for example.com?param1=value1&param2=value2
+	 *
+	 * @param  {string} url   Url to fetch parameters
+	 *                       For example, example.com?param1=value1&param2=value2
+	 *
+	 * @return {string}   Return value of given parameter name from url
+	 */
+	wp.urlParam = function ( name, url ) {
+		var results = new RegExp( '[\?&]' + name + '=([^&#]*)' ).exec( url );
+		if ( 'undefined' === typeof results || null == results || ! _.isArray( results ) || 'undefined' === typeof results[1] ) {
+			return "";
+		}
+		return results[1];
+	};
+
+
+	/**
 	 * wp.template( id )
 	 *
 	 * Fetch a JavaScript template for an id, and return a templating function for it.
