juliangarnier/anime
54.5
Adequate · 25 September 2026
16k
lines of production code
JavaScript
primary language
3
measurements over time
What this system is
This system is a modular JavaScript animation library that provides a comprehensive engine for managing DOM, SVG, and custom object animations. It supports complex sequencing through timelines, additive value accumulation, and interactive drag-and-drop interactions. The library also includes specialized modules for text effects, layout transitions, and extensibility via adapters for WebGL integrations like Three.js.
Features
Anime.js v4.5.0 engine, scope, and text modules
The engine module now uses \requestAnimationFrame\ in browsers and \setImmediate\ in Node.js, with automatic pausing on document visibility changes. The scope module introduces a new \Scope\ class for managing animation contexts, defaults, and media queries, along with \createScope\ for instantiation. The text module adds \TextSplitter\ for splitting text into lines, words, and characters, and \scrambleText\ for animating text with scramble effects.
dist/modules/engine, dist/modules/scope, dist/modules/text · high confidence
Anime.js v4.5.0 release with Draggable and Layout modules
The library has been updated to version 4.5.0, introducing the new Draggable and Layout modules. The Draggable module provides a class for handling mouse and touch drag interactions, including features like container constraints, snapping, and spring-based release animations. The Layout module introduces an AutoLayout class that automatically animates DOM element transitions (entering, leaving, swapping) within a container, handling state changes and layout measurements to create smooth layout animations.
dist/modules/draggable · high confidence
Anime.js v4.5.0 release with additive animation support and timeline positioning improvements
This update introduces Anime.js v4.5.0, adding a new additive animation system that allows multiple tweens to accumulate their values on the same target properties rather than replacing them, alongside refined timeline child positioning logic that better handles relative offsets and staggered sequences.
dist/modules/animation, dist/modules/timeline, dist/modules/waapi · high confidence
Anime.js v4.5.0 release with core engine and animation modules
This release introduces Anime.js v4.5.0, delivering a complete rewrite of the core animation engine. The update adds a new \Animatable\ class and \createAnimatable\ factory to manage complex animation targets and properties, alongside a refactored \Clock\ class that improves frame-rate control and tick tolerance to prevent dropped frames. It also includes a robust \colors\ module for converting RGB, HSL, and HEX strings to RGBA arrays, and updates the core constants and globals to support these new capabilities.
(repo-wide) · high confidence
Core engine and animation primitives introduced
The \src/core\ module now provides the foundational engine for the library, introducing a \Clock\ class to manage frame rates and playback speed, a \render\ function to handle animation ticks and state transitions, and utilities for parsing targets, sanitizing styles, and reverting values. It also includes a new \colors\ module to convert RGB, HEX, and HSL strings to RGBA arrays, a \transforms\ module to parse and build CSS transform strings, and a \units\ module to handle value unit conversions. Additionally, the \src/easings\ module has been added to support cubic-bezier, irregular, spring, and standard easing functions.
src/core · high confidence
Introduction of Animatable and Timeline modules
This change introduces new \Animatable\ and \Timeline\ classes within the \src/animatable\ and \src/timeline\ directories, providing structured APIs for managing individual animations and complex animation sequences. The \Animatable\ class allows for chaining property tweens on targets, while the \Timeline\ class enables the composition of multiple animations with precise positioning, labels, and staggered scheduling, effectively adding a new capability for orchestrating multi-step animation flows.
src/timeline · high confidence
Introduction of Draggable component with configurable touch sensitivity
The draggable module has been introduced, providing a new capability for handling drag interactions on DOM elements. This implementation includes a configurable \dragThreshold\ option, which allows users to distinguish between mouse and touch sensitivity by setting a default touch drag threshold (evidenced as 7 in the commit history). The component integrates with the library's core animation, easing, and target parsing systems to manage drag states and transformations.
src/draggable · high confidence
Introduction of Web Animations API (WAAPI) engine
A new WAAPI-based animation engine has been added to the library, introducing the \WAAPIAnimation\ class and supporting composition logic in \src/waapi/\. This new module handles animation creation, easing parsing, and lifecycle management via the native Web Animations API, providing an alternative rendering path alongside existing animation methods.
src/waapi · high confidence
Introduction of centralized JSDoc type definitions
A new \src/types/index.js\ file has been added to centralize the library's type definitions. This file exports JSDoc annotations for core configuration objects (such as \DefaultsParams\ and \SpringParams\), target selectors, easing functions, and callback interfaces. This change improves IDE autocomplete and type checking for users interacting with the library's API.
src/types · high confidence
Introduction of new layout animation system
A new layout animation system has been added to the library, introducing a comprehensive set of types and core logic for managing layout transitions. This includes definitions for layout nodes, animation parameters, and state properties, along with the necessary imports for core helpers, targets, easings, and timelines to support these new capabilities.
src/layout · high confidence
Introduction of the Timer class for animation and timeline management
The \src/timer\ module has been introduced, exporting a new \Timer\ class that extends \Clock\. This class serves as the base for creating timers, animations, and timelines, handling core properties such as duration, delay, looping, and playback rate. It integrates with the engine's tick system, manages parent-child relationships for timelines, and provides callback hooks for events like \onBegin\, \onUpdate\, and \onComplete\. The implementation includes logic for resetting timer properties, reviving cancelled timers, and sorting by priority.
src/timer · high confidence
New SVG animation capabilities: motion paths, morphing, and drawing
This release introduces a new SVG module providing three distinct animation capabilities. Users can now animate elements along a path using \createMotionPath\, which calculates translation and rotation based on an SVG geometry element and supports an optional offset parameter. The \morphTo\ function allows interpolating between two SVG shapes (path, polygon, or polyline) with configurable precision and includes validation to ensure only compatible element types are morphed. Additionally, \createDrawable\ enables drawing animations on SVG strokes by creating proxies that manage \stroke-dashoffset\ and \stroke-dasharray\ attributes, handling scaling and line caps automatically.
dist/modules/svg, src/svg · high confidence
New TypeScript type definitions for animation and drag APIs
The library now ships with a comprehensive set of TypeScript declaration files in dist/modules/types/index.d.ts, providing type definitions for core animation features including DefaultsParams, StaggerParams (with jitter and seed support), SpringParams, and various easing functions. These types cover targets (DOM and JS), callbacks, and internal tween structures, enabling better autocomplete and type-checking for users of the animation, timeline, and drag capabilities.
dist/modules/types · high confidence
New additive animation system and text effects (Scramble, Split)
This release introduces a new additive animation engine that allows multiple tweens to accumulate their values on the same property simultaneously, managed via a dedicated \additive.js\ module and integrated into the main engine loop. It also adds new text animation capabilities, including \ScrambleText\ for progressively revealing or scrambling text content and \Split\ for breaking text into animatable lines, words, or characters with customizable HTML templates.
src/animation · high confidence
New extensible adapter system and Three.js integration
Anime.js v4.5.0 introduces a new adapter API that allows external libraries to extend the \animate()\ function to support custom targets. The \dist/modules/adapters\ directory now exposes \registerAdapter\ for registering custom target detectors and property resolvers. This release includes a built-in adapter for Three.js, enabling animation of \Object3D\ properties (position, rotation, scale, opacity, color) and providing specialized support for \InstancedMesh\ and \BatchedMesh\ via \getInstances\ and \commitChanges\.
dist/modules/adapters, src/adapters · high confidence
New interactive and visual animation examples added
The examples directory now includes several new demos showcasing advanced animation capabilities: an 'Additive creature' and 'Additive fireflies' using grid staggering and blend modes, an 'Advanced grid staggering' visualizer, an 'Animatable follow cursor' demo using the new createAnimatable API, and a complex 'Anime.js v4 logo animation' featuring SVG morphing, drawing, and timeline sequencing.
examples · high confidence
Architecture
Modular source code structure in src directory
The library's source code in the src directory has been reorganized into a modular structure. The main entry point, src/index.js, now acts as a central hub that re-exports functionality from distinct sub-modules covering core areas such as animation, timeline, easings, SVG, text, and utilities. This change improves code organization and maintainability without altering the public API surface.
src · high confidence
Behavioural changes
Anime.js updated to v4.5.0 with scroll threshold scale fix
The distributed ESM bundle (anime.esm.js) has been updated to version 4.5.0. This release includes a behavioral fix for scroll-based animations: the scroll target thresholds are now correctly calculated by taking the element's scale into account, ensuring accurate triggering of scroll events on scaled elements.
dist/bundles · high confidence
Anime.js v4 migration: modern build system and module exports
The project has been upgraded to v4, replacing the legacy single-file distribution with a modern, modular build pipeline. The old \anime.js\ and \anime.min.js\ bundles are removed in favor of a Rollup-based build that generates separate ESM and CJS modules in \dist/modules/\ alongside minified UMD/ESM bundles in \dist/bundles/\. TypeScript support is introduced via \tsconfig.json\ and \tsconfig.types.json\ for JSDoc-based type generation, and the repository now includes a \CONTRIBUTING.md\ guide and a \.gitignore\ for development artifacts. The README is updated to reflect the v4 API and installation paths.
(repo-wide) · high confidence
Anime.js v4.5.0 timer module release
The timer module in dist/modules/timer has been updated to version 4.5.0, introducing the CJS and ESM entry points (index.cjs, index.js) and the core Timer implementation (timer.cjs, timer.js) along with their TypeScript definitions. This release includes the Timer class and createTimer factory, which serve as the base for animations and timelines, featuring support for callbacks (onComplete, onUpdate, etc.), looping, delays, and engine integration.
dist/modules/timer · high confidence
Fixes
Fix scroll target threshold calculation to account for scale
Scroll animations now correctly calculate target thresholds by considering the container's scale factor. Previously, using the target element directly could lead to incorrect measurements (such as null values on SVG elements) or inaccurate scroll positions when scaling was applied; the logic now uses the container to determine scale, ensuring consistent behavior across different element types and scaling scenarios.
src/events · high confidence
Fix scroll threshold calculations to account for container scale
The scroll observer logic in the events module now correctly factors in the container's scale when computing scroll target thresholds. This ensures that animations triggered by scroll position are accurate even when the scroll container is scaled (e.g., via CSS transforms), preventing misalignment or missed triggers that occurred when scale was previously ignored.
dist/modules/events · high confidence
Test coverage
Added playground demos and benchmarking tools for Anime.js v4; Comprehensive test suite for animation engine and API.
Dependencies
Anime.js v4.5.0 release with modular exports and updated dev dependencies
This update releases Anime.js version 4.5.0, introducing a modular package structure that allows importing specific sub-modules (such as animation, timeline, easings, and adapters) alongside the main library. The project also adds TypeScript type definitions for its modules and updates its development dependencies, including Rollup, Mocha, and Three.js, to their latest compatible versions.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 37 → 55 (+17.2)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 42 → 64 (+21.9)
- Architecture 97 (new)
- Maturity 59 → 59 (+0.4)
- Readiness 23 → 41 (+18.7)
- Security 73 → 79 (+6.6)
Resolved (128)
- (anonymous) (cognitive 18) (src/animation/animation.js)
- (anonymous) (cognitive 20) (src/svg/morphto.js)
- (anonymous) (cognitive 21) (src/animation/additive.js)
- (anonymous) (cognitive 212) (src/utils/stagger.js)
- (anonymous) (cognitive 42) (src/layout/layout.js)
- (anonymous) (cognitive 42) (src/waapi/waapi.js)
- (anonymous) (cognitive 43) (src/events/scroll.js)
- (anonymous) (cognitive 49) (src/core/styles.js)
- (anonymous) (cognitive 60) (src/layout/layout.js)
- (anonymous) (cognitive 88) (src/text/scramble.js)
- (anonymous) (cyclomatic 16) (src/svg/morphto.js)
- (anonymous) (cyclomatic 21) (src/core/styles.js)
- (anonymous) (cyclomatic 21) (src/waapi/waapi.js)
- (anonymous) (cyclomatic 32) (src/layout/layout.js)
- (anonymous) (cyclomatic 44) (src/events/scroll.js)
- (anonymous) (cyclomatic 54) (src/layout/layout.js)
- (anonymous) (cyclomatic 69) (src/text/scramble.js)
- (anonymous) (cyclomatic 79) (src/utils/stagger.js)
- Dimension evaluation failed
- FileTooLong: benchmark/index.js (tests/playground/benchmark/index.js)
- …and 108 more
New (102)
- Animatable.constructor (cyclomatic 27) (src/animatable/animatable.js)
- AutoLayout.animate (cyclomatic 152) (src/layout/layout.js)
- AutoLayout.constructor (cognitive 18) (src/layout/layout.js)
- ClassTooLong: Draggable (src/draggable/draggable.js)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (the committed lockfile resolved no direct production dependency)
- Documentation: no usage examples (README.md)
- Draggable.constructor (cyclomatic 55) (src/draggable/draggable.js)
- Draggable.handleDown (cyclomatic 17) (src/draggable/draggable.js)
- Draggable.handleMove (cyclomatic 23) (src/draggable/draggable.js)
- Draggable.handleUp (cyclomatic 43) (src/draggable/draggable.js)
- Draggable.isOutOfBounds (cognitive 16) (src/draggable/draggable.js)
- Draggable.refresh (cyclomatic 20) (src/draggable/draggable.js)
- Draggable.update (cognitive 36) (src/draggable/draggable.js)
- Draggable.update (cyclomatic 25) (src/draggable/draggable.js)
- Draggable.updateBoundingValues (cyclomatic 34) (src/draggable/draggable.js)
- Engine.update (cognitive 16) (src/engine/engine.js)
- FunctionTooLong: render.render (src/core/render.js)
- FunctionTooLong: scramble.scrambleText (src/text/scramble.js)
- FunctionTooLong: stagger.stagger (src/utils/stagger.js)
- High CVE: [GHSA redacted] (package-lock.json)
- …and 82 more
Changes since last survey
- 1 commits — 1 feature/other, 0 fixes
By area
- (root) — 1 commit
Notable commits
- change: Update README.md
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
juliangarnier/anime was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 25 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 01b81be1df6843ccfe0a71c0699a746bf740dd77 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-dd72cc24c749.