{"id":178150,"date":"2023-10-25T14:04:07","date_gmt":"2023-10-25T14:04:07","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/live-auto-refresh\/"},"modified":"2026-06-10T16:40:18","modified_gmt":"2026-06-10T16:40:18","slug":"live-auto-refresh","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/live-auto-refresh\/","author":14839115,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.2","stable_tag":"4.2","tested":"7.0","requires":"4.7","requires_php":"7.0","requires_plugins":null,"header_name":"Live Auto Refresh (Hot Reload \/ Live Reload for WordPress Developers)","header_author":"Andrew Perron","header_description":"Instantly reloads the browser when any theme file code is edited during development or when a content edit is saved.","assets_banners_color":"5166a2","last_updated":"2026-06-10 16:40:18","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paypal.me\/perronuk\/","header_plugin_uri":"https:\/\/www.andrewperron.com\/live-auto-refresh\/","header_author_uri":"https:\/\/www.andrewperron.com\/live-auto-refresh\/","rating":4.3,"author_block_rating":0,"active_installs":100,"downloads":6336,"num_ratings":6,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"perron","date":"2023-12-05 13:25:12"},"1.1":{"tag":"1.1","author":"perron","date":"2024-11-27 16:55:14"},"2.0":{"tag":"2.0","author":"perron","date":"2025-06-12 12:49:39"},"2.1":{"tag":"2.1","author":"perron","date":"2025-06-14 11:10:53"},"2.2":{"tag":"2.2","author":"perron","date":"2025-06-19 14:17:31"},"3.0":{"tag":"3.0","author":"perron","date":"2025-06-24 08:28:19"},"3.1":{"tag":"3.1","author":"perron","date":"2025-07-01 10:34:30"},"3.2":{"tag":"3.2","author":"perron","date":"2025-07-09 11:32:07"},"3.2.1":{"tag":"3.2.1","author":"perron","date":"2025-07-09 13:08:07"},"4.2":{"tag":"4.2","author":"perron","date":"2026-06-10 16:40:18"}},"upgrade_notice":[],"ratings":{"1":1,"2":0,"3":0,"4":0,"5":5},"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":2983797,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":2983797,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":2983797,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3570443,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3570443,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.1","2.0","2.1","2.2","3.0","3.1","3.2","3.2.1","4.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":2983797,"resolution":"1","location":"assets","locale":"","width":300,"height":32},"screenshot-2.png":{"filename":"screenshot-2.png","revision":2983797,"resolution":"2","location":"assets","locale":"","width":368,"height":62},"screenshot-3.png":{"filename":"screenshot-3.png","revision":2983797,"resolution":"3","location":"assets","locale":"","width":673,"height":20}},"screenshots":{"1":"Admin bar toggle for quick enable\/disable","2":"Console notifications showing active monitoring and change detection","3":"Settings page with monitoring status and cache controls"}},"plugin_section":[],"plugin_tags":[9631,235154,235153,5827,21142],"plugin_category":[],"plugin_contributors":[222595],"plugin_business_model":[],"class_list":["post-178150","plugin","type-plugin","status-publish","hentry","plugin_tags-auto-refresh","plugin_tags-hot-reload","plugin_tags-live-reload","plugin_tags-refresh","plugin_tags-reload","plugin_contributors-perron","plugin_committers-perron"],"banners":{"banner":"https:\/\/ps.w.org\/live-auto-refresh\/assets\/banner-772x250.jpg?rev=3570443","banner_2x":"https:\/\/ps.w.org\/live-auto-refresh\/assets\/banner-1544x500.jpg?rev=3570443","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/live-auto-refresh\/assets\/icon.svg?rev=2983797","icon":"https:\/\/ps.w.org\/live-auto-refresh\/assets\/icon.svg?rev=2983797","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/live-auto-refresh\/assets\/screenshot-1.png?rev=2983797","caption":"Admin bar toggle for quick enable\/disable"},{"src":"https:\/\/ps.w.org\/live-auto-refresh\/assets\/screenshot-2.png?rev=2983797","caption":"Console notifications showing active monitoring and change detection"},{"src":"https:\/\/ps.w.org\/live-auto-refresh\/assets\/screenshot-3.png?rev=2983797","caption":"Settings page with monitoring status and cache controls"}],"raw_content":"<!--section=description-->\n<p><strong>Instant live reload for WordPress development.<\/strong><\/p>\n\n<p>Eliminate manual browser refreshes. See your code changes immediately across all devices as you work.<\/p>\n\n<p><strong>Key Features:<\/strong>\n- <strong>Instant Feedback<\/strong> - Changes to themes and selected plugins appear immediately\n- <strong>CSS Hot Reload<\/strong> - Stylesheet updates without full page refresh\n- <strong>Content Sync<\/strong> - Auto-reload when posts, pages, or builder content is saved\n- <strong>Multi-Device<\/strong> - All logged-in browsers reload simultaneously\n- <strong>Smart Transport<\/strong> - Server-Sent Events with automatic fallback to AJAX polling\n- <strong>Shared Connections<\/strong> - Multiple tabs share one server connection (no worker exhaustion)<\/p>\n\n<p><strong>Security:<\/strong>\n- Administrator\/editor only (filterable capability)\n- Nonce-protected endpoints\n- Clean uninstall removes all data<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install from the WordPress Plugin Directory<\/li>\n<li>Activate the plugin<\/li>\n<li>Go to <strong>Settings \u2192 Live Auto Refresh<\/strong> to configure monitoring<\/li>\n<li>Use the admin bar toggle to quickly enable\/disable while working<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20files%20are%20monitored%3F\"><h3>What files are monitored?<\/h3><\/dt>\n<dd><p>By default: <code>.php<\/code>, <code>.js<\/code>, and <code>.css<\/code> files in your active theme (parent and child) plus any plugins you select in settings. Changes are detected via modification time and file size.<\/p><\/dd>\n<dt id=\"which%20page%20builders%20are%20supported%3F\"><h3>Which page builders are supported?<\/h3><\/dt>\n<dd><p>Gutenberg, Elementor, Beaver Builder, Bricks Builder, WPBakery, Divi, Visual Composer, and ACF.<\/p><\/dd>\n<dt id=\"can%20i%20monitor%20my%20own%20plugin%20during%20development%3F\"><h3>Can I monitor my own plugin during development?<\/h3><\/dt>\n<dd><p>Yes. Select it in Settings \u2192 Live Auto Refresh.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20support%20for%20a%20custom%20builder%3F\"><h3>How do I add support for a custom builder?<\/h3><\/dt>\n<dd><p>Use the <code>perron_auto_refresh_custom_hooks<\/code> filter:<\/p>\n\n<pre><code>add_filter( 'perron_auto_refresh_custom_hooks', function( $hooks ) {\n    $hooks[] = 'my_builder_save_action';\n    return $hooks;\n} );\n<\/code><\/pre><\/dd>\n<dt id=\"available%20filters\"><h3>Available filters<\/h3><\/dt>\n<dd><ul>\n<li><code>perron_auto_refresh_capability<\/code> - required capability (default: <code>edit_others_posts<\/code>)<\/li>\n<li><code>perron_auto_refresh_reload_mode<\/code> - <code>'hard'<\/code> (full reload) or <code>'soft'<\/code> (CSS hot reload only)<\/li>\n<li><code>perron_auto_refresh_poll_interval<\/code> - seconds between filesystem checks (default: the Poll Interval setting; filter takes precedence)<\/li>\n<li><code>perron_auto_refresh_scan_budget_seconds<\/code> - max scan time per check (default: the Scan Budget setting; filter takes precedence)<\/li>\n<li><code>perron_auto_refresh_sse_max_runtime<\/code> - SSE connection lifetime (default: <code>180<\/code>)<\/li>\n<li><code>perron_auto_refresh_follow_symlinks<\/code> - return <code>true<\/code> to monitor symlinked themes\/plugins, e.g. when symlinking projects into wp-content during local development (default: <code>false<\/code>; cycles are guarded)<\/li>\n<\/ul><\/dd>\n<dt id=\"host%20configuration%20tips\"><h3>Host Configuration Tips<\/h3><\/dt>\n<dd><p>For best SSE performance, ensure your host supports:\n- PHP execution time of 180s+ (or <code>set_time_limit(0)<\/code>)\n- Idle timeouts &gt; 30s (for keep-alive pings)\n- Disabled proxy buffering on SSE endpoints<\/p>\n\n<p>If SSE fails, the plugin automatically falls back to AJAX polling.<\/p><\/dd>\n<dt id=\"do%20you%20accept%20donations%3F\"><h3>Do you accept donations?<\/h3><\/dt>\n<dd><p>Yes! <a href=\"https:\/\/paypal.me\/perronuk\/\">Donate here<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.2<\/h4>\n\n<ul>\n<li>Security: Capability-based access control (filterable via <code>perron_auto_refresh_capability<\/code>)<\/li>\n<li>Fixed: File rename detection, builder save normalization<\/li>\n<li>Improved: Database writes only on actual changes, leader-tab connection sharing, better error handling<\/li>\n<li>New: Settings page rebuilt on Settings API, JavaScript translations<\/li>\n<li>New: Poll Interval and Scan Budget are configurable on the settings page (filters still take precedence)<\/li>\n<li>New: After the inactivity timeout, clicking the PAUSED admin-bar button resumes monitoring in place - no page reload needed (all tabs resume together)<\/li>\n<li>New: <code>perron_auto_refresh_follow_symlinks<\/code> filter to monitor symlinked themes\/plugins<\/li>\n<\/ul>\n\n<h4>4.1<\/h4>\n\n<ul>\n<li>Fixed: PHP stat cache clearing, hash stability on large themes<\/li>\n<li>New: WP.org-compliant SSE streaming (admin-ajax primary, REST fallback, then AJAX polling)<\/li>\n<li>New: Leader-tab streaming to prevent worker exhaustion<\/li>\n<li>Improved: Builder save hook reliability, session expiration handling<\/li>\n<\/ul>\n\n<h4>4.0<\/h4>\n\n<ul>\n<li>Major: Full refactor to singleton class architecture<\/li>\n<li>New: SSE transport with automatic AJAX fallback<\/li>\n<li>Improved: Hash-based change detection with performance safeguards<\/li>\n<\/ul>\n\n<h4>3.0 - 3.3<\/h4>\n\n<ul>\n<li>Added: Plugin monitoring, page builder support, CSS hot reload improvements<\/li>\n<li>Switched to filemtime-based detection for better performance<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Added: Settings page, configurable intervals, nonce security<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release: AJAX polling with theme file monitoring and CSS hot reload<\/li>\n<\/ul>","raw_excerpt":"Instantly reloads the browser when theme or plugin files are edited, or when content is saved.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/178150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=178150"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/perron"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=178150"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=178150"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=178150"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=178150"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=178150"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=178150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}