Skip to content

tagged May 23, 2018 · 7 commits to master since this tag

- NEW: ES modules! The NPM version uses ES module imports/exports by default and puts the older UMD files into a "umd" subdirectory. There is also a new "gsap/all" module in which ALL of the public classes are imported/exported (excluding the bonus plugins), making it easier to grab whatever you need from one place and allow tree shaking in tools like Webpack to eliminate non-referenced code. Just be careful - you may need to reference plugins like CSSPlugin somewhere in your code to ensure that they don't get dropped in that process. See the new guide to using GSAP via NPM at

- NEW: RoundPropsPlugin has a new trick: use an object to specify rounding increments, like roundProps:{x:0.1, y:5} would make "x" round to the nearest tenth and "y" round to the nearest multiple of 5.

- NEW: ModifiersPlugin function calls are now scoped to the tween itself to make it easier to grab data like "ratio", target, etc. In other words, "this" refers to the tween inside modifier functions.

- NEW: SplitText recognizes a new specialChars vars property that allows you to specify an array of special characters to protect. This is typically used for multi-character symbols like in some languages where there are certain pairs (or sometimes even 4 characters) combined to form a single character. See for a demo (original forums topic:

- IMPROVED: if you have a "scale" modifier (ModifiersPlugin), it'll be copied to "scaleX" and "scaleY" (since scale is just a shortcut for a combination of scaleX and scaleY). Similarly, "rotationZ" is replaced with "rotation".

- IMPROVED: explicitly set {passive:false} on addEventListener() in Draggable to avoid console warnings in the new Chrome.

- IMPROVED: if you call GSDevTools.create() after the globalRecordingTime has elapsed and you define an "animation", the default globalSync is now false (to avoid situations where the animation couldn't be controled because globalSync was enabled but the animation was created AFTER recordings completed, thus didn't exist in the global/recorded timeline).

- IMPROVED: fromTo() and from() calls that are created via a TimelineLite/Max and have a null target could throw an error on every tick, but now that's limited to just one. (Hint: never try tweening a null target anyway).

- FIXED: A regression in 1.20.4 caused Draggable to pass a null value to addEventListener() or removeEventListener() in certain (pretty rare) situations. That's resolved now.

- FIXED: older versions of Microsoft IE misreported getClientBoundingRect() on the <body> in certain cases which ScrollToPlugin now works around.

- FIXED: worked around a Microsoft Edge browser rendering issue that could cause DrawSVGPlugin (line animating) not to look correct until the browser is resized.

- FIXED: Draggable of type "scrollLeft" or "scrollTop" or "scroll" could sometimes behave incorrectly when the content is wider than the container, and only during a specific portion (where the padding area is overlapping the right portion of the scrolling area)

- FIXED: you can set() backgroundSize to "cover" or "contain" now (though not animate it). If you need to animate it, see

- FIXED: when allowContextMenu:true and dragClickables:true are set on a Draggable, when the user clicked on a link (<a>) in some browsers it would still open the link. Not anymore.

- FIXED: %-based translations that are set directly like {transform:"translateX(50%)"} (instead of via xPercent/yPercent) failed previously.

- FIXED: if an SVG was nested inside multiple elements that have rotational transforms, Draggable could get disoriented (transforms weren't applied properly)

- FIXED: paused animations that were re-nested into a different parent timeline may resume() at the improper progress value (this also could affect GSDevTools when resuming an initially-paused animation).

- FIXED: in some build environments, GSAP was loaded before the "document" was even declared, causing problems. There's now some code in place that will help work around those errors. But the new ES modules already resolve much of that anyway.
Assets 2
You can’t perform that action at this time.