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

  1. Call InertiaPlugin.track(target) before creating the inertia tween
  2. Register the plugin: gsap.registerPlugin(InertiaPlugin) (or Draggable with inertia:true)
  3. Pass explicit velocity/end values instead of "auto"
  4. 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

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


AI-assisted analysis of greensock/GSAP@13e2b79054 (2026-08-29). Data as JSON: /api/errors/70c2e7d868b61268. Report an issue: GitHub.