{"adoption": {"forks": 297, "observed_at": "2026-08-28T04:09:14.238076+00:00", "stars": 5286}, "canonical_url": "https://ross.abutalabs.com/products/keyframes", "card": {"archived": true, "artifact_type": "library", "description": "A library for converting Adobe AE shape based animations to a data format and playing it back on Android and iOS devices.", "domain": ["mobile-development", "graphics", "frontend"], "enriched": true, "function": ["animation", "serialization", "image-processing"], "health_score": 10, "homepage": "https://facebookincubator.github.io/Keyframes/", "language": "JavaScript", "license": "NOASSERTION", "license_family": "other", "maturity": "abandoned", "member_repos": ["facebookarchive/Keyframes"], "name": "facebookarchive/Keyframes", "platform": ["cross-platform"], "pushed_at": "2019-11-29T23:33:53+00:00", "repo": "facebookarchive/Keyframes", "stars": 5286, "tags": ["after-effects", "vector-animation", "extendscript", "facebook-archive", "lottie-alternative", "android", "ios"], "topics": [], "urls": [], "use_cases": ["play after effects animations in an android app", "render vector animations on ios from a json file", "export after effects shape animations to a data format", "add lightweight animated illustrations to a mobile app", "convert ae shape layers to mobile animation assets"], "what_it_is": "Keyframes is a Facebook library consisting of an ExtendScript tool that extracts vector animation data from Adobe After Effects files into JSON, plus rendering libraries for Android and iOS. It enables high-quality, vector-based animations with a minimal file footprint.", "when_to_avoid": ["starting a new project - the repo is archived and unmaintained", "you need modern tooling or community support - consider Lottie instead", "you need animations beyond the AE constraints Keyframes imposes"], "when_to_choose": ["you need vector-based animations exported from After Effects for Android or iOS", "you want minimal file size for complex shape and path animations", "you are maintaining an existing app already built on Keyframes"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/keyframes", "repo": "facebookarchive/Keyframes", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "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:09:14.238076+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:14.238076+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:59:15.624845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99ce9e50a6f02e7b564540bb724f530a32aa6aae5321f11422fc2a687e15389c", "fetched_at": "2026-08-28T04:09:14.238076+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/Keyframes"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["archived", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3697, "days_push": 2469, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}