Troubleshooting

An Animation Is Not Starting

Troubleshoot a visible KineticHub block whose animation, scroll effect, pointer interaction, canvas, or continuous movement does not start on the frontend.

Overview

A KineticHub block can appear correctly on the frontend while its expected animation or interaction remains inactive.

Possible causes include:

  • The selected effect requires scrolling, hovering, dragging, or another interaction
  • The block has not entered its trigger area
  • Reduced motion is enabled
  • Mobile motion is disabled
  • A block-specific mobile fallback is active
  • The frontend JavaScript did not load
  • JavaScript was delayed by an optimization plugin
  • An earlier browser error interrupted initialization
  • The block initialized while its container had no measurable dimensions
  • A parent container interferes with pointer, sticky, or scroll behavior
  • The animation is paused while outside the viewport
  • A block is intentionally using a static fallback
  • Cached CSS or JavaScript is outdated

First confirm that the block itself is visible. When the complete block is missing, use the guide A Block Is Not Visible on the Frontend instead.

Identify the expected behavior

Before troubleshooting, confirm what the selected effect is designed to do.

KineticHub blocks can use different types of behavior:

  • Scroll-triggered entrance animation
  • Continuous movement
  • Pointer-following movement
  • Hover interaction
  • Click or tap interaction
  • Drag interaction
  • Sticky or pinned scrolling
  • Scroll-progress animation
  • Canvas or WebGL rendering
  • Media playback
  • Modal entrance animation

An effect that depends on hover will not start simply because the page loaded.

A scroll-triggered effect may not run until the block reaches the required viewport position.

A drag interaction begins only after the visitor moves the control.

Test the public frontend

Some KineticHub interactions are simplified or unavailable in the WordPress editor.

Always test the published or previewed frontend page.

Use this process:

  1. Save or update the page
  2. Open the frontend preview
  3. Reload the complete page
  4. Scroll from above the block
  5. Move the pointer over the block
  6. Click or drag where appropriate
  7. Test in a private browser window
  8. Test on a real mobile device when relevant

Do not evaluate the final motion only from the Gutenberg editor canvas.

Confirm that the block’s script loads

KineticHub blocks can use:

  • The shared KineticHub motion engine
  • Their own block-specific frontend script
  • Their own observers and event listeners
  • CSS animations
  • A combination of JavaScript and CSS

A block may remain visible when its script fails because the server-rendered HTML and CSS still load.

Use browser developer tools and open the Network panel.

Reload the page and confirm that the relevant KineticHub JavaScript files return successful responses.

Look for files under paths similar to:

/wp-content/plugins/kinetichub/build/

and:

/wp-content/plugins/kinetichub/build/blocks/

The KineticHub PRO directory may use a different generated folder name.

A script returning 404, 403, or 500 cannot initialize the effect.

Check the browser console

Open browser developer tools and inspect the Console.

Look for:

  • JavaScript errors
  • Failed KineticHub initialization
  • Missing variables
  • Undefined functions
  • Block-specific errors
  • WebGL or canvas errors
  • Content Security Policy errors
  • Errors from optimization tools
  • Errors from another plugin occurring before KineticHub runs

The first error in the console may cause several later errors.

Record the complete message, file name, and line number before changing settings.

An unrelated plugin can stop JavaScript execution before a KineticHub block initializes.

Check reduced motion

KineticHub supports the browser’s:

prefers-reduced-motion

preference.

When reduced motion is enabled at operating-system level, supported KineticHub effects may:

  • Stop animating
  • Use a static state
  • Use a simplified fade
  • Hide a decorative effect
  • Avoid pointer or continuous motion
  • Display the final content immediately

This is expected accessibility behavior, not necessarily an error.

Test reduced motion

Check whether reduced motion is enabled in the operating system.

The setting may be named:

  • Reduce Motion
  • Animation Effects
  • Show Animations
  • Visual Effects
  • Accessibility Motion

After changing the system setting:

  1. Close or reload the browser tab
  2. Reload the frontend page
  3. Test the block again

Some browsers detect the preference only after a reload.

