Skip to main content
Question

How can Figma Motion animations be exported accurately through the Plugin API, especially custom anchors and animated masks?

  • July 14, 2026
  • 2 replies
  • 38 views

launchd

Hi Figma team,

I’m developing a plugin that exports Figma Motion animations to PAG, Tencent’s vector animation file format.

While working on this exporter, I’ve encountered several gaps between Figma Motion’s canvas rendering and the animation data currently exposed through the Plugin API.

The most important issue is the transform anchor or pivot point. I cannot find a reliable API for reading the actual anchor used by Motion. This becomes critical when a designer has manually adjusted the anchor point. Reconstructing it from the node bounds, relativeTransform, absoluteTransform, or the first animation frame is not always accurate, especially for rotated groups and nested nodes.

I also could not find detailed documentation explaining how node.animations should be interpreted and reproduced outside Figma. Some areas that need clarification include:

  • Whether Position values are absolute coordinates, parent-space values, or offsets from the static transform.
  • How Position, Rotation, Scale, Width, and Height tracks should be composed and in which order.
  • How animated transforms should be combined with relativeTransform and absoluteTransform.
  • How transform anchors should be applied to nested or rotated groups.
  • How sub-frame keyframes, easing, multiple tracks, and track operations such as SET, OFFSET, and SCALE should be evaluated.
  • Whether Width and Height animations resize geometry from the top-left corner or behave like scale animations around an anchor.
  • How animated masks should be reconstructed, including mask position, dimensions, opacity, gradient fills, coordinate spaces, and masked group composition.
  • How Motion handles spatial Position curves when the curve data is not exposed through the Plugin API.

Animated masks are particularly difficult. The result rendered directly by Figma Motion is correct, but recreating the same animation from node.animations can produce different mask positions or reveal regions. Exporting the design as animated SVG is not a reliable reference either, because some mask and animation effects are missing or rendered differently. So far, only Figma’s video export appears to preserve the complete Motion rendering.

The currently published official Lottie exporter also appears not to support every Motion effect, which suggests that third-party animation exporters may be missing access to some internal rendering information.

Could you provide guidance on the following?

  1. Is there a supported way to read the effective Motion anchor or pivot point, including manually adjusted anchors?
  2. Is there a formal specification for evaluating node.animations?
  3. Are Position spatial curves or path control points available through another API?
  4. What coordinate space does each animated transform property use?
  5. How should animated masks be evaluated to match Figma Motion exactly?
  6. Is there an official reference renderer, sample implementation, or intermediate animation format that plugin developers can use?
  7. Are there plans to expose more complete Motion data for third-party exporters such as PAG, Lottie, or other runtime formats?

A documented evaluation model—or an API that provides the final per-frame transform and mask state—would make it much easier for third-party exporters to match Figma Motion accurately.

 

https://github.com/0x1306a94/figma-motion-export-pag/tree/develop

2 replies

Celyn_L
Figmate
  • Figmate
  • July 14, 2026

Hi ​@launchd, Celyn from the Figma Community Support team here.

Thanks for taking the time to share such a detailed write-up, along with the GitHub repository for your exporter.

I've passed along all of your questions and feedback to the team for visibility, and I'll follow up here as soon as I hear back if there's any additional guidance or recommendations I can share.

Thanks again for documenting your investigation so thoroughly. We really appreciate you taking the time to share your findings 🙏


launchd
  • Author
  • New Member
  • July 14, 2026

@Celyn_L Thank you very much; I look forward to it.