← All reportsPublic report

juliangarnier/anime

JavaScript animation engine

72k stars JavaScript View on GitHubprofiled 11d ago
Try GitZoid
1PRs this week
1Contributors
229Deps scanned
11Issues found
01 · Repo overview

How anime is put together

Anime.js is a zero-dependency JavaScript animation engine (v4) written as ES modules under src/, animating CSS properties, SVG, DOM attributes, JS objects, and optionally Three.js objects via an adapter layer. The codebase is organized into feature modules (timer, animation, timeline, animatable, draggable, scope, events, engine, easings, layout, utils, svg, text, waapi, adapters), each exposing an index.js barrel that is re-exported from src/index.js and mirrored by per-module entries in package.json exports. Rollup bundles the sources into ESM/CJS module trees plus ESM/UMD (minified and unminified) single-file bundles in dist/, while TypeScript (tsconfig.types.json) generates type declarations from JSDoc annotations. There is no backend, datastore, or server component; tests run via Mocha/Chai against a browser-sync local server or Node.

Languages

JavaScriptTypeScript (type declarations only)

Infrastructure

Node.js runtime for build/test toolingbrowser-sync local dev/test servernpm package published to npm/jsDelivr/unpkg CDNs

Major components

core

Engine internals shared across features: clock tick loop, color/unit parsing, value interpolation, target resolution, style/transform application, rendering, and global settings.

timer

Time-based primitive driving all animations with play/pause/seek controls.

animation / timeline / composition

Implements individual property animations, sequenced timelines with position parameters, and additive/composition blending of overlapping animations.

animatable & draggable

Animatable provides gettable/settable animated values on targets; draggable adds pointer-driven dragging behavior.

easings

Easing functions including linear, steps, cubic-bezier parser, spring physics, irregular eases, and a string-based ease parser.

svg & text

SVG-specific animation helpers (drawable strokes, morphTo path morphing, motionPath) and text utilities (splitText, scramble).

waapi

Adapter that maps animations onto the browser's Web Animations API with its own composition handling.

adapters (incl. three)

Pluggable renderer registry (registerAdapter) plus a Three.js adapter translating animations into Object3D transforms and shader uniforms.

02 · Weekly changes

A quiet week with just one small update to the project's README documentation.

1 weeksWeek of 2026-08-03

This week saw only light housekeeping on the anime.js repository, with a single documentation update. No new features, fixes, or code changes were shipped, so the project's behavior remains unchanged for users.

Docs

README refresh

The project's main README file was updated, likely to clarify or correct information shown to visitors on the repository's front page.

03 · Security check

Dependencies and code review

229 dependencies scanned

Dependency advisories

Security Watch

11 vulnerable packages (19 advisories) across 229 scanned dependencies.

warninghigh · npmfixed in 5.0.7

brace-expansion 2.0.2

3 advisories. Fixed in 5.0.7.

How it can be abusedThis package is only pulled in indirectly by developer tools (like test runners or bundlers) that match file paths with glob patterns. An attacker who can get a crafted file path or pattern into your build or test step could make those tools hang or crash from memory exhaustion, but the published anime.js library itself never runs this code, so end users of the library are not affected.

  • highGHSA-3jxr-9vmj-r5cpbrace-expansion: DoS via exponential-time expansion of consecutive non-expanding {} groups
  • highGHSA-mh99-v99m-4gvgbrace-expansion: DoS via unbounded expansion length causing an out-of-memory process crash
  • highGHSA-rgw5-rvv9-x895brace-expansion: DoS via unbounded intermediate arrays, bypassing the CVE-2026-14257 mitigation
warninghigh · npmfixed in 6.6.7

engine.io 6.6.4

1 advisory. Fixed in 6.6.7.

How it can be abusedAn attacker could flood the long-polling HTTP transport of an Engine.IO server with many open connections, exhausting memory or sockets and knocking the server offline. Only projects that actually run a Socket.IO/Engine.IO server are affected, which this browser-side animation library does not.

warninghigh · npmfixed in 4.3.9

immutable 3.8.2

3 advisories. Fixed in 4.3.9.

