{"id":333502,"date":"2026-06-29T09:53:02","date_gmt":"2026-06-29T09:53:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kinetichub-page-loader\/"},"modified":"2026-07-12T21:24:01","modified_gmt":"2026-07-12T21:24:01","slug":"kinetichub-page-loader","status":"publish","type":"plugin","link":"https:\/\/tt.wordpress.org\/plugins\/kinetichub-page-loader\/","author":23473886,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.0.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"KineticHub Page Loader","header_author":"KineticHub","header_description":"A lightweight brand preloader and site intro for WordPress. Show a polished loading screen with your logo before your site appears.","assets_banners_color":"032d4f","last_updated":"2026-07-12 21:24:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/getkinetichub.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":217,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"kinetichub","date":"2026-06-29 10:03:36"},"1.1.0":{"tag":"1.1.0","author":"kinetichub","date":"2026-06-29 18:58:49"},"1.1.1":{"tag":"1.1.1","author":"kinetichub","date":"2026-06-30 23:46:58"},"1.2.0":{"tag":"1.2.0","author":"kinetichub","date":"2026-07-12 21:24:01"}},"upgrade_notice":{"1.2.0":"<p>Performance improvements: minified assets, no-cost logo loading for repeat pageviews on session\/day frequency, and a more efficient progress-bar animation. No settings changes required.<\/p>","1.1.1":"<p>Fixes a loader removal issue on sites using cache or performance plugins that delay frontend JavaScript.<\/p>","1.1.0":"<p>Adds display rules, once-per-day loading, WooCommerce-safe exclusions, new branded logo effects, loading rings, and improved no-flash behavior.<\/p>","1.0.0":"<p>Initial WordPress.org release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3589870,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3589870,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3589870,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3589870,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3605210,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":false},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"kinetichub-page-loader\"},\"options\":{\"activate\":true}},{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"KineticHub Demo\",\"blogdescription\":\"Branded loading screens for WordPress\"}},{\"step\":\"mkdir\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/khpl-demo-style.php\",\"data\":\"<?php\\nadd_action( 'wp_head', function () {\\n\\techo '<style>.khpl-loader__tagline{margin-top:10px;}<\\\/style>';\\n} );\\n\"},{\"step\":\"writeFile\",\"path\":\"\\\/tmp\\\/khpl-demo-logo.png\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/ps.w.org\\\/kinetichub-page-loader\\\/assets\\\/icon-256x256.png\"}},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; require_once ABSPATH . 'wp-admin\\\/includes\\\/image.php'; require_once ABSPATH . 'wp-admin\\\/includes\\\/file.php'; require_once ABSPATH . 'wp-admin\\\/includes\\\/media.php'; $attachment_id = 0; $logo_file = '\\\/tmp\\\/khpl-demo-logo.png'; if ( file_exists( $logo_file ) ) { $upload = wp_upload_bits( 'kinetichub-logo.png', null, file_get_contents( $logo_file ) ); if ( empty( $upload['error'] ) ) { $attachment_id = wp_insert_attachment( array( 'post_mime_type' => 'image\\\/png', 'post_title' => 'KineticHub Logo', 'post_status' => 'inherit' ), $upload['file'] ); if ( ! is_wp_error( $attachment_id ) && $attachment_id ) { wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $upload['file'] ) ); } else { $attachment_id = 0; } } } update_option( 'khpl_settings', array( 'enabled' => true, 'preset' => 'circular-brand-ring', 'display_mode' => 'site', 'audience' => 'everyone', 'show_frequency' => 'every', 'logo_attachment_id' => $attachment_id, 'logo_shape' => 'circle', 'logo_effect' => 'fade', 'text_fallback' => 'KineticHub', 'tagline' => 'Branded loading screens for WordPress', 'logo_ring_enabled' => true, 'logo_ring_style' => 'dual', 'bg_color' => '#0f172a', 'accent_color' => '#22d3ee', 'text_color' => '#f8fafc', 'use_gradient' => true, 'gradient_color' => '#6366f1', 'min_display_ms' => 4000, 'max_timeout_ms' => 8000, 'fade_out_ms' => 600, 'show_on_desktop' => true, 'show_on_mobile' => true ) );\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.1.1","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.gif":{"filename":"screenshot-1.gif","revision":3605210,"resolution":"1","location":"assets","locale":"","width":640,"height":480},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3605210,"resolution":"2","location":"assets","locale":"","width":1119,"height":552},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3605210,"resolution":"3","location":"assets","locale":"","width":1142,"height":571},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3605210,"resolution":"4","location":"assets","locale":"","width":1127,"height":570},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3605210,"resolution":"5","location":"assets","locale":"","width":1144,"height":558},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3605210,"resolution":"6","location":"assets","locale":"","width":1134,"height":573}},"screenshots":{"1":"Loader presets in action - branded loading screens with logo, animated loading ring, and CSS-only animations.","2":"Core and display rules settings - enable the preloader, site-wide or homepage, audience, frequency, and exclusions.","3":"Content settings - logo upload, text fallback, and tagline.","4":"Behavior settings - minimum display time, maximum timeout, fade-out duration, and desktop\/mobile visibility.","5":"Design settings - loader presets, colors, and gradient background.","6":"Design settings - logo effects, logo shapes, and animated loading ring controls."}},"plugin_section":[],"plugin_tags":[154083,32564,791,9622,5624],"plugin_category":[],"plugin_contributors":[264673],"plugin_business_model":[],"class_list":["post-333502","plugin","type-plugin","status-publish","hentry","plugin_tags-loading-screen","plugin_tags-page-loader","plugin_tags-preloader","plugin_tags-spinner","plugin_tags-splash-screen","plugin_contributors-kinetichub","plugin_committers-kinetichub","plugin_support_reps-caddylac00"],"banners":{"banner":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/banner-772x250.png?rev=3589870","banner_2x":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/banner-1544x500.png?rev=3589870","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/icon-128x128.png?rev=3589870","icon_2x":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/icon-256x256.png?rev=3589870","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/screenshot-1.gif?rev=3605210","caption":"Loader presets in action - branded loading screens with logo, animated loading ring, and CSS-only animations."},{"src":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/screenshot-2.png?rev=3605210","caption":"Core and display rules settings - enable the preloader, site-wide or homepage, audience, frequency, and exclusions."},{"src":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/screenshot-3.png?rev=3605210","caption":"Content settings - logo upload, text fallback, and tagline."},{"src":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/screenshot-4.png?rev=3605210","caption":"Behavior settings - minimum display time, maximum timeout, fade-out duration, and desktop\/mobile visibility."},{"src":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/screenshot-5.png?rev=3605210","caption":"Design settings - loader presets, colors, and gradient background."},{"src":"https:\/\/ps.w.org\/kinetichub-page-loader\/assets\/screenshot-6.png?rev=3605210","caption":"Design settings - logo effects, logo shapes, and animated loading ring controls."}],"raw_content":"<!--section=description-->\n<p><strong>KineticHub Page Loader<\/strong> is a lightweight preloader plugin that displays a branded loading screen while your WordPress site is being rendered. Instead of a blank white page, your visitors see a polished splash screen with your logo, site name, or tagline, an optional animated loading ring (spinner), and a smooth loading animation \u2014 then the preloader cleanly fades out and removes itself from the DOM once the page is ready.<\/p>\n\n<p>The preloader is designed to improve the <strong>perceived first impression<\/strong> of your site. It does not improve server response time or actual page speed \u2014 it replaces the unstyled flash of a loading page with intentional branding.<\/p>\n\n<p>The loading screen is built with CSS-first animations, vanilla JavaScript, and zero external dependencies: no jQuery, no external fonts, no CDN assets, no remote requests. It ships with display rules for audience targeting, show frequency, and exclusions for specific pages, URL paths, and WooCommerce pages. It respects <code>prefers-reduced-motion<\/code>, cleans up after itself, and is safe to use alongside caching plugins.<\/p>\n\n<h4>Why use a preloader?<\/h4>\n\n<ul>\n<li>Replace the blank white screen during page load with a <strong>branded splash screen<\/strong><\/li>\n<li>Reinforce your brand with a <strong>logo loading screen<\/strong> on every first visit<\/li>\n<li>Give slow or asset-heavy pages a <strong>polished loading animation<\/strong> instead of a half-rendered layout<\/li>\n<li>Keep full control: show the preloader site-wide, only on the homepage, only to visitors, or only once per session or per day<\/li>\n<\/ul>\n\n<h4>Key highlights<\/h4>\n\n<ul>\n<li><strong>7 CSS-only loader presets<\/strong> \u2014 from a minimal pulse to gradient sweeps and circular brand rings<\/li>\n<li><strong>Logo loading screen<\/strong> \u2014 upload your logo via the media library, with text and tagline fallbacks<\/li>\n<li><strong>Animated loading ring (spinner)<\/strong> \u2014 solid, dashed, dual, or glow styles with color, speed, and thickness controls<\/li>\n<li><strong>Logo effects and shapes<\/strong> \u2014 fade, grayscale reveal, soft scale; original, rounded, or circular frame<\/li>\n<li><strong>Display rules<\/strong> \u2014 visitors only, site-wide or homepage only, excluded post\/page IDs, excluded URL paths<\/li>\n<li><strong>Show frequency<\/strong> \u2014 every page load, once per session, or once per day, with no-flash suppression<\/li>\n<li><strong>WooCommerce-safe<\/strong> \u2014 optionally exclude the loading screen on cart, checkout, and account pages<\/li>\n<li><strong>Lightweight and dependency-free<\/strong> \u2014 no jQuery, no external fonts, no CDN assets, no remote requests<\/li>\n<li><strong>Accessible by design<\/strong> \u2014 respects <code>prefers-reduced-motion<\/code>, no focus trap, <code>aria-hidden<\/code> overlay, removed from the DOM after hiding<\/li>\n<li><strong>Always fails safe<\/strong> \u2014 a maximum timeout guarantees the preloader disappears even if a resource never loads<\/li>\n<li><strong>Compatible<\/strong> with classic themes, block themes, page builders, caching plugins, and WooCommerce<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Enable \/ disable<\/strong> the preloader from the settings screen<\/li>\n<li><strong>Display on:<\/strong> entire site or homepage only<\/li>\n<li><strong>Audience:<\/strong> everyone, or visitors only (hides the loading screen for logged-in users)<\/li>\n<li><strong>Show frequency:<\/strong> every page load, once per session, or once per day<\/li>\n<li><strong>Excluded post\/page IDs:<\/strong> suppress the preloader on specific posts or pages by ID<\/li>\n<li><strong>Excluded URL paths:<\/strong> suppress the preloader on specific URL paths<\/li>\n<li><strong>WooCommerce exclusions:<\/strong> optionally exclude cart, checkout, and account pages when WooCommerce is active<\/li>\n<li><strong>Logo:<\/strong> upload via the WordPress media library<\/li>\n<li><strong>Text fallback:<\/strong> shown when no logo is set; falls back to the site name if empty<\/li>\n<li><strong>Tagline:<\/strong> optional short line displayed beneath the logo or text<\/li>\n<li><strong>Logo effects:<\/strong> fade in, grayscale reveal, or soft scale entrance animation<\/li>\n<li><strong>Logo shapes:<\/strong> original, rounded corners, or circular logo frame<\/li>\n<li><strong>Loading ring:<\/strong> animated spinner ring around the logo with solid, dashed, dual, or glow styles; adjustable color, thickness, and speed<\/li>\n<li><strong>Seven animation presets:<\/strong> each is a CSS-only visual effect with no JavaScript dependency<\/li>\n<li><strong>Colors:<\/strong> background, accent, and text colors with optional gradient background<\/li>\n<li><strong>Timing controls:<\/strong> minimum display time, maximum timeout, and fade-out duration<\/li>\n<li><strong>Visibility:<\/strong> independently enable or disable the loading screen on desktop and mobile<\/li>\n<\/ul>\n\n<h3>Included Loader Styles<\/h3>\n\n<ol>\n<li><strong>Minimal Pulse<\/strong> \u2014 Content breathes gently while an accent dot pulses below<\/li>\n<li><strong>Logo Fade<\/strong> \u2014 Content rises and fades in; a pulsing accent line signals loading<\/li>\n<li><strong>Gradient Sweep<\/strong> \u2014 An animated gradient flows across the background<\/li>\n<li><strong>Soft Orb<\/strong> \u2014 A radial glow breathes behind the logo and content<\/li>\n<li><strong>Progress Bar Minimal<\/strong> \u2014 A thin bar advances across the top as the loader waits<\/li>\n<li><strong>Circular Brand Ring<\/strong> \u2014 Logo displayed in a circle with two counter-rotating accent rings<\/li>\n<li><strong>Logo Color Reveal<\/strong> \u2014 Logo animates from grayscale to full color as the loader displays<\/li>\n<\/ol>\n\n<p>All presets automatically collapse to an instant transition when <code>prefers-reduced-motion: reduce<\/code> is detected.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>kinetichub-page-loader<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install directly through the WordPress plugin directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Settings -&gt; Page Loader<\/strong> to configure your preloader.<\/li>\n<li>Upload your logo, choose a loading screen preset, set your colors, and save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20add%20a%20preloader%20to%20my%20wordpress%20site%3F\"><h3>How do I add a preloader to my WordPress site?<\/h3><\/dt>\n<dd><p>Install and activate KineticHub Page Loader, then go to <strong>Settings -&gt; Page Loader<\/strong>. Enable the loader, upload your logo (or use the text fallback), pick one of the 7 loading screen presets, choose your colors, and save. The preloader appears on the next front-end page load.<\/p><\/dd>\n<dt id=\"does%20a%20preloader%20make%20my%20website%20faster%3F\"><h3>Does a preloader make my website faster?<\/h3><\/dt>\n<dd><p>No. KineticHub Page Loader does not improve server response time or optimize assets. It creates a branded loading layer that can improve the <strong>perceived first impression<\/strong> of your site while the page finishes rendering in the background.<\/p><\/dd>\n<dt id=\"will%20the%20preloader%20hurt%20my%20core%20web%20vitals%20or%20seo%3F\"><h3>Will the preloader hurt my Core Web Vitals or SEO?<\/h3><\/dt>\n<dd><p>The plugin is built to keep its footprint minimal: assets are minified, there are no external requests, the loader logo ships with explicit dimensions, and the overlay is fully removed from the DOM after hiding. The preloader is a visual layer on top of your page \u2014 it does not block search engine crawlers from seeing your content.<\/p><\/dd>\n<dt id=\"can%20i%20show%20the%20loading%20screen%20only%20on%20the%20homepage%3F\"><h3>Can I show the loading screen only on the homepage?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>Display Rules<\/strong> you can choose between showing the preloader on the entire site or on the homepage only. You can also exclude specific post\/page IDs and URL paths.<\/p><\/dd>\n<dt id=\"can%20i%20show%20the%20preloader%20only%20once%20per%20visitor%3F\"><h3>Can I show the preloader only once per visitor?<\/h3><\/dt>\n<dd><p>Yes. The show frequency setting supports every page load, once per session, or once per day. In session and daily modes, a no-flash suppression mechanism prevents the loader from briefly flashing on repeat pageviews.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20own%20logo%20in%20the%20loading%20screen%3F\"><h3>Can I use my own logo in the loading screen?<\/h3><\/dt>\n<dd><p>Yes. Upload any image from the WordPress media library. You can apply logo effects (fade, grayscale reveal, soft scale), shapes (original, rounded, circle), and an animated loading ring around it. If no logo is set, a text fallback (defaulting to your site name) is displayed instead.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20the%20preloader%20on%20mobile%20or%20desktop%3F\"><h3>Can I disable the preloader on mobile or desktop?<\/h3><\/dt>\n<dd><p>Yes. Desktop and mobile visibility can be toggled independently in the settings.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%3F\"><h3>Does it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. The loader HTML is output server-side and cached normally. Session and daily-limit tracking are handled entirely client-side using <code>sessionStorage<\/code> and <code>localStorage<\/code>, so no server-side session state is needed and full-page-cache compatibility is maintained.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%2C%20divi%2C%20and%20other%20page%20builders%3F\"><h3>Does it work with Elementor, Divi, and other page builders?<\/h3><\/dt>\n<dd><p>Yes. The preloader is theme-agnostic: it overlays the finished page using the standard <code>wp_body_open<\/code> hook (with a <code>wp_footer<\/code> fallback), so it works with any theme or page builder that renders normal front-end pages. It does not modify your builder content.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20block%20themes%3F\"><h3>Does it work with block themes?<\/h3><\/dt>\n<dd><p>Yes. The loader uses the <code>wp_body_open<\/code> action that all modern themes call. A <code>wp_footer<\/code> fallback is included for themes that do not call <code>wp_body_open<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20support%20woocommerce%3F\"><h3>Does it support WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. You can exclude the loading screen from WooCommerce cart, checkout, and account pages using the <strong>Exclude WooCommerce Pages<\/strong> toggle in the Display Rules settings. WooCommerce does not need to be installed for the plugin to work; the exclusion is applied only when WooCommerce is active.<\/p><\/dd>\n<dt id=\"does%20it%20use%20jquery%3F\"><h3>Does it use jQuery?<\/h3><\/dt>\n<dd><p>No. The frontend script is plain vanilla JavaScript with no library dependencies, no external fonts, and no CDN or remote requests.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20javascript%20is%20disabled%3F\"><h3>What happens if JavaScript is disabled?<\/h3><\/dt>\n<dd><p>A <code>&lt;noscript&gt;<\/code> style block is output in <code>&lt;head&gt;<\/code> that hides the loader immediately. Visitors with JavaScript disabled see the page normally without any blocked overlay.<\/p><\/dd>\n<dt id=\"does%20it%20respect%20reduced%20motion%20settings%3F\"><h3>Does it respect reduced motion settings?<\/h3><\/dt>\n<dd><p>Yes. When the visitor's operating system or browser reports <code>prefers-reduced-motion: reduce<\/code>, all animations are collapsed to an instant transition and the minimum display time is effectively bypassed, so the preloader disappears as quickly as possible.<\/p><\/dd>\n<dt id=\"what%20is%20the%20%22maximum%20timeout%22%20setting%3F\"><h3>What is the \"maximum timeout\" setting?<\/h3><\/dt>\n<dd><p>It is a safety net. If a third-party resource (script, font, image) never finishes loading and the browser <code>load<\/code> event never fires, the maximum timeout ensures the loading screen is removed anyway, preventing it from blocking the page indefinitely.<\/p><\/dd>\n<dt id=\"is%20the%20loader%20accessible%3F\"><h3>Is the loader accessible?<\/h3><\/dt>\n<dd><p>The loader uses <code>aria-hidden=\"true\"<\/code> so screen readers skip it. There is no focus trap \u2014 keyboard focus stays on the page below. The loader is fully removed from the DOM after hiding, leaving no residual impact on the accessibility tree.<\/p><\/dd>\n<dt id=\"can%20i%20remove%20the%20preloader%20on%20specific%20pages%3F\"><h3>Can I remove the preloader on specific pages?<\/h3><\/dt>\n<dd><p>Yes. Use <strong>Excluded post\/page IDs<\/strong> for individual posts or pages, <strong>Excluded URL paths<\/strong> for path-based rules, and the WooCommerce toggle for cart, checkout, and account pages.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Performance: distributed CSS and JavaScript files are now minified via an automated build step.<\/li>\n<li>Performance: the loader logo now ships with <code>width<\/code>\/<code>height<\/code> and <code>fetchpriority=\"high\"<\/code> to reduce its impact on Largest Contentful Paint (LCP).<\/li>\n<li>Performance: for \"Once per session\" and \"Once per day\" frequency, the logo image is no longer downloaded at all on pageviews where the loader has already been shown - only the loader markup itself was suppressed before.<\/li>\n<li>Performance: the Progress Bar Minimal preset now animates with <code>transform<\/code> instead of <code>width<\/code>, avoiding unnecessary layout recalculation while the bar advances.<\/li>\n<li>Internal: settings and display-eligibility checks are now computed once per request instead of being recalculated on every output hook.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fixed loader removal reliability when cache or performance plugins delay frontend JavaScript.<\/li>\n<li>Hardened maximum timeout behavior so the loader cannot remain visible indefinitely on optimized pages.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added display rules: visitors-only loading, once-per-day frequency, excluded post\/page IDs, excluded URL paths, and WooCommerce page exclusions.<\/li>\n<li>Added no-flash suppression for once-per-session and once-per-day display modes.<\/li>\n<li>Added logo effects (fade, grayscale reveal, soft scale), logo shape controls (rounded, circle), and loading ring options (solid, dashed, dual, glow).<\/li>\n<li>Added two new loader presets: Circular Brand Ring and Logo Color Reveal.<\/li>\n<li>Improved preset visual quality, reduced-motion handling, ring and shape compatibility, and admin UI usability.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Added lightweight page loader with five CSS-first animation presets.<\/li>\n<li>Added logo upload, text fallback, and optional tagline.<\/li>\n<li>Added background, accent, and text color controls with optional gradient.<\/li>\n<li>Added minimum display time, maximum timeout, and fade-out duration controls.<\/li>\n<li>Added once-per-session display option.<\/li>\n<li>Added desktop and mobile visibility controls.<\/li>\n<li>Added maximum timeout safety net to prevent indefinite blocking.<\/li>\n<li>Added <code>prefers-reduced-motion<\/code> support.<\/li>\n<li>Added noscript fallback to hide loader for JavaScript-disabled visitors.<\/li>\n<li>Added <code>wp_footer<\/code> fallback output for themes without <code>wp_body_open<\/code> support.<\/li>\n<\/ul>","raw_excerpt":"Lightweight preloader for WordPress. Show a branded loading screen with your logo, an animated spinner ring, and 7 CSS-only loader presets.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/333502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=333502"}],"author":[{"embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kinetichub"}],"wp:attachment":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=333502"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=333502"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=333502"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=333502"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=333502"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=333502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}