diff --git src/wp-includes/class-wp-customize-nav-menus.php src/wp-includes/class-wp-customize-nav-menus.php
index e7b7e0f..c13ed93 100644
--- src/wp-includes/class-wp-customize-nav-menus.php
+++ src/wp-includes/class-wp-customize-nav-menus.php
@@ -771,15 +771,17 @@ final class WP_Customize_Nav_Menus {
 		);
 		$args['can_partial_refresh'] = $can_partial_refresh;
 
+		$hashed_args = $args;
+
 		if ( ! $can_partial_refresh ) {
-			$args['fallback_cb'] = '';
-			$args['walker'] = '';
+			$hashed_args['fallback_cb'] = '';
+			$hashed_args['walker'] = '';
 		}
 
-		ksort( $args );
-		$args['args_hash'] = $this->hash_nav_menu_args( $args );
+		ksort( $hashed_args );
+		$hashed_args['args_hash'] = $this->hash_nav_menu_args( $hashed_args );
 
-		$this->preview_nav_menu_instance_args[ $this->preview_nav_menu_instance_number ] = $args;
+		$this->preview_nav_menu_instance_args[ $this->preview_nav_menu_instance_number ] = $hashed_args;
 		return $args;
 	}
 
diff --git src/wp-includes/js/customize-preview-nav-menus.js src/wp-includes/js/customize-preview-nav-menus.js
index 2b6c994..ce962d6 100644
--- src/wp-includes/js/customize-preview-nav-menus.js
+++ src/wp-includes/js/customize-preview-nav-menus.js
@@ -9,7 +9,6 @@ wp.customize.menusPreview = ( function( $, api ) {
 		renderNonceValue: null,
 		renderNoncePostKey: null,
 		previewCustomizeNonce: null,
-		previewReady: $.Deferred(),
 		requestUri: '/',
 		theme: {
 			active: false,
@@ -20,10 +19,9 @@ wp.customize.menusPreview = ( function( $, api ) {
 	};
 
 	api.bind( 'preview-ready', function() {
-		self.previewReady.resolve();
-	} );
-	self.previewReady.done( function() {
-		self.init();
+		api.preview.bind( 'active', function() {
+			self.init();
+		} );
 	} );
 
 	/**
@@ -36,26 +34,24 @@ wp.customize.menusPreview = ( function( $, api ) {
 			$.extend( self, _wpCustomizePreviewNavMenusExports );
 		}
 
-		self.previewReady.done( function() {
-			api.each( function( setting, id ) {
-				setting.id = id;
-				self.bindListener( setting );
-			} );
+		api.each( function( setting, id ) {
+			setting.id = id;
+			self.bindListener( setting );
+		} );
 
-			api.preview.bind( 'setting', function( args ) {
-				var id, value, setting;
-				args = args.slice();
-				id = args.shift();
-				value = args.shift();
-				if ( ! api.has( id ) ) {
-					// Currently customize-preview.js is not creating settings for dynamically-created settings in the pane; so we have to do it
-					setting = api.create( id, value ); // @todo This should be in core
-					setting.id = id;
-					if ( self.bindListener( setting ) ) {
-						setting.callbacks.fireWith( setting, [ setting(), setting() ] );
-					}
+		api.preview.bind( 'setting', function( args ) {
+			var id, value, setting;
+			args = args.slice();
+			id = args.shift();
+			value = args.shift();
+			if ( ! api.has( id ) ) {
+				// Currently customize-preview.js is not creating settings for dynamically-created settings in the pane; so we have to do it
+				setting = api.create( id, value ); // @todo This should be in core
+				setting.id = id;
+				if ( self.bindListener( setting ) ) {
+					setting.callbacks.fireWith( setting, [ setting(), null ] );
 				}
-			} );
+			}
 		} );
 	};
 
diff --git tests/phpunit/tests/customize/nav-menus.php tests/phpunit/tests/customize/nav-menus.php
index 7c0ee3d..616bf0b 100644
--- tests/phpunit/tests/customize/nav-menus.php
+++ tests/phpunit/tests/customize/nav-menus.php
@@ -358,7 +358,6 @@ class Test_WP_Customize_Nav_Menus extends WP_UnitTestCase {
 
 		$expected = array(
 			'echo',
-			'args_hash',
 			'can_partial_refresh',
 			'fallback_cb',
 			'instance_number',
@@ -370,9 +369,14 @@ class Test_WP_Customize_Nav_Menus extends WP_UnitTestCase {
 			'walker'          => new Walker_Nav_Menu(),
 		) );
 		$this->assertEqualSets( $expected, array_keys( $results ) );
-		$this->assertEquals( '', $results['fallback_cb'] );
-		$this->assertEquals( '', $results['walker'] );
+		$this->assertEquals( 'wp_page_menu', $results['fallback_cb'] );
 		$this->assertEquals( 0, $results['can_partial_refresh'] );
+
+		$this->assertNotEmpty( $menus->preview_nav_menu_instance_args[ $results['instance_number'] ] );
+		$preview_nav_menu_instance_args = $menus->preview_nav_menu_instance_args[ $results['instance_number'] ];
+		$this->assertEquals( '', $preview_nav_menu_instance_args['fallback_cb'] );
+		$this->assertEquals( '', $preview_nav_menu_instance_args['walker'] );
+		$this->assertNotEmpty( $preview_nav_menu_instance_args['args_hash'] );
 	}
 
 	/**
