figma_apply_animation
Applies Figma Motion animations to a node via presets, custom styles, or manual keyframe tracks, with easing, duration, and timeline offset controls.
Instructions
Animate a node with Figma Motion. Pass exactly one of:
preset: a Figma animation style (Position, Scale, Rotation, Size, Opacity, Path, TextStagger), with optional duration, timelineOffset, easing and preset props. List presets and their props with figma_manage_animation_styles action 'list_presets'.
customStyleId: a local custom animation style (see figma_manage_animation_styles).
keyframeTracks: manual keyframes per property, paint color or effect field. Each track replaces any existing track for that target. Easing can be a literal curve or an EASING variable (easing.variableId); a preset's duration can be bound to a TIMING variable (durationVariableId). Main components can't be animated through the Plugin API: use an instance or frame. Motion plays in Figma's preview and video export, not in static screenshots.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| props | No | Preset-specific options (e.g. {type:'fadeIn'}, {direction:'right', distance:120}). Valid keys and defaults per preset: figma_manage_animation_styles action 'list_presets'. | |
| easing | No | Easing: a literal curve, or an EASING variable to bind | |
| nodeId | Yes | Node to animate (an instance or frame, not a main component) | |
| preset | No | Figma animation style id, e.g. 'Opacity', 'Scale', 'Position' | |
| fileKey | No | Local Mode only. Run against this specific connected file instead of the active file. Get connected fileKeys from figma_list_open_files. Rejected in Cloud Mode, which pairs with a single plugin instance. | |
| duration | No | Preset duration in seconds | |
| customStyleId | No | Local custom animation style id | |
| keyframeTracks | No | Manual keyframe tracks | |
| timelineOffset | No | Start offset on the timeline in seconds | |
| durationVariableId | No | Bind the preset's duration to a TIMING variable |