Index: wp-admin/customize.php
===================================================================
--- wp-admin/customize.php	(revision 35739)
+++ wp-admin/customize.php	(working copy)
@@ -52,6 +52,9 @@
  */
 do_action( 'customize_controls_init' );
 
+//setup heartbeat to keep nonces up to date
+wp_enqueue_script( 'heartbeat' );
+
 wp_enqueue_script( 'customize-controls' );
 wp_enqueue_style( 'customize-controls' );
 
Index: wp-admin/js/customize-controls.js
===================================================================
--- wp-admin/js/customize-controls.js	(revision 35739)
+++ wp-admin/js/customize-controls.js	(working copy)
@@ -2947,6 +2947,15 @@
 			};
 
 			/*
+			 * Set up heartbeat to refresh the nonces so that if a user leaves
+			 * a customizer window open beyond the nonce expiration
+			 * saving and previewing will continue to work
+			 */
+			$(document ).on('heartbeat-send', $.proxy( function( e ) {
+				this.refreshNonces();
+			}, this ));
+
+			/*
 			 * Wrap this.refresh to prevent it from hammering the servers:
 			 *
 			 * If refresh is called once and no other refresh requests are