Block-specific reduced-motion behavior

Different blocks can use different reduced-motion fallbacks.

For example:

  • A reveal animation may display the final content immediately
  • A marquee may remain static instead of scrolling
  • A scroll divider may use a static or fade fallback
  • A graphics-heavy Hero Mesh mode may hide its animated canvas
  • Pointer-following behavior may be disabled
  • Sticky content may remain readable without its transition effect

Do not assume that every block completely disappears or that every animation uses the same fallback.

The intended result is that important content remains usable while nonessential motion is reduced.

Check mobile motion

KineticHub has a global mobile motion setting.

Open:

KineticHub

Review the mobile motion option and save the settings.

When mobile motion is disabled, supported shared motion behavior may be reduced on touch or coarse-pointer devices.

This is separate from the operating system’s reduced-motion preference.

A mobile device may therefore use reduced behavior because:

  • Mobile Motion is disabled
  • Reduced Motion is enabled
  • The selected block uses its own mobile fallback
  • The layout activates a static mobile mode

Test the same page on desktop and mobile to determine whether the problem is device-specific.

Check block-specific mobile settings

Some blocks include their own mobile options.

These may control:

  • Sticky behavior
  • Static fallback
  • Motion intensity
  • Media placement
  • Touch interaction
  • Mobile visibility
  • Mobile layout
  • Mobile animation behavior

A block can be visible on mobile while intentionally using a static presentation.

Review the selected block’s Mobile, Responsive, Animation, or Interaction panels.

Do not assume the desktop effect must run identically on a touchscreen.

Scroll-triggered animation

A scroll-triggered animation normally starts when the block enters a defined area of the viewport.

When it does not start:

  1. Reload the page above the affected section
  2. Scroll toward the block normally
  3. Confirm that the block is not already inside the viewport at initial load
  4. Check for large sticky headers
  5. Review the block’s trigger or threshold setting when available
  6. Remove excessive Spacer blocks during testing
  7. Check whether a parent container changes its position
  8. Test while logged out

Opening the page directly at an anchor near the block may place it past the expected entrance point.

Reload from the top before concluding that the trigger is broken.

Intersection Observer

Several KineticHub blocks use the browser’s Intersection Observer API to detect when an element enters or leaves the viewport.

This allows animations to start, pause, or resume based on visibility.

Possible conflicts include:

  • The block is inside a hidden tab during initialization
  • A popup or accordion opens after the observer was created
  • A parent transform changes visual positioning
  • The element has zero dimensions
  • A third-party smooth-scroll system changes viewport calculations
  • JavaScript delay creates the observer too late
  • The block was inserted dynamically without successful reinitialization

Test the block on a normal visible page section before using it inside a tab, slider, popup, or accordion.

Viewport-aware pausing

Some continuously animated KineticHub effects pause when they leave the viewport.

For example, a moving effect may stop while the block is offscreen and resume when it returns near the visible area.

This is an intentional performance behavior.

When testing:

  1. Scroll until the block is clearly visible
  2. Wait briefly for initialization
  3. Confirm that the browser tab is active
  4. Check whether the effect was manually paused
  5. Move the pointer away and back when hover controls are enabled

Do not diagnose an offscreen paused animation as a failed initialization.

Browser tab visibility

Browsers reduce or pause animation work in inactive tabs.

KineticHub or the browser may also pause selected effects when:

  • The tab is hidden
  • The browser window is minimized
  • The device enters a power-saving state
  • The operating system throttles background activity

Return to the active tab and interact with the page before testing again.

Performance measured in a background tab is not representative of normal frontend behavior.

Continuous animations

Blocks such as Marquee or selected decorative effects may use continuous movement.

When continuous movement is not running, check:

  • Reduced motion
  • Manual pause state
  • Pause on hover
  • Touch-based pause behavior
  • Viewport visibility
  • Animation duration
  • Browser support
  • Optimization settings
  • Browser console errors

For a Marquee with Pause on Hover, move the pointer completely outside the block.

On a touch device, check whether a tap has toggled a paused state.

Hover effects

