greensock/GSAP · warning
No inertia tracking on ${target}. InertiaPlugin.track(target
Error message
No inertia tracking on ${target}. InertiaPlugin.track(target) first. What it means
InertiaPlugin's "auto" vars mode reads previously recorded velocity data via InertiaPlugin.track(). If the target was never tracked, init cannot compute inertia values and warns you to call InertiaPlugin.track(target) first, then returns without applying inertia.
Source
Thrown at src/InertiaPlugin.js:242
_coreInitted = 1;
}
};
export const InertiaPlugin = {
version: "3.15.0",
name: "inertia",
register(core) {
gsap = core;
_initCore();
},
init(target, vars, tween, index, targets) {
_coreInitted || _initCore();
let tracker = _getTracker(target);
if (vars === "auto") {
if (!tracker) {
console.warn("No inertia tracking on " + target + ". InertiaPlugin.track(target) first.");
return;
}
vars = tracker.getAll();
}
this.styles = _getStyleSaver && typeof(target.style) === "object" && _getStyleSaver(target);
this.target = target;
this.tween = tween;
_processingVars = vars; // gets swapped inside _calculateTweenDuration() if there's a function-based value encountered (to avoid double-calling it)
let cache = target._gsap,
getVal = cache.get,
dur = vars.duration,
durIsObj = _isObject(dur),
preventOvershoot = vars.preventOvershoot || (durIsObj && dur.overshoot === 0),
resistance = _getNumOrDefault(vars, "resistance", _config.resistance),
duration = _isNumber(dur) ? dur : _calculateTweenDuration(target, vars, (durIsObj && dur.max) || 10, (durIsObj && dur.min) || 0.2, (durIsObj && "overshoot" in dur) ? +dur.overshoot : preventOvershoot ? 0 : 1, true),
p, curProp, curVal, unit, velocity, change1, end, change2, linkedProps;
vars = _processingVars;
_processingVars = 0;View on GitHub (pinned to 13e2b79054)
Solutions
- Call InertiaPlugin.track(target) before creating the inertia tween
- Register the plugin: gsap.registerPlugin(InertiaPlugin) (or Draggable with inertia:true)
- Pass explicit velocity/end values instead of "auto"
- Verify the tracked object identity matches the tween target
Example fix
// before
gsap.to(box, { inertia: "auto" }); // never tracked
// after
InertiaPlugin.track(box);
gsap.to(box, { inertia: "auto" }); Defensive patterns
Strategy: validation
Validate before calling
if (inertiaVars === 'auto') { InertiaPlugin.track(target); } Type guard
const isTracked = (target) => { try { InertiaPlugin.track(target); return true; } catch { return false; } }; Prevention
- Call InertiaPlugin.track(target) immediately after creating Draggables
- Verify the tracked object is the exact same reference used in the tween
- Prefer explicit velocity values when tracking lifecycle is unclear
When it happens
Trigger: Using inertia:{...} or throwProps with vars set to "auto" on a target that was never passed to InertiaPlugin.track(target); tracking a different element than the tween's target.
Common situations: Draggable demos relying on auto inertia without track(); refactored code where the tracked target reference changed (e.g. querySelectorAll order mismatch); forgetting that "auto" requires prior tracking.
Related errors
- ERROR: No velocity was defined for ${target} property: ${p}
- GSDevTools error: invalid animation.
- Please gsap.registerPlugin(CSSPlugin, CSSRulePlugin)
- Please gsap.registerPlugin(CustomEase, CustomBounce)
- Please gsap.registerPlugin(CustomEase)
AI-assisted analysis of greensock/GSAP@13e2b79054 (2026-08-29).
Data as JSON: /api/errors/70c2e7d868b61268.
Report an issue: GitHub.