Timelines are GSAP's reason to enter your application
GSAP's timelines let you change a sequence without scattering timing decisions across separate animations. A product image can move, a caption follow, and a control reverse the sequence. The library animates JavaScript values, including CSS properties and SVG attributes, and its README lists canvas and WebGL uses too. Choose it when several movements share a schedule that you expect to edit or control.
Our checkout was 2.1 MB with 104 files and about 54,478 lines of source. You supply the design and connect the animation library to application state. For a button that only changes opacity on hover, I'd start with CSS. For a coordinated sequence with a draggable or scroll-driven component, GSAP has a clearer job to do.
What happened when we ran it
Our run installed GSAP commit 13e2b79 in 2 seconds, added 0 packages, and used 9 MB on disk. We cloned it on October 10, 2026, in a fresh Debian container with 3 CPUs and 8 GB of RAM, using lab-node:22. The unprivileged sandbox contained no secrets. Installation completed successfully.
Build and tests were skipped because the checkout exposed no build script or target and no test script or target. Our scan found 0 CI workflow files, no Dockerfile, and no tests directory. Those findings limit the evidence available from this run: there is no successful build or test result to quote. They also make this a weaker choice for someone who requires a runnable upstream suite before changing library internals.
Npm audit reported 0 known vulnerabilities. The 9 MB installed footprint is a disk measurement, not the amount a visitor downloads or a browser performance result. Nothing in these results establishes animation smoothness on your phone, scroll behavior inside your router, or cleanup after navigation. The README's performance claims need their own workload to evaluate. The sandbox establishes a successful install without extra packages.
Import plugins explicitly and keep browser work in the browser
The GSAP README shows imports for ScrollTrigger, Flip, and Draggable, followed by plugin registration. It also documents ES modules and UMD files under dist/. You don't need a hosted animation service, API token, or database to use those paths. The integration work sits in your front end: finding the intended elements and deciding when animation begins, stops, or reverses.
The 0-package install is appealing, but it doesn't remove component-lifecycle work. The README points React users to a separate @gsap/react package and its useGSAP() hook for cleanup. Our measurement covers this GSAP checkout, not that additional integration. Keep DOM-dependent animation where elements exist, and decide who owns teardown when a component disappears. Otherwise a short example can turn into persistent behavior that the rest of your app struggles to explain.
Reduced motion needs an explicit branch
The matchMedia guide documents viewport queries and prefers-reduced-motion conditions. Its examples choose different animation behavior when those conditions match. This gives you a place to make a smaller-screen composition and a reduced-motion path, rather than shrinking the desktop sequence and hoping it remains usable. The author still supplies those decisions, including what content should remain visible when motion is removed.
A 2-second install cannot assess that behavior. I would try a representative screen with motion reduction enabled and after repeated route changes, then inspect whether the content and controls remain available. The same guide explains how to collect animations created by later callbacks and how to remove your own event listeners. That matters once the interface outlives its demonstration.
Open scroll and listener reports concern navigation-heavy sites
Issue 655 reports ScrollTrigger restoring a stale scroll position during refresh after a particular scroll-event sequence. The report names GSAP 3.15.0 and describes a Next.js App Router navigation case. It explains the cached scroll values. This is a specific reason to examine refresh behavior if your application changes pages without a full reload, rather than treating every scroll demonstration as evidence for your route lifecycle.
Issue 654 reports media-query listeners remaining after repeated matchMedia() creation and teardown. Both reports were open when inspected, and neither is a failure from our sandbox. The lab found 0 CI workflow files and no test target, so it supplies no independent check of either report. Teams unable to investigate navigation or listener cleanup should be cautious about making GSAP responsible for a large, persistent application's motion.
Free commercial use comes with a custom license
GSAP uses a standard no-charge license rather than MIT or Apache-2.0. The published terms allow commercial use and restrict certain visual animation builders that compete with Webflow, requiring prior written consent for prohibited uses. That makes it a poor default for a competing animation-editor product. A source-visible repository and a free download do not give such a product the same permission as an ordinary website.
The last GitHub push was April 13, 2026. GitHub returned 29,007 stars and 7 open issues and PRs, while the latest-release endpoint returned no release. October and September issue activity shows the tracker still receives concrete reports, and the README directs support to GSAP's forums as well. These facts warrant checking responses to relevant problems. A missing GitHub release entry alone is insufficient evidence that the library has been abandoned.
Motion and Anime.js are credible alternative starting points
Motion is worth considering when React component animation is your main requirement. Anime.js is another JavaScript animation engine to compare for a framework-independent interface. Both repositories use MIT licensing. Neither comparison can be settled by our 9 MB disk result, which describes GSAP alone. Start with the animation and lifecycle you actually need, then compare how each library expresses it.
I'd choose GSAP for a sequence that benefits from timelines and its specialist plugins. Before adopting it for a navigation-heavy site, put route changes and teardown into the trial. Before embedding it in a visual animation builder, read the license against that product's purpose. The decisive demonstration is the interaction you intend to maintain, including the moment the user leaves it.