Hover behavior requires a mouse or compatible pointer.

It may not work identically on:

  • Phones
  • Tablets
  • Touchscreen laptops
  • Devices reporting a coarse pointer
  • Keyboard navigation
  • Screen readers

Test hover effects with a normal mouse on desktop.

When the effect works with a mouse but not on a phone, this may be expected touch behavior.

Essential information and primary actions should not depend only on hover.

Pointer-following effects

Pointer-driven effects require the pointer to move within or near the intended interaction area.

When the effect remains static, inspect:

  • A transparent overlay above the block
  • pointer-events
  • Parent overflow
  • Nested interactive elements
  • Pointer range or strength settings
  • Reduced motion
  • Mobile motion
  • Touch-device fallbacks
  • Browser console errors

Use developer tools to identify the element actually receiving pointer events.

A visible block can be covered by an invisible overlay from the theme or another block.

Drag interactions

Before/After and similar controls require pointer or touch dragging.

When dragging does not work:

  • Confirm that both required media files are present
  • Drag the actual handle or supported interaction area
  • Check whether normal page scrolling captures the touch gesture
  • Inspect overlays above the control
  • Check pointer-events
  • Test without custom CSS
  • Test outside the current parent container
  • Disable JavaScript delay
  • Check console errors

A styled comparison can remain visible even when its interaction script is unavailable.

Click and modal interactions

When a Video Modal trigger is visible but does nothing:

  • Confirm that the video URL is valid
  • Check whether the click reaches the trigger
  • Inspect overlays and pointer events
  • Confirm that the block-specific script loads
  • Check browser console errors
  • Test without JavaScript delay
  • Verify that a content-security rule does not block the video source
  • Test outside a transformed or clipped parent

Do not enable autoplay as a troubleshooting method.

The trigger should work from a normal visitor interaction.

Audio interaction

Browsers generally require a user action before beginning audio playback.

The Audio Player should not be expected to start automatically simply because the page loaded.

When the Play control does not respond:

  • Confirm that the audio URL loads directly
  • Confirm that the file format and codec are supported
  • Check that no overlay covers the control
  • Inspect the browser console
  • Inspect the Network response
  • Test without JavaScript delay
  • Test a different browser
  • Check CDN and cross-origin errors

A valid-looking player cannot play a missing or unsupported audio source.

Hero Mesh initialization

Hero Mesh requires a measurable container and its canvas or visual layer.

Its frontend engine can use:

  • A js-ready initialization state
  • Resize Observer
  • Intersection Observer
  • Canvas dimensions
  • Viewport-aware start and stop behavior
  • Reduced-motion handling

When the Hero Mesh content area appears but the visual mesh is missing, check:

  • The container has non-zero width and height
  • The canvas exists in the frontend HTML
  • The canvas dimensions are greater than zero
  • The selected mode is compatible with reduced motion
  • The block is inside or near the viewport
  • A parent does not hide or clip the canvas
  • WebGL is available for modes that require it
  • The browser console contains no graphics errors
  • The block was not initialized while hidden

Test the Hero Mesh as a top-level block inside a simple Group on a staging page.

Hidden tabs, accordions, and sliders

A visual block can initialize while its container is hidden.

At that moment, its measured dimensions may be:

  • 0 × 0
  • Extremely small
  • Different from the final visible size

This can affect:

  • Canvas
  • WebGL
  • Media dimensions
  • Sticky calculations
  • Scroll progress
  • Before/After geometry
  • Pointer coordinates

Test the block in a normal visible section.

When it works outside the hidden interface, the tab, accordion, popup, or slider must trigger a resize or reinitialization after becoming visible.

Compatibility depends on how the third-party container reveals its content.

Sticky and pinned effects

Sticky or pinned movement depends on the surrounding layout.

When content scrolls normally instead of sticking, inspect:

  • Parent overflow
  • Parent transforms
  • Section height
  • Sticky offset
  • Viewport height
  • Mobile settings
  • Whether sticky behavior is enabled
  • Whether the content is taller than the viewport
  • Whether another sticky section overlaps it

