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
- Register the plugin that owns the property: gsap.registerPlugin(ScrollToPlugin, ...)
- Check property spelling against the plugin's docs
- Import and register the plugin module in the same bundle where the tween runs
- 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
- Map each animated property to its owning plugin and register it
- Double-check property spelling when the warning appears
- Keep plugin imports and tweens in the same bundle
- Use gsap.core.globals() to verify which plugins are registered
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
- Please gsap.registerPlugin(CSSPlugin, CSSRulePlugin)
- Please gsap.registerPlugin(CustomEase, CustomBounce)
- Please gsap.registerPlugin(CustomEase)
- Please gsap.registerPlugin(CustomEase, CustomWiggle)
- Please gsap.registerPlugin(Draggable)
AI-assisted analysis of greensock/GSAP@13e2b79054 (2026-08-29).
Data as JSON: /api/errors/520344487d80b87e.
Report an issue: GitHub.