{
  "gem": {
    "slug": "scrollyvideo-js-vg-1506",
    "name": "ScrollyVideo.js",
    "description": "Component that scrubs a video frame-accurately against scroll position across React, Vue, Svelte and vanilla, handling decode differences per browser.",
    "url": "https://scrollyvideo.js.org/",
    "domain": "scrollyvideo.js.org",
    "author": "Daniel Kao (@dkaoster)",
    "license": "MIT",
    "category": "Motion & Animation",
    "subcategory": "Scrollytelling",
    "tags": [
      "video",
      "scroll",
      "scrubbing",
      "component"
    ],
    "whyGem": "Frame-accurate scroll-scrubbed video is notoriously hard; this handles the codec edge cases.",
    "sourceType": "site",
    "image": "/api/public/library/og/VG-1506-480.webp",
    "pageUrl": "https://vibing.inc/library/scrollyvideo-js-vg-1506"
  }
}