A sticky failure is normally a layout or parent-container issue rather than a missing entrance animation.

Test the same block outside its original parent.

Scroll progress effects

Scroll-driven progress requires a measurable travel distance.

An effect may appear static when:

  • The section is too short
  • The element starts past its trigger point
  • A parent has an unexpected height
  • Smooth-scroll software changes the scroll container
  • The page scroll occurs inside a nested container
  • The block is inside a transformed ancestor
  • The frontend script is delayed

Test with enough normal page content above and below the block.

Confirm that the browser window, rather than an unexpected inner container, is performing the scroll.

Check the animation settings

Select the block in Gutenberg and review its animation controls.

Depending on the block, check:

  • Animation type
  • Trigger
  • Speed
  • Duration
  • Delay
  • Stagger
  • Direction
  • Threshold
  • Intensity
  • Pause behavior
  • Sticky behavior
  • Mobile fallback
  • Reduced-motion behavior

Use a clearly visible test configuration.

For example:

  • Moderate speed
  • No long delay
  • Standard direction
  • Default threshold
  • Normal opacity
  • No custom transform

After confirming that the default configuration works, restore advanced settings one at a time.

Check animation duration and delay

An extremely slow animation may appear inactive.

A long delay may cause the visitor to leave the section before motion begins.

During testing:

  • Reduce the delay
  • Use a moderate speed
  • Use a short section
  • Remove additional stagger
  • Reload from above the block
  • Observe the complete animation cycle

Do not test a subtle effect at an unusually long duration and conclude that it is broken.

Check initial and final states

Some animations begin with:

  • Reduced opacity
  • A translated position
  • Blur
  • Scale
  • Clipping
  • A hidden mask

If JavaScript initializes the starting state but fails before applying the final state, the content may remain invisible or displaced.

Inspect the element’s computed styles for:

  • opacity
  • transform
  • filter
  • clip-path
  • visibility
  • Animation classes
  • CSS custom properties

A stuck initial state is a strong sign that initialization started but did not finish.

Check js-ready and active classes

Several KineticHub blocks add state classes after JavaScript finds and initializes them.

Examples can include classes such as:

  • js-ready
  • is-visible
  • is-animated
  • js-anim-active
  • Pause-state classes

These are implementation details and should not be modified manually.

During troubleshooting, they can help identify the stage reached:

  • No initialization class: the frontend script may not have run
  • Initialization class present but no active state: the trigger or observer may not have fired
  • Active state present but no visible motion: CSS, dimensions, reduced motion, or another override may be involved

Do not add these classes manually through the editor or custom JavaScript as a permanent repair.

Check global KineticHub settings

Open:

KineticHub

Review:

  • Performance Mode
  • Mobile Motion
  • Enabled blocks
  • Asset Optimization
  • Global motion settings

For diagnosis, begin with:

  • Performance Mode: Balanced
  • Mobile Motion: Enabled
  • Affected block: Enabled
  • Asset Optimization: Enabled

Save the settings, clear caches, and test again.

Global settings do not replace the individual block controls.

Performance mode

Eco mode can reduce the update frequency of KineticHub’s shared motion ticker.

This may make subtle or very slow interactions feel different, but it should not normally prevent a correctly configured block from existing.

For troubleshooting, use Balanced first.

Do not use Performance mode as a universal repair. In the current shared engine, Balanced and Performance both run without Eco’s reduced update-rate limit.

Clear caches

Old frontend assets can prevent a newly configured animation from starting.

Clear:

  • Browser cache
  • WordPress page cache
  • Generated JavaScript
  • Generated CSS
  • Object cache
  • Server cache
  • Hosting cache
  • CDN cache
  • Separate mobile cache

Then reload the page in a private browser window.

After updating KineticHub, always regenerate combined or optimized assets.

Disable JavaScript delay

JavaScript delay is one of the most common causes of animations starting only after the first click or scroll.

Temporarily disable settings such as:

  • Delay JavaScript
  • Delay all scripts until interaction
  • Guest Mode optimization
  • Delayed inline scripts
  • Aggressive script loading

