Skip to main content

Version 1, Update 139

Author composed color variables

A composed color preserves the relationship between a color and a separately authored opacity value or variable instead of using a flat RGBA value. Plugins can now read and create composed color variables using VariableComposedColor. The new COLOR_OPACITY variable scope limits float variables to only show in color opacity pickers.

See Authoring a composed color variable for a complete example.

Version 1, Update 138

Variable fonts

The Plugin API now supports variable fonts. Reading FontName on a variable font includes variationSettings with every OpenType axis the family defines. Pass those values when setting a font to override specific axes; omitted axes keep the named instance's defaults.

You can omit style when loading or applying a font. loadFontAsync({ family }) loads every style of the family. Setting a font without style lets Figma pick the named instance that best matches variationSettings.

New types

  • FontVariationSettings: Axis values keyed by 4-character OpenType tag, for example { wght: 550, slnt: -10 }.
  • FontNameInput: A font to apply where style is optional. Reads always return a fully populated FontName.

New methods

Updated types

  • FontName: Added optional variationSettings. Present when reading a variable font; omitted for static fonts.

Updated properties and methods

Version 1, Update 137

New primary axis alignment values

primaryAxisAlignItems now supports 'SPACE_EVENLY' and 'SPACE_AROUND' alignment. 'SPACE_EVENLY' distributes children with equal gaps before the first child, in between each pair of children, and after the last child. 'SPACE_AROUND' distributes children with equal gaps between each pair of children, and half that gap before the first and after the last child.

Updated types

Version 1, Update 136

Typings correction for getCSSAsync

Restored BaseNodeMixin.getCSSAsync to the public Plugin API type definitions. The method remained available at runtime; it had been unintentionally omitted from the generated typings.

Version 1, Update 135

Typings maintenance

This release includes type definition maintenance with no changes to the public Plugin API or runtime behavior.

Version 1, Update 134

textWrapStyle

textWrapStyle is a new paragraph-level property on TextNode that controls how text wraps within each paragraph. Pair it with getRangeTextWrapStyle and setRangeTextWrapStyle to get and set the value on character ranges, and read or write it via TextStyle to apply it across a saved text style.

New types

  • TextWrapStyle: 'AUTO' (default), 'BALANCE' (equalized line lengths), or 'PRETTY' (fewer orphaned words).

New properties and methods

Version 1, Update 132

Read the Motion timeline playhead position

The new figma.motion.playheadPosition property returns the current playhead position of the active Motion timeline in seconds. It returns undefined when there is no active Motion timeline in the editor.

Version 1, Update 131

Video export

exportAsync can now export a top-level frame with animated content as video. Pass one of the new export settings types to receive a Uint8Array of the encoded file. Video export is only available when running in Figma.

New types

  • ExportSettingsMP4: Export an animated top-level frame as an MP4. Supports fps, a quality preset, and a size constraint.
  • ExportSettingsGIF: Export an animated top-level frame as a GIF. Supports fps, loopCount, and a size constraint.
  • ExportSettingsWEBM: Export an animated top-level frame as a WebM. Supports fps, a quality preset, and a size constraint.

Updated methods

  • exportAsync(): Added an overload accepting ExportSettingsMP4 | ExportSettingsGIF | ExportSettingsWEBM.

Version 1, Update 130

Motion support in the Plugin API

You can now use the Plugin API to read and update Motion animation data, including animation styles, timelines, animations, and manual keyframe tracks.

New methods

New properties

  • animationStyles: Read the Motion animation styles currently applied to a node.
  • animations: Read all Motion animation keyframes on a node, including keyframes created by animation styles and manual keyframe tracks.
  • manualKeyframeTracks: Read the manual Motion keyframe tracks bound to a node.
  • timelines: Read the Motion timelines that contain a node.

Shaders in the Plugin API

You can now use the Plugin API to discover, import, and apply shaders.

New methods

  • figma.listAvailableShaders(): List every shader available to the current file — shaders already in the file, shaders from subscribed libraries, and the user's owned shaders.
  • figma.importShaderById(): Materialize a shader into the current file so it can be applied.

New types