How it can be abusedImmutable.js is not part of Anime.js's shipped code, which is explicitly zero-dependency, so an attacker cannot reach these flaws through the library itself. At most it could appear in developer tooling or tests, where crashes or slowdowns would only affect developers locally, not end users.

warninghigh · npmfixed in 3.15.0

js-yaml 4.1.0

2 advisories. Fixed in 3.15.0.

How it can be abusedAn attacker who can feed a malicious YAML file into the build or test pipeline could craft deeply chained merge keys or ordered-map tags that make the YAML parser burn huge amounts of CPU, freezing or slowing the machine running it. Only developers or CI systems parsing untrusted YAML with this package are affected; end users of the animation library are not.

  • highGHSA-52cp-r559-cp3mjs-yaml: YAML merge-key chains can force quadratic CPU consumption
  • highGHSA-5p4m-2wfm-xmqjJS-YAML: Quadratic CPU consumption in !!omap resolution (3.x and 4.x) — CVE-2026-59870 fix not backported
warninghigh · npmfixed in 4.18.0

lodash 4.17.21

1 advisory. Fixed in 4.18.0.

How it can be abusedThe flaw lives in lodash's template function, which can run arbitrary code if an attacker controls the text fed into it, so only projects that both depend on lodash and pass untrusted input into templates are exposed. Anime.js is a zero-dependency animation library and does not use lodash at all, so its users are not affected.

warninghigh · npmfixed in 10.2.3

minimatch 5.1.6

3 advisories. Fixed in 10.2.3.

How it can be abusedAn attacker would need to get a maliciously crafted file path or pattern into the build or test process, where minimatch's pattern matching could hang the CPU for minutes or hours, freezing builds or CI. Since Anime.js ships to browsers and never uses minimatch at runtime, only developers and CI pipelines are affected, not end users.

  • highGHSA-23c5-xmqv-rm74minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions
  • highGHSA-3ppc-4f35-3m26minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern
  • highGHSA-7r86-cg39-jmmjminimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments
warninghigh · npmfixed in 4.0.4

picomatch 2.3.1

1 advisory. Fixed in 4.0.4.

How it can be abusedAn attacker could send a specially crafted file name or path pattern that makes the matching library hang the CPU for a long time. In this project picomatch is only used by development and build tools like bundlers and test runners, so it could slow down or freeze a developer's machine during a build or install, but end users of anime.js are not affected.

warninghigh · npmfixed in 2.80.0

rollup 4.46.2

1 advisory. Fixed in 2.80.0.

How it can be abusedAn attacker who can get malicious code or a plugin into your build process could trick Rollup into writing files outside the project folder, such as overwriting config files or injecting scripts that run later. This mainly affects developers running builds on untrusted code; since this repo only bundles its own trusted source files, everyday users of the published animation library are not directly exposed.

warninghigh · npmfixed in 7.0.3

serialize-javascript 6.0.2

1 advisory. Fixed in 7.0.3.

How it can be abusedThe vulnerable library turns JavaScript values into text that can be safely turned back into code later, and the flaw lets crafted Date or RegExp objects smuggle in code that then runs when deserialized. Anime.js has no dependencies and does not use serialize-javascript, so no attacker path exists here; only projects that actually serialize untrusted data with it are affected.

  • highGHSA-5c6j-r48x-rmvqSerialize JavaScript is Vulnerable to RCE via RegExp.flags and Date.prototype.toISOString()
warninghigh · npmfixed in 4.2.7

socket.io-parser 4.2.4

2 advisories. Fixed in 4.2.7.

How it can be abusedAn attacker could crash any server using Socket.IO by sending packets with huge numbers of binary attachments, which the parser loads into memory all at once until the server runs out. This project does not use socket.io-parser anywhere, so no one deploying Anime.js is affected.

warninghigh · npmfixed in 5.2.5

ws 8.17.1

1 advisory. Fixed in 5.2.5.

How it can be abusedAn attacker who can connect to a WebSocket server using this vulnerable version can send many tiny message fragments that the server keeps in memory, slowly eating RAM until it crashes. In this repo ws is only pulled in by development tools like the test server and live-reload browser server, so real users of the animation library are not affected; at most a developer running tests locally could crash their own machine.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required