🐛 Fixes
- Nested animation modifiers not running — Fixed a critical bug where post-process modifiers (Continuous Rotation, Follow Path, Stroke Trim, Copy Animation) on layers inside nested child frame animations were silently skipped during playback and export. The child timeline pipeline now computes modifier instances and applies them through the same shared pipeline used by the top-level frame.
- Per-layer Loop Mode in nested animations — Pre-process modifiers (Loop Mode) on individual layers within nested child frames now correctly remap time for property, morph, text, and discrete tracks. Previously only the timeline-level loop mode was respected.
♻️ Refactor
- Unified modifier interpolation pipeline — Extracted the modifier field interpolation, expression evaluation, and pre-process time remapping logic from
ui/store/modifierPlayback.tsinto a new shared module (shared/modifierInterpolation.ts). Both the UI and plugin now use the exact same code path, eliminating behavioral drift between preview and render. - Consolidated
baselineRotationintoLayerModifierData— The rotation baseline used by Continuous Rotation is now stored canonically inmodifierData.baselineRotation(with backward-compat fallback to the deprecatedLayerTimeline.baselineRotation). This keeps modifier-specific data with the modifier system. - Modifier cleanup on delete — Removing the last rotation-dependent modifier from a layer now cleans up
modifierData.baselineRotation, preventing orphaned data from accumulating.
📦 Installation
- Download
motionkit.zipfrom the assets below - Extract the ZIP file
- In Figma Desktop → Plugins → Development → Import plugin from manifest...
- Select the
manifest.jsonfile from the extracted folder - Open any Figma file → Plugins → Development → MotionKit
Note: MotionKit requires Figma Desktop app for development mode.