Purge all generated assets and retest.

When the animation works after disabling delay, create a targeted exclusion for the relevant KineticHub frontend file.

Do not exclude every script on the website unless necessary.

Check JavaScript order

The shared KineticHub configuration is attached before the shared motion engine.

An optimizer that moves or combines scripts incorrectly may reverse this order.

Possible symptoms include:

  • Default values used unexpectedly
  • Shared motion not initializing
  • Mobile behavior differing from settings
  • Console errors involving missing configuration
  • Effects working only intermittently

Disable JavaScript combination and script reordering during testing.

Remove Unused CSS

An unused-CSS tool may remove classes used only after animation begins.

This can affect:

  • Final visible states
  • Hover states
  • Modal states
  • Active slider states
  • Animation classes
  • Mobile states
  • Pause indicators

Temporarily disable Remove Unused CSS, regenerate the styles, and test again.

When the effect returns, exclude the relevant KineticHub stylesheet or selector namespace.

Custom CSS conflicts

Custom CSS can stop an animation by overriding:

  • animation
  • transition
  • transform
  • opacity
  • filter
  • visibility
  • display
  • position
  • pointer-events
  • CSS variables used by the effect

Search for rules containing:

animation: none;
transition: none;
transform: none !important;
opacity: 1 !important;
pointer-events: none;

A rule intended for one demonstration block can affect the real KineticHub component when it reuses an internal class name.

Avoid internal class collisions

Custom HTML and mockups should not use the same internal class namespace as the real plugin.

For example, a custom Audio Player preview using .kh-ap-* classes can override the actual Kinetic Audio Player on the same page.

Use a unique namespace such as:

kh-audio-demo-*

or:

site-demo-*

Apply the same principle to every KineticHub block.

Parent transforms and overflow

A parent can interfere with animation even when the block itself is configured correctly.

Inspect ancestors for:

  • transform
  • perspective
  • filter
  • overflow: hidden
  • overflow: clip
  • Fixed heights
  • Flexbox shrinking
  • Grid constraints
  • Stacking contexts
  • Pointer-blocking overlays

Test the block inside a simple top-level Group with default settings.

When the simple version works, restore the original parent layers one at a time.

Smooth-scroll libraries

Themes or plugins may replace native page scrolling with a custom scroll container.

This can affect effects that measure:

  • window.scrollY
  • The viewport
  • Element bounding rectangles
  • Sticky position
  • Intersection Observer
  • Scroll progress

Temporarily disable the smooth-scroll feature on staging.

When the animation works with native scrolling, compatibility with the custom scroll system requires additional integration or a different page structure.

Dynamically loaded content

Blocks inserted through:

  • AJAX
  • Infinite scroll
  • Popups
  • Filters
  • Client-side navigation
  • Tabs
  • Page-transition systems

may be added after the initial page load.

Some KineticHub blocks include DOM observation or delayed reinitialization, but compatibility with every dynamic-loading system cannot be guaranteed.

Test the same block on a normal page load.

If it works there, the external system may need to trigger initialization after adding or revealing the content.

Test for plugin conflicts

Use staging whenever possible.

  1. Create a backup
  2. Confirm the issue
  3. Keep KineticHub active
  4. Disable optimization first
  5. Disable other animation or smooth-scroll plugins
  6. Test the page
  7. Reactivate plugins individually
  8. Test after each activation

Pay particular attention to plugins that modify:

  • Frontend scripts
  • Scrolling
  • Page transitions
  • CSS loading
  • JavaScript execution
  • Visibility
  • Popups
  • Gutenberg output

Test for a theme conflict

On staging, activate a default WordPress theme.

Create a simple page containing the affected block.

When the animation works with the default theme, inspect the original theme for:

  • Custom scrolling
  • Global transition rules
  • Disabled animations
  • Parent overflow
  • Pointer overlays
  • Script delay
  • Template wrappers
  • Editor/frontend differences

Do not change themes directly on a production website without a tested rollback plan.

Recommended troubleshooting sequence

