{"adoption": {"forks": 4891, "observed_at": "2026-08-28T04:12:21.187542+00:00", "stars": 72448}, "canonical_url": "https://ross.abutalabs.com/products/anime", "card": {"archived": false, "artifact_type": "library", "description": "JavaScript animation engine", "domain": ["frontend", "web-development", "graphics"], "enriched": true, "function": ["animation", "ui-components"], "health_score": 98, "homepage": "https://animejs.com", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["juliangarnier/anime"], "name": "juliangarnier/anime", "platform": ["browser"], "pushed_at": "2026-08-21T21:29:50+00:00", "repo": "juliangarnier/anime", "stars": 72448, "tags": ["animation-engine", "svg-animation", "css-transforms", "scroll-animations", "timelines", "staggering", "draggable", "waapi", "javascript", "nodejs"], "topics": ["animation", "anime", "javascript-library", "svg", "canvas", "css", "javascript"], "urls": [], "use_cases": ["animate css properties and dom elements on a website", "create svg shape morphing and line drawing animations", "trigger animations on scroll", "build staggered multi-element animation effects", "orchestrate sequenced animations with a timeline", "make draggable, springy ui elements", "animate javascript objects and attributes"], "what_it_is": "Anime.js is a fast, lightweight, multipurpose JavaScript animation library for animating CSS properties, SVG, DOM attributes, and JavaScript objects. Version 4 provides a modular API with timelines, scroll observation, staggering, SVG utilities, and draggable interactions.", "when_to_avoid": ["you need physics-based or WebGL/3D animation (consider three.js or GSAP's plugins)", "you only need simple CSS transitions achievable without a library", "you work outside the browser/web environment"], "when_to_choose": ["you need a lightweight, dependency-free animation engine for the web", "you want one API covering CSS, SVG, DOM attributes, and JS objects", "you need scroll-linked or scroll-triggered animations", "you want fine control over transforms, easings, and composition"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/anime", "repo": "juliangarnier/anime", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:12:21.187542+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:15:25.134319+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90d0fb785d4547f34029799c55f079aa275c892e88af12e8eeeedf722dbf6a68", "fetched_at": "2026-08-28T04:12:21.187542+00:00", "kind": "readme", "missing": false, "url": "https://github.com/juliangarnier/anime"}, {"content_hash": "b7b57e3e044e1c3df31380c9c3ef5bfb58acc2fc82afbc38402030c89779d2cb", "fetched_at": "2026-08-28T17:49:17.840708+00:00", "kind": "homepage", "missing": false, "url": "https://animejs.com"}, {"content_hash": "b8818ff3528fa37719435c3a298eb45354960d69ac0c75925727b45b9147e087", "fetched_at": "2026-08-28T17:49:17.849967+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation"}, {"content_hash": "406765be3e9958c87d96ea6559ce3e14664542648cd67ee18caf943e6776e763", "fetched_at": "2026-08-28T17:49:17.852178+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-parameters/composition"}, {"content_hash": "9fdb390f41268e464f997d58dd1ecee01dd6b986b2866a19a1cf9948155a6342", "fetched_at": "2026-08-28T17:49:17.854280+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/animatable-properties/css-transforms"}, {"content_hash": "735fe20418634ac6488a7bd7b7aa9acb26527942fff19d8db6502ebdced4dbc4", "fetched_at": "2026-08-28T17:49:17.857011+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/animation/tween-value-types/function-based"}, {"content_hash": "db5f36123b3c51eaeb7b81db380f36f622a51d666f8483cb733c4a350f4a0eaf", "fetched_at": "2026-08-28T17:49:17.859791+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-synchronisation-modes"}, {"content_hash": "987c884275b693bdf04d1dd69c6caf8b1ee4b1e8a58e89c61bce0706325e3a69", "fetched_at": "2026-08-28T17:49:17.862295+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-thresholds"}, {"content_hash": "4441d4b57f0540c1fc02ee7a81008197f24f38435547be04e64fbb8fa28637d7", "fetched_at": "2026-08-28T17:49:17.864554+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/events/onscroll/scrollobserver-callbacks"}, {"content_hash": "db0dbfdb63a3b10f40dd7fc23cd3f88a4764eaa5d5a5394d380af1ed09ab7418", "fetched_at": "2026-08-28T17:49:17.866320+00:00", "kind": "site_page", "missing": false, "url": "https://animejs.com/documentation/stagger/time-staggering"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 89}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3825, "days_push": 12, "days_rel": 72, "gap_med": 5.5, "n_releases_24m": 21}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}