# anime changelog > JavaScript animation engine - Vendor: juliangarnier - Category: Developer Tools - Official site: https://animejs.com/ - Tracked by: What's New (https://whatsnew.fyi/product/anime) - Harvested from: GitHub (juliangarnier/anime) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### v4.5.0 - Date: 2026-06-22 - Version: v4.5.0 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.5.0 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.5.0 - **added** — New registerAdapter() API to extend animate() and utils.set() to non-DOM targets - **added** — New built-in three.js adapter imported as a side-effect from animejs/adapters/three to animate Object3D, materials, lights, cameras, audio nodes, UniformNode (TSL) and instanced meshes - **added** — Auto-grid stagger mode now supports 3D layouts using {x, y, z} coordinates or an explicit grid: [columns, rows, depth] triplet - **changed** — The from parameter now accepts [x, y, z] normalized coordinates and axis now accepts 'z' for 3D grid origins - **added** — New jitter parameter to add a random offset to staggered values, either a single number or a [start, end] range - **added** — New seed parameter to make jitter and from: 'random' reproducible - **changed** — Color animations now blend RGB channels in pseudo-linear space for smoother, more even transitions - **fixed** — Fix a flicker that could appear randomly between iterations of reversed loops - **fixed** — Fix a flicker that could appear randomly on alternate loops when using non-integer duration values - **fixed** — Fix a backward seek leaving a timeline child stuck at its end value when all its properties share the same delay - **fixed** — Fix a timeline child whose delay is longer than its duration overwriting a later sibling's value on a forward seek - **fixed** — Fix stale values when seeking a timeline whose children animate the same property through delayed tweens, most visible with staggered jitter delays - **fixed** — Fix an implicit from value resolving to a stale value when an overridden tween sits earlier in the chain - **fixed** — Improve performance when building large timelines with many overlapping .add() calls on the same property, and fix a case where such a timeline could cancel itself - **fixed** — Fix a floating point precision issue producing incorrect intermediate values in keyframe arrays - **fixed** — Fix scrubbing backward past the start of a keyframe sequence not restoring the first keyframe's from value - **fixed** — Fix scrubbing forward past the end of a keyframe sequence leaving the target stuck on a previous keyframe's value - **fixed** — Fix sequential keyframes occasionally detected as overlapping because of floating point drift, leaving the target stuck on the wrong value when scrubbing - **fixed** — Fix function-based and CSS variable from values in object form ({ from, to }) not re-resolving on refresh() - **fixed** — Fix stretch() not correctly scaling animations that use keyframes ##### New Features - **Adapters** - New `registerAdapter()` API to extend `animate()` and `utils.set()` to non-DOM targets (learn more: https://animejs.com/documentation/adapters) - **Three.js adapter** - New built-in three.js adapter, imported as a side-effect from `animejs/adapters/three`, to animate `Object3D`, materials, lights, cameras, audio nodes, `UniformNode` (TSL) and instanced meshes (learn more: https://animejs.com/documentation/adapters/three) - **Stagger** - Auto-grid mode now supports 3D layouts, using `{x, y, z}` coordinates or an explicit `grid: [columns, rows, depth]` triplet - The `from` parameter now accepts `[x, y, z]` normalized coordinates and `axis` now accepts `'z'` for 3D grid origins - New `jitter` parameter to add a random offset to staggered values, either a single number or a `[start, end]` range - New `seed` parameter to make `jitter` and `from: 'random'` reproducible ##### Bug Fixes and improvements - **Color** - Color animations now blend RGB channels in pseudo-linear space for smoother, more even transitions (intermediate colors differ slightly from previous versions) - **Render** - Fix a flicker that could appear randomly between iterations of reversed loops - Fix a flicker that could appear randomly on alternate loops when using non-integer duration values - **Timeline** - Fix a backward seek leaving a timeline child stuck at its end value when all its properties share the same delay - Fix a timeline child whose delay is longer than its duration overwriting a later sibling's value on a forward seek - Fix stale values when seeking a timeline whose children animate the same property through delayed tweens, most visible with staggered `jitter` delays - Fix an implicit `from` value resolving to a stale value when an overridden tween sits earlier in the chain - Improve performance when building large timelines with many overlapping `.add()` calls on the same property, and fix a case where such a timeline could cancel itself - **Keyframes** - Fix a floating point precision issue producing incorrect intermediate values in keyframe arrays - Fix scrubbing backward past the start of a keyframe sequence not restoring the first keyframe's `from` value - Fix scrubbing forward past the end of a keyframe sequence leaving the target stuck on a previous keyframe's value - Fix sequential keyframes occasionally detected as overlapping because of floating point drift, leaving the target stuck on the wrong value when scrubbing - **Animation** - Fix function-based and CSS variable `from` values in object form (`{ from, to }`) not re-resolving on `refresh()` - Fix `stretch()` not correctly scaling animations that use keyframes - **Scroll** - Fix a `getBoundingClientRect` crash that could happen when a scroll container resized before its target was ready - **Engine** - More accurate frame scheduling that no longer drops frames arriving slightly early because of `requestAnimationFrame` jitter - Faster `engine.speed` and `engine.timeUnit` updates that skip unnecessary work when the value does not actually change ### v4.4.1 - Date: 2026-04-30 - Version: v4.4.1 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.4.1 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.4.1 - **fixed** — Fix a regression in timeline .call() not triggering properly in some cases ##### Bug fix * Fix a regression introduced in `4.4.0` with timeline `.call()` not triggering properly in some cases. ### v4.4.0 - Date: 2026-04-29 - Version: v4.4.0 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.4.0 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.4.0 - **changed** — Transforms now follow a fixed render order (perspective > translate > rotate > scale > skew) regardless of the order they are defined in animation parameters - **removed** — matrix and matrix3d can no longer be animated directly - **changed** — The third argument of function-based value callbacks changed from total (Number) to targets (Array) - **added** — A fourth argument prevTween is now passed to function-based value callbacks, providing access to the previous sibling tween's computed end value - **changed** — The stagger callback signature changed so the third argument is now the targets array instead of the total count - **added** — New scrambleText() function-based value to animate text with a character-by-character scramble/reveal effect - **added** — New grid: true auto-grid mode that computes a 2D layout from element positions or JS object coordinates - **added** — The from parameter now accepts [x, y] normalized coordinate arrays (0 to 1) for precise grid origin control - **added** — New priority parameter to control execution order within the engine tick loop - **added** — Adjacent axis properties are now grouped into CSS shorthand for shorter transform strings - **added** — Inline transform parsing rewritten to properly handle multi-argument CSS functions and nested calc() expressions - **added** — createLayout() now accepts an id parameter - **added** — globals is now exported from the main module entry point - **added** — forEachChildren, addChild, removeChild helpers are now exported from utils - **fixed** — revert() now restores object properties and DOM attributes to their original pre-animation values, in addition to CSS styles and transforms - **fixed** — Fix getOriginalAnimatableValue not storing the original inline value for object properties and DOM attributes - **fixed** — Fix chaining in keyframe arrays and timelines producing incorrect intermediate shapes in morphTo - **fixed** — Fix accessing non-existent chainable methods throwing an error instead of returning undefined - **fixed** — Fix splitText addEffect() returning undefined instead of this when the effect argument is not a function - **fixed** — Fix scroll-controlled layout animations not properly calling onComplete and onPause callbacks - **fixed** — Fix _startTime not being preserved when reconstructing tracked animations, causing timing jumps on effect refresh - **removed** — DevTools integration (AnimeJSDevTools) removed - **changed** — Render loop performance improved by extracting inline closures in tick() and render() to module-scope functions - **changed** — Tween composition is now resolved before computing to/from/duration/delay values - **changed** — Type annotation for splitText() and TextSplitter target parameter widened from HTMLElement to Element - **changed** — Each tween now pre-computes and stores its end value at construction time ##### Breaking Changes - **Transforms** - Transforms now follow a fixed render order (`perspective` > `translate` > `rotate` > `scale` > `skew`), regardless of the order they are defined in animation parameters: ```js // Before: scale rendered first because it was defined first animate(el, { scale: 2, translateX: 100 }) // → scale(2) translateX(100px) // After: order is always fixed animate(el, { scale: 2, translateX: 100 }) // → translate(100px, 0px) scale(2) ``` - `matrix` and `matrix3d` can no longer be animated directly (they are still preserved when read from inline styles and can be set using transform: 'matrix(...)') - **Function-based values** - The third argument of function-based value callbacks changed from `total` (Number) to `targets` (Array). To migrate, replace `total` with `targets.length`: ```js // Before translateX: (target, index, total) => total * 10 // After translateX: (target, index, targets) => targets.length * 10 ``` - A fourth argument `prevTween` is now passed to function-based value callbacks, providing access to the previous sibling tween's computed end value for the same target and property. - **Stagger** - The stagger callback signature changed to match function-based values: the third argument is now the `targets` array instead of the total count: ```js // Before delay: stagger(100, { use: (target, i, total) => total - i }) // After delay: stagger(100, { use: (target, i, targets) => targets.length - i }) ``` ##### New Features - **scrambleText** - New `scrambleText()` function-based value to animate text with a character-by-character scramble/reveal effect (learn more: https://animejs.com/documentation/text/scrambletext) - **Stagger** - New `grid: true` auto-grid mode that computes a 2D layout from element positions or JS object coordinates (`{x, y}`) instead of requiring explicit `[columns, rows]` dimensions - The `from` parameter now accepts `[x, y]` normalized coordinate arrays (0 to 1) for precise grid origin control - **Timer / Animation / Timeline** - New `priority` parameter to control execution order within the engine tick loop - **Transforms** - Adjacent axis properties are now grouped into CSS shorthand for shorter transform strings: - `translateX` + `translateY` → `translate(x, y)` - `translateX` + `translateY` + `translateZ` → `translate3d(x, y, z)` - `scaleX` + `scaleY` → `scale(x, y)` - `scaleX` + `scaleY` + `scaleZ` → `scale3d(x, y, z)` - Inline transform parsing rewritten to properly handle multi-argument CSS functions (`translate(x, y)`, `scale3d(x, y, z)`) and nested `calc()` expressions - **Layout** - `createLayout()` now accepts an `id` parameter - **Exports** - `globals` is now exported from the main module entry point - `forEachChildren`, `addChild`, `removeChild` helpers are now exported from `utils` ##### Bug Fixes and improvements - **JS Animation** - `revert()` now restores object properties and DOM attributes to their original pre-animation values, in addition to CSS styles and transforms (previously only CSS styles and transforms were reverted, leaving animated object props and attributes at their last animated value). The public `cleanInlineStyles()` utility keeps its original behavior and only clears inline styles and transforms. - Fix `getOriginalAnimatableValue` not storing the original inline value for object properties and DOM attributes, preventing proper revert - **morphTo** - Fix chaining in keyframe arrays and timelines producing incorrect intermediate shapes - **Chainable utils** - Fix accessing non-existent chainable methods throwing an error instead of returning `undefined` - **splitText** - Fix `addEffect()` returning `undefined` instead of `this` when the effect argument is not a function - **Layout** - Fix scroll-controlled layout animations not properly calli _[Truncated at 4000 characters — full notes: https://github.com/juliangarnier/anime/releases/tag/v4.4.0]_ ### v4.3.6 - Date: 2026-02-13 - Version: v4.3.6 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.3.6 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.3.6 - **fixed** — Fix auto layout not properly synced with onScroll, allowing controlling layout animations with sync option ##### Bug Fixes - **Auto Layout** - Fix auto layout not properly synced with onScroll, allowing controlling layout animations like this: ```js layout.animate({ autoplay: onScroll({ sync: true, }) }); ``` ### v4.3.5 - Date: 2026-01-25 - Version: v4.3.5 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.3.5 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.3.5 - **fixed** — Fix a regression introduced in v4.3.2 that prevented inline elements from being animated in some cases - **fixed** — Fix a regression introduced in v4.3.0 that prevented CSS computed style of background from being correctly interpreted as a color value ##### Bug Fixes - **Auto Layout** - Fix a regression introduced in v4.3.2 that prevented inline element to be animated in some cases. - **Animation** - Fix a regression introduced in v4.3.0 that prevented CSS computed style of `background` to be correctly interpreted as a color value (#1136). ### v4.3.4 - Date: 2026-01-23 - Version: v4.3.4 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.3.4 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.3.4 - **changed** — Synced WAAPI animations now automatically have their persist property set to true - **fixed** — Fix comment syntax potentially causing an error in onScroll ##### Improvements - **WAAPI / Timeline** - Synced WAAPI animations now automatically have their `persist` property set to `true` (#1121) ##### Bug Fixes - **onScroll** - Fix comment syntax potentially causing an error (#1124) ### v4.3.3 - Date: 2026-01-22 - Version: v4.3.3 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.3.3 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.3.3 - **fixed** — Function-based "from" values now refresh correctly when calling .refresh() - **changed** — Unit conversion (e.g., svh to rem) is recalculated on refresh - **added** — Add onResize callback that triggers when the scroll container refreshes due to a resize event - **added** — Add missing tl.backward / anim.backward / time.backward property documentation - **changed** — Add an opacity animation preview to the easing functions editor ##### Improvements - **Refresh** - Function-based "from" values now refresh correctly when calling `.refresh()` - Unit conversion (e.g., `svh` to `rem`) is recalculated on refresh - **onScroll** - Add `onResize` callback that triggers when the scroll container refreshes due to a resize event ##### Documentation - **Playback** - Add missing `tl.backward` / `anim.backward` / `time.backward` property doc - **Easing** - Add an opacity animation preview to the easing functions editor ### v4.3.2 - Date: 2026-01-22 - Version: v4.3.2 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.3.2 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.3.2 - **fixed** — Fix an issue where inline tags, like span or strong weren't detected when surrounded by comments ##### Bug Fixes - **Layout** - Fix an issue where inline tags, like or weren't detected when surrounded by comments (again) ### v4.3.1 - Date: 2026-01-21 - Version: v4.3.1 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.3.1 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.3.1 - **fixed** — Fix an issue where inline tags, like span or strong weren't detected when surrounded by comments ##### Bug Fixes - **Layout** - Fix an issue where inline tags, like or weren't detected when surrounded by comments ### v4.3.0 - Date: 2026-01-20 - Version: v4.3.0 - Original notes: https://github.com/juliangarnier/anime/releases/tag/v4.3.0 - Permalink: https://whatsnew.fyi/product/anime/releases/v4.3.0 - **added** — New createLayout() method to easily animate between two layout states - **added** — The ease parameter now accepts function-based values like duration and delay properties - **added** — Add composition parameter to disable animation composition when using .add() to improve performance - **added** — Add muteCallbacks parameter to .complete(muteCallbacks) to complete the animation without triggering callbacks - **fixed** — Fix an issue where complex values containing a color (e.g., box-shadow) would be incorrectly handled as color values instead of complex string values - **fixed** — Fix animations not being properly removed from document.timeline in some cases - **fixed** — Fix spring parameters not properly setting the duration - **fixed** — Fix spring easing being ignored when defined in the defaults parameter - **fixed** — Fix .call() and .sync() incorrectly inheriting delay from defaults parameters - **fixed** — Fix a bug where the first word of the second line could be incorrectly added to the first line - **fixed** — Fix unnecessary empty spaces not being properly removed from lines - **changed** — Increase max fps to 240 (previously 120) ##### New Features - **AutoLayout** - New `createLayout()` method to easily animate between two layout states (learn more about layouts here: https://animejs.com/documentation/layout) - **Easings** - The `ease` parameter now accepts function-based values (like `duration` and `delay` properties) - **Timeline** - Add `composition` parameter to disable animation composition when using `.add()` and greatly improve performance ##### Bug Fixes - **JS Animation** - Fix an issue where complex values containing a color (e.g., `box-shadow`) would be incorrectly handled as color values instead of complex string values - **WAAPI** - Fix animations not being properly removed from `document.timeline` in some cases - **Draggable** - Fix spring parameters not properly setting the duration - **Timeline** - Fix spring easing being ignored when defined in the `defaults` parameter - Fix `.call()` and `.sync()` incorrectly inheriting `delay` from `defaults` parameters - **splitText** - Fix a bug where the first word of the second line could be incorrectly added to the first line - Fix unnecessary empty spaces not being properly removed from lines ##### Changes - **Engine** - Increase max fps to 240 (previously 120) - **Animation / Timer / Timeline** - Add `muteCallbacks` parameter to `.complete(muteCallbacks)` to complete the animation without triggering callbacks