Use this order:

  1. Confirm that the block is visible
  2. Identify the expected trigger
  3. Test the public frontend
  4. Reload from above the block
  5. Check reduced motion
  6. Check mobile motion and block-specific mobile settings
  7. Use default animation values
  8. Clear all caches
  9. Test in a private browser window
  10. Check Console and Network panels
  11. Disable JavaScript delay
  12. Disable JavaScript combination
  13. Disable Remove Unused CSS
  14. Test outside the current parent
  15. Check dimensions, overflow, transforms, and pointer events
  16. Test without custom CSS
  17. Test plugin conflicts on staging
  18. Test with a default theme
  19. Reinstall a clean official package only when assets are missing

Begin with the simplest causes before modifying the page structure.

Troubleshooting

The animation starts only after clicking the page

JavaScript delay until interaction is probably enabled.

Disable delay, purge generated scripts, and test again.

Then exclude the affected KineticHub script from delayed execution.

The animation works in the editor but not on the frontend

Check frontend JavaScript, optimization settings, browser errors, and theme CSS.

Editor scripts and frontend scripts are loaded separately.

The frontend works but the editor preview is static

This can be expected for interactions that require the real frontend viewport, scrolling, pointer events, media, or canvas rendering.

Continue with Editor Preview and Frontend Look Different.

The animation does not run on mobile

Check:

  • Global Mobile Motion
  • Reduced Motion
  • Block-specific mobile fallback
  • Touch compatibility
  • Mobile visibility
  • Separate mobile cache

Test on a real device.

The animation does not run on desktop

Check desktop visibility, pointer requirements, browser errors, and custom desktop CSS.

Also test at a different browser width.

Marquee remains still

Check reduced motion, hover pause, touch pause, viewport visibility, duration, and frontend script loading.

Move the pointer outside the marquee and reload the page.

Scroll Divider appears immediately without drawing

Reduced motion, static mobile behavior, or an environment without Intersection Observer may intentionally reveal it without animation.

Check the selected fallback and test on desktop with reduced motion disabled.

Hero Mesh content appears but the canvas is blank

Check container dimensions, canvas presence, reduced motion, WebGL availability, parent clipping, and console errors.

Test the block as a top-level section.

Split Scroll content is visible but does not pin or swap

Check section height, parent overflow, parent transforms, sticky settings, mobile layout, media items, and frontend script loading.

Test outside complex parent containers.

Magnetic or pointer movement remains static

Check whether the pointer enters the interaction range, whether reduced or mobile motion is active, and whether an overlay receives the pointer events.

Test using a mouse on desktop.

The effect starts once but does not repeat

The selected animation may be designed as a one-time entrance effect.

Check whether the block provides a replay, continuous, hover, or reverse option.

Do not assume every reveal animation loops.

The effect is running but is difficult to notice

Use a shorter duration, stronger but reasonable intensity, a clear direction, and no long delay during testing.

Also confirm that the starting and final colors or positions are visibly different.

Animation classes are present but nothing moves

Inspect custom CSS, reduced-motion rules, removed keyframes, dimensions, and computed transforms.

The JavaScript may have initialized while the required CSS was removed or overridden.

Information to collect for support

Before contacting KineticHub support, collect:

  • KineticHub version
  • Free or PRO edition
  • Affected block
  • Selected animation or interaction
  • Expected trigger
  • Page URL
  • Desktop or mobile context
  • Reduced-motion status
  • Mobile Motion setting
  • Active theme
  • Cache and optimization plugins
  • Console errors
  • Failed Network requests
  • Whether the relevant script loads
  • Whether the block has initialization classes
  • Whether it works outside the parent container
  • Whether it works with optimization disabled
  • Whether it works with a default theme on staging
  • A short screen recording showing the problem

Do not include passwords, private access details, payment information, or complete license keys.

Next step

Continue with Editor Preview and Frontend Look Different when the block works in one environment but appears different, static, incomplete, or incorrectly sized in the other.

Was this article helpful?

Still need help?

Use the WordPress.org support forum for the Free plugin, or contact KineticHub support for PRO features, licensing, and account questions.