Skip to content
Lasse Nielsen edited this page Feb 24, 2026 · 4 revisions

LibAnimate Wiki

LibAnimate is a standalone, LibStub-based animation library for World of Warcraft addons. It provides 77 built-in keyframe-driven animations inspired by animate.css, powered by a single shared OnUpdate driver frame - completely bypassing WoW's buggy Animation/AnimationGroup system.

✨ Features

  • 77 built-in animations - Attention seekers, bouncing, fading, sliding, zooming, back, specials, and utility animations
  • Keyframe-driven - Define animations as keyframe lists with property values at progress points
  • Per-segment easing - Named presets (quadratic, cubic, back) plus full cubic-bezier via Newton-Raphson solver
  • Animation delay - Start animations after a configurable delay
  • Repeat and loop - Play animations multiple times or loop infinitely
  • Animation queues - Chain animations in sequence with per-step callbacks
  • Queue looping - Loop entire animation sequences continuously
  • Pause and resume - Freeze and resume animations and queues mid-progress
  • Dynamic queue management - Insert, remove, and skip queue entries at runtime
  • Smooth anchor sliding - Reposition frames smoothly during active animations
  • Extensible - Register your own custom animations via RegisterAnimation
  • Lightweight - Single shared driver frame, no per-animation frame overhead
  • Multi-version - Supports Retail, TBC Anniversary, and MoP Classic

📖 Wiki Pages

Page Description
Getting Started Installation, dependencies, and your first animation
API Reference Complete documentation for all public methods
Animation Catalog All 77 built-in animations organized by category
Custom Animations How to create and register your own animations
Easing Functions Built-in easing presets and custom cubic-bezier curves

🚀 Quick Example

local LibAnimate = LibStub("LibAnimate")

-- Entrance animation
LibAnimate:Animate(myFrame, "fadeInUp", {
    duration = 0.6,
    distance = 300,
    onFinished = function(frame)
        print("Animation complete!")
    end,
})

-- Attention seeker (returns to original state)
LibAnimate:Animate(myFrame, "heartBeat")

-- Stop and restore
LibAnimate:Stop(myFrame)

-- Delay + repeat
LibAnimate:Animate(myFrame, "pulse", {
    delay = 0.5,
    repeatCount = 3,
})

-- Animation queue with looping
LibAnimate:Queue(myFrame, {
    { name = "pulse", duration = 2.0 },
    { name = "heartBeat", duration = 1.3 },
}, { loop = true })

-- Pause / resume
LibAnimate:PauseQueue(myFrame)
LibAnimate:ResumeQueue(myFrame)

-- Dynamic queue management
LibAnimate:InsertQueueEntry(myFrame, { name = "tada" })
LibAnimate:RemoveQueueEntry(myFrame, 2)
LibAnimate:SkipToEntry(myFrame, 1)

-- Smooth anchor repositioning during animation
LibAnimate:SlideAnchor(myFrame, 0, 200, 0.3)

📦 Supported Properties

LibAnimate animations can interpolate the following frame properties:

Property Description Default
translateX Horizontal offset (fraction of distance) 0
translateY Vertical offset (fraction of distance) 0
scale Uniform scale factor 1.0
alpha Opacity (0.0 to 1.0) 1.0

Note: WoW's coordinate system has positive Y pointing up (opposite of CSS). LibAnimate handles this automatically in its built-in animations.

🔗 Links

Clone this wiki locally