greensock/GSAP · warning

Invalid property ${property} set to ${value} Missing plugin?

Error message

Invalid property ${property} set to ${value} Missing plugin? gsap.registerPlugin()

What it means

_missingPlugin is gsap core's warning when a tween targets a property no registered plugin or default transform handling supports, e.g., gsap.to(el, {drawSVG: ...}) without DrawSVGPlugin. GSAP cannot find a plugin for that property so it warns and skips it.

Source

Thrown at src/gsap-core.js:56

	_windowExists = () => typeof(window) !== "undefined",
	_isFuncOrString = value => _isFunction(value) || _isString(value),
	_isTypedArray = (typeof ArrayBuffer === "function" && ArrayBuffer.isView) || function() {}, // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().
	_isArray = Array.isArray,
	_randomExp = /random\([^)]+\)/g,
	_commaDelimExp = /,\s*/g,
	_strictNumExp = /(?:-?\.?\d|\.)+/gi, //only numbers (including negatives and decimals) but NOT relative values.
	_numExp = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g, //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.
	_numWithUnitExp = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g,
	_complexStringNumExp = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi, //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.
	_relExp = /[+-]=-?[.\d]+/,
	_delimitedValueExp = /[^,'"\[\]\s]+/gi, // previously /[#\-+.]*\b[a-z\d\-=+%.]+/gi but didn't catch special characters.
	_unitExp = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i,
	_globalTimeline, _win, _coreInitted, _doc,
	_globals = {},
	_installScope = {},
	_coreReady,
	_install = scope => (_installScope = _merge(scope, _globals)) && gsap,
	_missingPlugin = (property, value) => console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()"),
	_warn = (message, suppress) => !suppress && console.warn(message),
	_addGlobal = (name, obj) => (name && (_globals[name] = obj) && (_installScope && (_installScope[name] = obj))) || _globals,
	_emptyFunc = () => 0,
	_startAtRevertConfig = {suppressEvents: true, isStart: true, kill: false},
	_revertConfigNoKill = {suppressEvents: true, kill: false},
	_revertConfig = {suppressEvents: true},
	_reservedProps = {},
	_lazyTweens = [],
	_lazyLookup = {},
	_lastRenderedFrame,
	_plugins = {},
	_effects = {},
	_nextGCFrame = 30,
	_harnessPlugins = [],
	_callbackNames = "",
	_harness = targets => {
		let target = targets[0],
			harnessPlugin, i;

View on GitHub (pinned to 13e2b79054)

Solutions

  1. Register the plugin that owns the property: gsap.registerPlugin(ScrollToPlugin, ...)
  2. Check property spelling against the plugin's docs
  3. Import and register the plugin module in the same bundle where the tween runs
  4. If the property is a plain attribute/CSS value, verify CSSPlugin can handle it or use attr: { }

Example fix

// before
gsap.to('#path', { drawSVG: '50%' }); // DrawSVGPlugin not registered
// after
import { gsap } from 'gsap';
import { DrawSVGPlugin } from 'gsap/DrawSVGPlugin';
gsap.registerPlugin(DrawSVGPlugin);
gsap.to('#path', { drawSVG: '50%' });
Defensive patterns

Strategy: validation

Validate before calling

import { gsap } from 'gsap';
import { ScrollToPlugin } from 'gsap/ScrollToPlugin';
// register every plugin whose properties you animate
gsap.registerPlugin(ScrollToPlugin);
gsap.to(window, { scrollTo: 500 });

Prevention

When it happens

Trigger: gsap.to(target, {somePluginProp: value}) where the property is not a CSS property, attribute, or transform, and the corresponding plugin (MorphSVG, DrawSVG, TextPlugin, ScrollToPlugin, etc.) was never registered; also misspelled property names.

Common situations: Using premium plugins without registration, typos like 'scollTo' instead of 'scrollTo', animating properties from a plugin loaded on another page, or expecting CSSPlugin to handle SVG-specific properties.

Related errors


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