V4 covers DOM, SVG, scroll, and JavaScript values
Anime.js v4.5.0 is much broader than the small animate() example in its README. It can change CSS properties, transforms, variables, HTML and SVG attributes, or fields on ordinary JavaScript objects. Timelines sequence those changes; scroll observers and draggable controls connect them to input. Separate helpers handle SVG paths, text splitting, layout transitions, springs, staggered values, and Three.js targets.
That breadth is useful when a page mixes interface motion with illustration. One timeline can coordinate a DOM panel and an SVG drawing, while a scope can tie selectors and cleanup to one component root. The library stays independent of React or any other UI framework. React users get an official usage page, but Anime.js does not make the component model part of its core API.
The WAAPI path is 3 KB; the JavaScript path is 10 KB
Anime.js documents two execution choices. Its Web Animations API entry point is listed at 3 KB gzip and is the preferred route when initial load weight matters or animation must continue during CPU and network load. The JavaScript engine is listed at 10 KB and is recommended for JavaScript, canvas, WebGL, WebGPU, or more than 500 targets. Those are library guidelines, not performance results from our lab.
The package exports focused entry points for timers, animation, timelines, draggable controls, scopes, easings, SVG, text, WAAPI, and adapters. That lets an application import the surface it uses instead of treating every feature as one global object. V4.5.0 adds an adapter mechanism and a Three.js adapter, plus seeded jitter and 3D grid support for staggered values.
What happened when we ran it
Our sandbox cloned commit 01b81be and installed 236 npm packages in 11 seconds. The dependency tree occupied 130 MB, while the checkout held 297 files, about 42,135 lines of source, and 7 MB. The build completed successfully in 16 seconds. Npm audit reported 0 critical, high, moderate, or low known vulnerabilities.
Tests were skipped because our harness found no default tests script or target. The README and package file do list test:browser and test:node, so this is an integration gap rather than proof that the project has no tests. A tests directory exists, but a standard npm test contract was absent at the measured commit. Our scan also found 0 GitHub Actions workflow files.
A clean build is still meaningful: v4 ships ES module and CommonJS paths, generated type declarations, and several focused exports. Yet the missing default test target means downstream maintainers cannot assume their normal Node package check exercises anything. Add explicit browser and Node commands to your own CI instead of treating the successful 16-second build as a substitute.
V3 code needs a deliberate migration
The v3 migration guide changes enough behavior to deserve its own branch and visual regression pass. The global anime import becomes named functions, and animation targets move into the first argument. easing becomes ease; callbacks gain an on prefix. A loop: 1 value now means one repeat and two total iterations, where v3 treated it as one iteration.
Playback semantics also move. play() always runs forward, reverse() always runs backward, and resume() continues the previous direction. SVG path and dash helpers moved under the SVG module. These are understandable V4 choices, but they touch timing and completion behavior that users can see. A compile-successful conversion can still replay a sequence twice or fire code at a different moment.
Reduced motion and split-text access need product decisions
The scope API accepts media queries, and the official example maps prefers-reduced-motion to a 0-duration animation. Split text creates an accessible clone by default from version 4.1.0. Those are good building blocks. They do not decide whether a drag interaction, scroll reveal, or looping timeline remains usable when its motion is removed.
Build that policy alongside the effect. Test keyboard order after text splitting, verify the accessible clone preserves what a screen reader should announce, and define a static end state for each decorative sequence. Reduced motion should still expose content and controls. Anime.js supplies the switch through mediaQueries; your interface supplies the correct alternate state.
One open scroll bug argues for real browser coverage
Open issue 1189 reports that onScroll did not respond when a child sat inside a 100vh overflow parent with a viewport container. The report is one CodePen case, not a general verdict on the scroll observer. It is enough to justify testing the exact nested containers, resize behavior, and mobile browsers used by your product before shipping scroll-bound navigation or content.
GitHub listed 72,896 stars and 118 combined issues and pull requests. The last push was August 21, 2026, while issue and pull-request updates continued into September. Release v4.5.0 arrived June 22 with adapter work and many fixes for seeking, keyframes, timeline overlap, scroll resizing, and frame scheduling. That pattern looks maintained, though the open queue is substantial.
Anime.js earns its place when motion is a system rather than one hover effect. The 11-second install, clean 16-second build, focused imports, and strong documentation make v4 easy to trial. Its missing default test command is the practical catch. Wire both provided test modes into CI, preserve reduced-motion outcomes, and browser-test every scroll container you depend on.

