From hyperframes
Provides patterns for embedding Lottie and dotLottie animations in HyperFrames via lottie-web JSON, .lottie files, and @lottiefiles/dotlottie-web players. Registers instances on window.__hfLottie for seeking in UI motion and After Effects exports.
npx claudepluginhub ilderaj/agent-plugin-marketplace --plugin codex--hyperframesThis skill uses the workspace's default tool permissions.
HyperFrames can seek both `lottie-web` and dotLottie players through its `lottie` runtime adapter. Lottie is a strong fit because the animation timeline is already encoded in the asset; HyperFrames only needs a player object it can seek.
Renders After Effects animations as Lottie JSON/dotLottie files in web and React apps using lottie-web, dotlottie-web, lottie-react for icons, micro-interactions, and loaders.
Adapts Anime.js animations and timelines for HyperFrames compositions by registering on window.__hfAnime for seek-driven, deterministic playback. Use when porting Anime.js examples to render-safe HTML.
Implements Disney's 12 animation principles using Lottie (Bodymovin) animations exported from After Effects, with JavaScript runtime controls for speed, segments, poses, and events.
Share bugs, ideas, or general feedback.
HyperFrames can seek both lottie-web and dotLottie players through its lottie runtime adapter. Lottie is a strong fit because the animation timeline is already encoded in the asset; HyperFrames only needs a player object it can seek.
assets/.autoplay: false.loop: false unless the user explicitly wants a loop.window.__hfLottie.The adapter seeks lottie-web with goToAndStop(timeMs, false) and dotLottie with frame or percentage APIs depending on player shape.
<div id="logo-lottie" class="lottie-layer"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.12.2/lottie.min.js"></script>
<script>
const anim = lottie.loadAnimation({
container: document.getElementById("logo-lottie"),
renderer: "svg",
loop: false,
autoplay: false,
path: "assets/logo-reveal.json",
});
window.__hfLottie = window.__hfLottie || [];
window.__hfLottie.push(anim);
</script>
.lottie-layer {
width: 100%;
height: 100%;
}
<canvas id="product-lottie" class="lottie-canvas"></canvas>
<script src="https://unpkg.com/@lottiefiles/dotlottie-web"></script>
<script>
const player = new DotLottie({
canvas: document.getElementById("product-lottie"),
src: "assets/product-flow.lottie",
autoplay: false,
loop: false,
});
window.__hfLottie = window.__hfLottie || [];
window.__hfLottie.push(player);
</script>
.lottie-canvas {
width: 100%;
height: 100%;
display: block;
}
Push each player into the same registry:
window.__hfLottie = window.__hfLottie || [];
window.__hfLottie.push(backgroundAnim);
window.__hfLottie.push(iconAnim);
window.__hfLottie.push(confettiAnim);
HyperFrames seeks them all to the same composition time.
path URLs at render time.play()..lottie file in a browser first.After editing a Lottie composition:
npx hyperframes lint
npx hyperframes validate
packages/core/src/runtime/adapters/lottie.ts.loadAnimation options: https://github.com/airbnb/lottie-web/wiki/loadAnimation-options