What this problem looks like
A stuck Customizer spinner means the preview frame or customize.php AJAX never finished. Classic themes and older commercial themes still rely on it even as Site Editor grows.
Because the Customizer runs admin and front end together, security plugins, ad blockers, and CDN caches often break it before the theme itself is at fault.
Quick checks in the browser
- Try a private window with extensions disabled.
- Open DevTools → Console and reload Appearance → Customize.
- Look for blocked scripts, CORS errors, or net::ERR_SSL messages.
- Switch to another browser to rule out a local extension.
Disable plugins that hook into admin
Caching plugins, firewall plugins, and admin optimizers commonly break customize_controls_print_scripts.
Disable them one at a time or use Health Check troubleshooting mode, then reload the Customizer.
Fix HTTPS and URL mismatches
If siteurl is https but assets load over http, the preview iframe may stay blank.
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );
Raise PHP limits for heavy themes
Large theme option panels can exceed default limits on budget hosting. Check debug.log if PHP fatals when Customizer loads.
define( 'WP_MEMORY_LIMIT', '256M' );
@ini_set( 'max_execution_time', '120' );
When the theme itself is the problem
Switch temporarily to a default theme. If Customizer works, update the commercial theme or ask the author about Customizer compatibility with your PHP version.
Block-based themes may steer you to Appearance → Editor instead. That is expected for full site editing themes.
When to stop DIY and hire help
Customizer failures that survive plugin isolation often need theme-level debugging. BugShield developers fix theme errors and AJAX failures at a confirmed price without hourly surprises.