Skip to main content

Shared Node Properties

Nodes support a range of properties. Some properties are universal, some are shared between node types, and some are unique to specific node types.

On this page, you can explore properties which are available on multiple nodes. Properties appear in alphabetical order, and you can see which nodes each property is supported on.

absoluteBoundingBox: Rect | null [readonly]

The bounds of the node that does not include rendered properties like drop shadows or strokes. The x and y inside this property represent the absolute position of the node on the page.


absoluteRenderBounds: Rect | null [readonly]

The actual bounds of a node accounting for drop shadows, thick strokes, and anything else that may fall outside the node's regular bounding box defined in x, y, width, and height. The x and y inside this property represent the absolute position of the node on the page. This value will be null if the node is invisible.


absoluteTransform: Transform [readonly]

The position of a node relative to its containing page as a Transform matrix.


addComponentProperty(propertyName: string, type: ComponentPropertyType, defaultValue: string | boolean | VariableAlias, options?: ComponentPropertyOptions): string

Adds a new component property to this node and returns the property name with its unique identifier suffixed. This function supports properties with type 'BOOLEAN', 'TEXT', 'INSTANCE_SWAP' or 'VARIANT'.


addDevResourceAsync(url: string, name?: string): Promise<void>

Adds a dev resource to a node. This will fail if the node already has a dev resource with the same url.

View more →


addMeasurement(start: { node: SceneNode; side: MeasurementSide }, end: { node: SceneNode; side: MeasurementSide }, options?: { offset: MeasurementOffset; freeText: string }): Measurement

Supported on:

Adds a measurement between two nodes in the current page.

Measurements are always between a start and end node. The side indicates which edge of the node to draw the measurement from.

Measurements can only go on the same axis, i.e. from side "LEFT" -> "LEFT", "LEFT" -> "RIGHT", "TOP" -> "BOTTOM" etc. But not "LEFT" -> "TOP".

See the Measurement type for usage examples.

info

This method is only available in Dev Mode. You can check the editor type of your plugin to know if the user is in Dev Mode or not:

if (figma.editorType === 'dev') {
// In Figma's Dev Mode
}

annotations: ReadonlyArray<Annotation>

Annotations on the node.

Learn more about annotations in the Help Center or see the Annotation type for usage examples.


appendChild(child: SceneNode): void

Adds a new child to the end of the children array. That is, visually on top of all other children.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this function.

View more →


appendChildAt(node: SceneNode, rowIndex: number, columnIndex: number): void

Applicable only on auto-layout frames with layoutMode set to "GRID". Appends a node to the grid at the specified row and column index.

View more →


attachedConnectors: ConnectorNode[] [readonly]

An array of ConnectorNodes that are attached to a node.


backgroundStyleId: string

DEPRECATED: Use fillStyleId instead. This property is read-only if the manifest contains "documentAccess": "dynamic-page".


backgrounds: ReadonlyArray<Paint>

DEPRECATED: Use fills instead.


blendMode: BlendMode

Blend mode of this node, as shown in the Layer panel. In addition to the blend modes that paints & effects support, the layer blend mode can also have the value PASS_THROUGH.


bottomLeftRadius: number


bottomRightRadius: number


boundVariables?: { readonly [field in VariableBindableNodeField]?: VariableAlias} & { readonly [field in VariableBindableTextField]?: VariableAlias[]} & { fills: VariableAlias[]; strokes: VariableAlias[]; effects: VariableAlias[]; layoutGrids: VariableAlias[]; componentProperties: { [propertyName: string]: VariableAlias }; textRangeFills: VariableAlias[] } [readonly]

The variables bound to a particular field on this node. Please see the Working with Variables guide for how to get and set variable bindings.


characters: string

The raw characters in the text node. Setting this property requires the font the be loaded.

View more →


children: ReadonlyArray<SceneNode> [readonly]

The list of children, sorted back-to-front. That is, the first child in the array is the bottommost layer on the screen, and the last child in the array is the topmost layer.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this property.

View more →


clearExplicitVariableModeForCollection(collection: VariableCollection): void

Clears an explicit mode for the given collection on this node

View more →


clipsContent: boolean

Whether the frame clips its contents. That is, whether layers inside the frame are visible outside the bounds of the frame.


componentPropertyDefinitions: ComponentPropertyDefinitions [readonly]

All component properties and their default values that exist on this component set. 'VARIANT' properties will also have a list of all variant options. 'BOOLEAN', 'TEXT', and 'INSTANCE_SWAP' properties will have their names suffixed by a unique identifier starting with '#', which is helpful for quickly distinguishing multiple component properties that have the same name in the Figma UI. The entire property name should be used for all Component property-related API methods and properties.

View more →


componentPropertyReferences: { [nodeProperty in 'visible' | 'characters' | 'mainComponent']?: string} | null

All component properties that are attached on this node. A node can only have componentPropertyReferences if it is a component sublayer or an instance sublayer. It will be null otherwise. The value in the key-value pair refers to the component property name as returned by componentPropertyDefinitions on the containing component, component set or main component (for instances).


constrainProportions: boolean

DEPRECATED: Use targetAspectRatio, lockAspectRatio, and unlockAspectRatio instead.

When toggled, causes the layer to keep its proportions when the user resizes it via the properties panel.


constraints: Constraints

Constraints of this node relative to its containing FrameNode, if any.

View more →


cornerRadius: number | figma.mixed

The number of pixels to round the corners of the object by.

View more →


cornerSmoothing: number

A value that lets you control how "smooth" the corners are. Ranges from 0 to 1.

View more →


counterAxisAlignContent: 'AUTO' | 'SPACE_BETWEEN'

Applicable only on auto-layout frames with layoutWrap set to "WRAP". Determines how the wrapped tracks are spaced out inside of the auto-layout frame.

View more →


counterAxisAlignItems: 'MIN' | 'MAX' | 'CENTER' | 'BASELINE'

Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames. Determines how the auto-layout frame’s children should be aligned in the counter axis direction.

View more →


counterAxisSizingMode: 'FIXED' | 'AUTO'

Applicable only on auto-layout frames. Determines whether the counter axis has a fixed length (determined by the user) or an automatic length (determined by the layout engine).

View more →


counterAxisSpacing: number | null

Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames with layoutWrap set to "WRAP". Determines the distance between wrapped tracks. The value must be positive.

View more →


dashPattern: ReadonlyArray<number>

A list of numbers specifying alternating dash and gap lengths, in pixels.


deleteCharacters(start: number, end: number): void

Remove characters in the text from start (inclusive) to end (exclusive).

View more →


deleteComponentProperty(propertyName: string): void

Deletes an existing component property on this node. This function only supports properties with type 'BOOLEAN', 'TEXT', or 'INSTANCE_SWAP'.


deleteDevResourceAsync(url: string): Promise<void>

Deletes a dev resource on a node. This will fail if the node does not have a dev resource with the same url.

View more →


deleteMeasurement(id: string): void

Supported on:

Delete a measurement.

See the Measurement type for usage examples.

info

This method is only available in Dev Mode. You can check the editor type of your plugin to know if the user is in Dev Mode or not:

if (figma.editorType === 'dev') {
// In Figma's Dev Mode
}

description: string

The plain-text annotation entered by the user for this style/component.

View more →


descriptionMarkdown: string

The rich-text annotation entered by the user for this style/component.

View more →


detachedInfo: DetachedInfo | null [readonly]

Includes the id (for local components) or key (for library components) of the component the given node was detached from, if any. If the node isn't a detached instance, it will be null. If the node is a component or instance, it will be null.


devStatus: DevStatus

Whether the node is marked ready for development or completed.

There are some restrictions on how devStatus can be set:

  • Can only be set on a node directly under a page or section
  • Cannot be set on a node that is inside another node that already has a devStatus

The documentation links for this style/component.

View more →


editComponentProperty(propertyName: string, newValue: { name: string; defaultValue: string | boolean | VariableAlias; preferredValues: InstanceSwapPreferredValue[] }): string

Modifies the name, default value, or preferred values of an existing component property on this node and returns the property name with its unique identifier suffixed.

This function supports properties with type 'BOOLEAN', 'TEXT', 'INSTANCE_SWAP', or 'VARIANT' with the following restrictions:

  • name is supported for all properties
  • defaultValue is supported for 'BOOLEAN', 'TEXT', and 'INSTANCE_SWAP' properties, but not for 'VARIANT' properties
  • preferredValues is only supported for 'INSTANCE_SWAP' properties

editDevResourceAsync(currentUrl: string, newValue: { name: string; url: string }): Promise<void>

Edits a dev resource on a node. This will fail if the node does not have a dev resource with the same url.

View more →


editMeasurement(id: string, newValue: { offset: MeasurementOffset; freeText: string }): Measurement

Supported on:

Edit a measurement’s offset.

See the Measurement type for usage examples.

info

This method is only available in Dev Mode. You can check the editor type of your plugin to know if the user is in Dev Mode or not:

if (figma.editorType === 'dev') {
// In Figma's Dev Mode
}

effectStyleId: string

The id of the EffectStyle object that the properties of this node are linked to.

If the manifest contains"documentAccess": "dynamic-page", this property is read-only. Use setEffectStyleIdAsync to update the style.


effects: ReadonlyArray<Effect>

Array of effects. See Effect type. For help on how to change this value, see Editing Properties.


expanded: boolean

Whether this container is shown as expanded in the layers panel.


explicitVariableModes: { [collectionId: string]: string }

The explicitly set modes for this node. For SceneNodes, represents a subset of resolvedVariableModes. Note that this does not include workspace and team-default modes.


exportAsync(settings?: ExportSettings): Promise<Uint8Array>

exportAsync(settings: ExportSettingsSVGString): Promise<string>

exportAsync(settings: ExportSettingsREST): Promise<Object>

Exports the node as an encoded image.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this function.

View more →


exportSettings: ReadonlyArray<ExportSettings>

List of export settings stored on the node. For help on how to change this value, see Editing Properties.


fillGeometry: VectorPaths [readonly]

An array of paths representing the object fills relative to the node.


fillStyleId: string | figma.mixed

The id of the PaintStyle object that the fills property of this node is linked to.

If the manifest contains"documentAccess": "dynamic-page", this property is read-only. Use setFillStyleIdAsync to update the style.

View more →


fills: ReadonlyArray<Paint> | figma.mixed

The paints used to fill the area of the shape. For help on how to change this value, see Editing Properties.

View more →


findAll(callback?: (node: SceneNode) => boolean): SceneNode[]

Searches this entire subtree (this node's children, its children's children, etc). Returns all nodes for which callback returns true.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this function.

View more →


findAllWithCriteria<T extends NodeType[]>(criteria: FindAllCriteria<T>): Array<{ type: T[number] } & SceneNode>

Searches this entire subtree (this node's children, its children's children, etc). Returns all nodes that satisfy all of specified criteria.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this function.

View more →


findChild(callback: (node: SceneNode) => boolean): SceneNode | null

Searches the immediate children of this node (i.e. not including the children's children). Returns the first node for which callback returns true.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this function.

View more →


findChildren(callback?: (node: SceneNode) => boolean): SceneNode[]

Searches the immediate children of this node (i.e. not including the children's children). Returns all nodes for which callback returns true.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this function.

View more →


findOne(callback: (node: SceneNode) => boolean): SceneNode | null

Searches this entire subtree (this node's children, its children's children, etc). Returns the first node for which callback returns true.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this function.

View more →


findWidgetNodesByWidgetId(widgetId: string): Array<WidgetNode>

Searches this entire subtree (this node's children, its children's children, etc). Returns all widget nodes that match the provided widgetId.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this function.

View more →


fontName: FontName | figma.mixed

The font family (e.g. "Inter"), and font style (e.g. "Regular"). Setting this property to a different value requires the new font to be loaded.


fontSize: number | figma.mixed

The size of the font. Has minimum value of 1.


fontWeight: number | figma.mixed [readonly]

The weight of the font (e.g. 400 for "Regular", 700 for "Bold").


getCSSAsync(): Promise<{ [key: string]: string }>

Resolves to a JSON object of CSS properties of the node. This is the same CSS that Figma shows in the inspect panel and is helpful if you are building a plugin for code generation.


getDevResourcesAsync(options?: { includeChildren: boolean }): Promise<DevResourceWithNodeId[]>

Gets all of the dev resources on a node. This includes any inherited dev resources from components and component sets.

View more →


getMeasurements(): Measurement[]

Supported on:

Get all measurements in the current page.

Learn more about measurements in the Help Center.


getMeasurementsForNode(node: SceneNode): Measurement[]

Supported on:

Get all measurements pointing to a node in the current page. This includes all measurements whose start or end node is the node passed in.


getPluginData(key: string): string

Retrieves custom information that was stored on this node or style using setPluginData. If there is no data stored for the provided key, an empty string is returned.


getPluginDataKeys(): string[]

Retrieves a list of all keys stored on this node or style using using setPluginData. This enables iterating through all data stored privately on a node or style by your plugin.


getPublishStatusAsync(): Promise<PublishStatus>

Gets the status of this style/component in the team library.


getRangeAllFontNames(start: number, end: number): FontName[]

Get the fontNames from characters in range start (inclusive) to end (exclusive).


getRangeBoundVariable(start: number, end: number, field: VariableBindableTextField): VariableAlias | null | figma.mixed

Get the boundVariable for a given field from characters in range start (inclusive) to end (exclusive).


getRangeFillStyleId(start: number, end: number): string | figma.mixed

Get the fillStyleId from characters in range start (inclusive) to end (exclusive).


getRangeFills(start: number, end: number): Paint[] | figma.mixed

Get the fills from characters in range start (inclusive) to end (exclusive).


getRangeFontName(start: number, end: number): FontName | figma.mixed

Get the fontName from characters in range start (inclusive) to end (exclusive).


getRangeFontSize(start: number, end: number): number | figma.mixed

Get the fontSize from characters in range start (inclusive) to end (exclusive).


getRangeFontWeight(start: number, end: number): number | figma.mixed

Get the fontWeight from characters in range start (inclusive) to end (exclusive).


Get the hyperlink from characters in range start (inclusive) to end (exclusive). Returns a HyperlinkTarget if the range contains exactly one hyperlink, or null if the range contains none.


getRangeIndentation(start: number, end: number): number | figma.mixed

Get the indentation from characters in range start (inclusive) to end (exclusive).


getRangeLetterSpacing(start: number, end: number): LetterSpacing | figma.mixed

Get the letterSpacing from characters in range start (inclusive) to end (exclusive).


getRangeLineHeight(start: number, end: number): LineHeight | figma.mixed

Get the lineHeight from characters in range start (inclusive) to end (exclusive).


getRangeListOptions(start: number, end: number): TextListOptions | figma.mixed

Get the textListOptions from characters in range start (inclusive) to end (exclusive). Returns a TextListOptions


getRangeListSpacing(start: number, end: number): number | figma.mixed

Get the listSpacing from characters in range start (inclusive) to end (exclusive).


getRangeOpenTypeFeatures(start: number, end: number): { readonly [feature in OpenTypeFeature]: boolean} | figma.mixed

Get the openTypeFeatures from characters in range start (inclusive) to end (exclusive).


getRangeParagraphIndent(start: number, end: number): number | figma.mixed

Get the paragraphIndent for a paragraph containing characters in range start (inclusive) to end (exclusive).


getRangeParagraphSpacing(start: number, end: number): number | figma.mixed

Get the paragraphSpacing for a paragraph containing characters in range start (inclusive) to end (exclusive).


getRangeTextCase(start: number, end: number): TextCase | figma.mixed

Get the textCase from characters in range start (inclusive) to end (exclusive).


getRangeTextDecoration(start: number, end: number): TextDecoration | figma.mixed

Get the textDecoration from characters in range start (inclusive) to end (exclusive).


getRangeTextDecorationColor(start: number, end: number): TextDecorationColor | figma.mixed | null

Get the textDecorationColor from characters in range start (inclusive) to end (exclusive).


getRangeTextDecorationOffset(start: number, end: number): TextDecorationOffset | figma.mixed | null

Get the textDecorationOffset from characters in range start (inclusive) to end (exclusive).


getRangeTextDecorationSkipInk(start: number, end: number): boolean | figma.mixed | null

Get the textDecorationSkipInk from characters in range start (inclusive) to end (exclusive).


getRangeTextDecorationStyle(start: number, end: number): TextDecorationStyle | figma.mixed | null

Get the textDecorationStyle from characters in range start (inclusive) to end (exclusive).


getRangeTextDecorationThickness(start: number, end: number): TextDecorationThickness | figma.mixed | null

Get the textDecorationThickness from characters in range start (inclusive) to end (exclusive).


getRangeTextStyleId(start: number, end: number): string | figma.mixed

Get the textStyleId from characters in range start (inclusive) to end (exclusive).


getRelaunchData(): { [command: string]: string }

Retreives the reluanch data stored on this node using setRelaunchData


getSharedPluginData(namespace: string, key: string): string

Retrieves custom information that was stored on this node or style using setSharedPluginData. If there is no data stored for the provided namespace and key, an empty string is returned.


getSharedPluginDataKeys(namespace: string): string[]

Retrieves a list of all keys stored on this node or style using setSharedPluginData. This enables iterating through all data stored in a given namespace.


getStyledTextSegments<StyledTextSegmentFields extends (keyof Omit< StyledTextSegment, 'characters' | 'start' | 'end' >)[]>(fields: StyledTextSegmentFields, start?: number, end?: number): Array<Pick<StyledTextSegment, StyledTextSegmentFields[number] | 'characters' | 'start' | 'end'>>

Get text segments along with the desired text properties (font size, text case, etc...)

View more →


getTopLevelFrame(): FrameNode | undefined

Returns the top-most frame that contains this node. If the node is not inside a frame, this will return undefined.

info

This function will only work in Figma Design and will throw an error if called in FigJam or Slides.


gridChildHorizontalAlign: 'MIN' | 'CENTER' | 'MAX' | 'AUTO'

Applicable only on direct children of grid auto-layout frames. Controls the horizontal alignment of the node within its grid cell.

View more →


gridChildVerticalAlign: 'MIN' | 'CENTER' | 'MAX' | 'AUTO'

Applicable only on direct children of grid auto-layout frames. Controls the vertical alignment of the node within its grid cell.

View more →


gridColumnAnchorIndex: number [readonly]

Applicable only on direct children of grid auto-layout frames. Determines the starting column index for this node within the parent grid.

View more →


gridColumnCount: number

Applicable only on auto-layout frames with layoutMode set to "GRID". Determines the number of columns in the grid.

View more →


gridColumnGap: number

Applicable only on auto-layout frames with layoutMode set to "GRID". Determines the gap between columns in the grid.

View more →


gridColumnSizes: Array<GridTrackSize>

Only applicable on auto-layout frames with layoutMode set to "GRID". Returns an array of GridTrackSize objects representing the columns in the grid in order.

View more →


gridColumnSpan: number

Applicable only on direct children of grid auto-layout frames. Determines the number of columns this node will span within the parent grid.

View more →


gridRowAnchorIndex: number [readonly]

Applicable only on direct children of grid auto-layout frames. Determines the starting row index for this node within the parent grid.

View more →


gridRowCount: number

Applicable only on auto-layout frames with layoutMode set to "GRID". Determines the number of rows in the grid.

View more →


gridRowGap: number

Applicable only on auto-layout frames with layoutMode set to "GRID". Determines the gap between rows in the grid.

View more →


gridRowSizes: Array<GridTrackSize>

Only applicable on auto-layout frames with layoutMode set to "GRID". Returns an array of GridTrackSize objects representing the rows in the grid in order.

View more →


gridRowSpan: number

Applicable only on direct children of grid auto-layout frames. Determines the number of rows this node will span within the parent grid.

View more →


gridStyleId: string

The id of the GridStyle object that the layoutGrids property of this node is linked to.

If the manifest contains"documentAccess": "dynamic-page", this property is read-only. Use setGridStyleIdAsync to update the style.


guides: ReadonlyArray<Guide>

Array of Guide used inside the frame. Note that each frame has its own guides, separate from the canvas-wide guides. For help on how to change this value, see Editing Properties.


handleMirroring: HandleMirroring | figma.mixed

Whether the vector handles are mirrored or independent.


hangingList: boolean

Whether numbered list counters or unordered list bullets hang outside the text box.


hangingPunctuation: boolean

Whether punctuation, like quotation marks, hangs outside the text box.


hasMissingFont: boolean [readonly]

Returns whether the text uses a font currently not available to the document.


height: number [readonly]

The height of the node. Use a resizing method to change this value.


horizontalPadding: number

DEPRECATED: Use paddingLeft and paddingRight instead.


A HyperlinkTarget if the text node has exactly one hyperlink, or null if the node has none.


id: string [readonly]

The unique identifier of a node. For example, 1:3. The node id can be used with methods such as figma.getNodeByIdAsync, but plugins typically don't need to use this since you can usually just access a node directly.

View more →


inferredAutoLayout: InferredAutoLayoutResult | null

Returns inferred auto layout properties of a FrameNode if applicable. Otherwise, returns null.

This is what Figma uses to power Dev Mode’s code snippets feature, as it makes sure the generated code is more useful.

info

This method uses a heuristic to infer the auto layout properties.


inferredVariables?: { readonly [field in VariableBindableNodeField]?: VariableAlias[]} & { fills: VariableAlias[][]; strokes: VariableAlias[][] } [readonly]

An object, keyed by field, returning any variables that match the raw value of that field for the mode of the node (or the default variable value if no mode is set)

View more →


insertCharacters(start: number, characters: string, useStyle?: 'BEFORE' | 'AFTER'): void

Insert characters at index start in the text.

View more →


insertChild(index: number, child: SceneNode): void

Adds a new child at the specified index in the children array.

If the manifest contains "documentAccess": "dynamic-page", and the node is a PageNode, you must first call loadAsync to access this function.

View more →


isAsset: boolean [readonly]

Returns true if Figma detects that a node is an asset, otherwise returns false. An asset is is either an icon or a raster image.

This property is useful if you're building a plugin for code generation.

info

This property uses a set of heuristics to determine if a node is an asset. At a high level an icon is a small vector graphic and an image is a node with an image fill.


isMask: boolean

Whether this node is a mask. A mask node masks its subsequent siblings.

View more →


itemReverseZIndex: boolean

Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames. Determines the canvas stacking order of layers in this frame. When true, the first layer will be draw on top.

View more →


itemSpacing: number

Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames. Determines distance between children of the frame.

View more →


key: string [readonly]

The key to use with figma.importComponentByKeyAsync, figma.importComponentSetByKeyAsync and figma.importStyleByKeyAsync. Note that while this key is present on local and published components, you can only import components that are already published.


layoutAlign: 'MIN' | 'CENTER' | 'MAX' | 'STRETCH' | 'INHERIT'

Applicable only on direct children of auto-layout frames. Determines if the layer should stretch along the parent’s counter axis. Defaults to “INHERIT”.

View more →


layoutGrids: ReadonlyArray<LayoutGrid>

Array of LayoutGrid objects used as layout grids on this node. For help on how to change this value, see Editing Properties.


layoutGrow: number

This property is applicable only for direct children of auto-layout frames. Determines whether a layer should stretch along the parent’s primary axis. 0 corresponds to a fixed size and 1 corresponds to stretch.

View more →


layoutMode: 'NONE' | 'HORIZONTAL' | 'VERTICAL' | 'GRID'

Determines whether this layer uses auto-layout to position its children. Defaults to "NONE".

View more →


layoutPositioning: 'AUTO' | 'ABSOLUTE'

This property is applicable only for direct children of auto-layout frames. Determines whether a layer's size and position should be dermined by auto-layout settings or manually adjustable.

View more →


layoutSizingHorizontal: 'FIXED' | 'HUG' | 'FILL'

Applicable only on auto-layout frames, their children, and text nodes. This is a shorthand for setting layoutGrow, layoutAlign, primaryAxisSizingMode, and counterAxisSizingMode. This field maps directly to the "Horizontal sizing" dropdown in the Figma UI.

View more →


layoutSizingVertical: 'FIXED' | 'HUG' | 'FILL'

Applicable only on auto-layout frames, their children, and text nodes. This is a shorthand for setting layoutGrow, layoutAlign, primaryAxisSizingMode, and counterAxisSizingMode. This field maps directly to the "Vertical sizing" dropdown in the Figma UI.

View more →


layoutWrap: 'NO_WRAP' | 'WRAP'

Determines whether this layer should use wrapping auto-layout. Defaults to "NO_WRAP".

View more →


leadingTrim: LeadingTrim | figma.mixed

The removal of the vertical space above and below text glyphs. Requires the font to be loaded.


letterSpacing: LetterSpacing | figma.mixed

The spacing between the individual characters. Requires the font to be loaded.


lineHeight: LineHeight | figma.mixed

The spacing between the lines in a paragraph of text. Requires the font to be loaded.


listSpacing: number

The vertical distance between lines of a list.


lockAspectRatio(): void

Locks the node's targetAspectRatio to the current ratio of its width and height.


locked: boolean

Whether the node is locked or not, preventing certain user interactions on the canvas such as selecting and dragging. Does not affect a plugin's ability to write to those properties.

View more →


maskType: MaskType

Type of masking to use if this node is a mask. Defaults to "ALPHA". You must check isMask to verify that this is a mask; changing maskType does not automatically turn on isMask, and a node that is not a mask can still have a maskType.


maxHeight: number | null

Applicable only to auto-layout frames and their direct children. Value must be positive. Set to null to remove maxHeight.


maxWidth: number | null

Applicable only to auto-layout frames and their direct children. Value must be positive. Set to null to remove maxWidth.


minHeight: number | null

Applicable only to auto-layout frames and their direct children. Value must be positive. Set to null to remove minHeight.


minWidth: number | null

Applicable only to auto-layout frames and their direct children. Value must be positive. Set to null to remove minWidth.


name: string

The name of the layer that appears in the layers panel. Calling figma.root.name will return the name, read-only, of the current file.

View more →


numberOfFixedChildren: number

Determines which children of the frame are fixed children in a scrolling frame.

View more →


opacity: number

Opacity of the node, as shown in the Layer panel. Must be between 0 and 1.


openTypeFeatures: { readonly [feature in OpenTypeFeature]: boolean} | figma.mixed [readonly]

OpenType features that have been explicitly enabled or disabled.

View more →


outlineStroke(): VectorNode | null

This method performs an action similar to using the "Outline Stroke" function in the editor from the right-click menu. However, this method creates and returns a new node while leaving the original intact. Returns null if the node has no strokes.


overflowDirection: OverflowDirection

Determines whether a frame will scroll in presentation mode when the frame contains content that exceed the frame's bounds. Reflects the value shown in "Overflow Behavior" in the Prototype tab.

View more →


overlayBackground: OverlayBackground [readonly]

How this frame obscures the content under it when opened as an overlay.


overlayBackgroundInteraction: OverlayBackgroundInteraction [readonly]

How the user can interact with the content under this frame when opened as an overlay.


overlayPositionType: OverlayPositionType [readonly]

How this frame is positioned when opened as an overlay.


paddingBottom: number

Applicable only on auto-layout frames. Determines the bottom padding between the border of the frame and its children.


paddingLeft: number

Applicable only on auto-layout frames. Determines the left padding between the border of the frame and its children.


paddingRight: number

Applicable only on auto-layout frames. Determines the right padding between the border of the frame and its children.


paddingTop: number

Applicable only on auto-layout frames. Determines the top padding between the border of the frame and its children.


paragraphIndent: number

The indentation of paragraphs (offset of the first line from the left). Setting this property requires the font the be loaded.


paragraphSpacing: number

The vertical distance between paragraphs. Setting this property requires the font to be loaded.


parent: (BaseNode & ChildrenMixin) | null [readonly]

Returns the parent of this node, if any. This property is not meant to be directly edited. To reparent, see appendChild.

View more →


primaryAxisAlignItems: 'MIN' | 'MAX' | 'CENTER' | 'SPACE_BETWEEN'

Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames. Determines how the auto-layout frame’s children should be aligned in the primary axis direction.

View more →


primaryAxisSizingMode: 'FIXED' | 'AUTO'

Applicable only on auto-layout frames. Determines whether the primary axis has a fixed length (determined by the user) or an automatic length (determined by the layout engine).

View more →


reactions: ReadonlyArray<Reaction>

List of Reactions on this node, which includes both the method of interaction with this node in a prototype, and the behavior of that interaction. For help on how to change this value, see Editing Properties.

If the manifest contains"documentAccess": "dynamic-page", this property is read-only. Use setReactionsAsync to update the value.

View more →


relativeTransform: Transform

The position of a node relative to its containing parent as a Transform matrix. Not used for scaling, see width and height instead. Read the details page to understand the nuances of this property.

View more →


remote: boolean [readonly]

Whether this style/component is a remote style/component that doesn't live in the file (i.e. is from the team library). Remote components are read-only: attempts to change their properties will throw.


remove(): void

Removes this node and all of its children from the document.

View more →


removed: boolean [readonly]

Returns true if this node has been removed since it was first accessed. If your plugin stays open for a while and stores references to nodes, you should write your code defensively and check that the nodes haven't been removed by the user.

View more →


rescale(scale: number): void

Rescales the node. This API function is the equivalent of using the Scale Tool from the toolbar.

View more →


resize(width: number, height: number): void

Resizes the node. If the node contains children with constraints, it applies those constraints during resizing. If the parent has auto-layout, causes the parent to be resized.

View more →


resizeWithoutConstraints(width: number, height: number): void

Resizes the node. Children of the node are never resized, even if those children have constraints. If the parent has auto-layout, causes the parent to be resized (this constraint cannot be ignored).

View more →


resolvedVariableModes: { [collectionId: string]: string }

The resolved mode for this node for each variable collection in this file.

View more →


rotation: number

The rotation of the node in degrees. Returns values from -180 to 180. Identical to Math.atan2(-m10, m00) in the relativeTransform matrix. When setting rotation, it will also set m00, m01, m10, m11.

View more →


setBoundVariable(field: VariableBindableNodeField | VariableBindableTextField, variable: Variable | null): void

Binds the provided field on this node to the given variable. Please see the Working with Variables guide for how to get and set variable bindings.

If null is provided as the variable, the given field will be unbound from any variables.

View more →


setDevResourcePreviewAsync(url: string, preview: PlainTextElement): Promise<void>

caution

This is a private API only available to Figma partners


setEffectStyleIdAsync(styleId: string): Promise<void>

Set the EffectStyle that the properties of this node are linked to.


setExplicitVariableModeForCollection(collection: VariableCollection, modeId: string): void

Sets an explicit mode for the given collection on this node

View more →


setFillStyleIdAsync(styleId: string): Promise<void>

Sets the PaintStyle that the fills property of this node is linked to.


setGridChildPosition(rowIndex: number, columnIndex: number): void

Applicable only on direct children of 'GRID' auto-layout frames. Sets the position of the node

View more →


setGridStyleIdAsync(styleId: string): Promise<void>

Set the GridStyle that the layoutGrids property of this node is linked to.


setPluginData(key: string, value: string): void

Lets you store custom information on any node or style, private to your plugin. The total size of your entry (pluginId, key, value) cannot exceed 100 kB.

View more →


setRangeBoundVariable(start: number, end: number, field: VariableBindableTextField, variable: Variable | null): void

Set the boundVariable for a given field from characters in range start (inclusive) to end (exclusive). Requires any new fonts to be loaded.


setRangeFillStyleId(start: number, end: number, value: string): void

DEPRECATED: Use setRangeFillStyleIdAsync instead. This function will throw an exception if the plugin manifest contains "documentAccess": "dynamic-page".

Set the fillStyleId from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeFillStyleIdAsync(start: number, end: number, styleId: string): Promise<void>

Set the provided PaintStyle as a fill to characters in range start (inclusive) to end (exclusive).


setRangeFills(start: number, end: number, value: Paint[]): void

Set the fills from characters in range start (inclusive) to end (exclusive). Requires font to be loaded.

Can be bound to color variables by using setBoundVariableForPaint on one or more of the provided Paints


setRangeFontName(start: number, end: number, value: FontName): void

Set the fontName from characters in range start (inclusive) to end (exclusive). Requires the new font to be loaded.


setRangeFontSize(start: number, end: number, value: number): void

Set the fontSize from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


Set the hyperlink from characters in range start (inclusive) to end (exclusive). Removes the hyperlink in range if value is null.


setRangeIndentation(start: number, end: number, value: number): void

Set the indentation from characters in range start (inclusive) to end (exclusive).


setRangeLetterSpacing(start: number, end: number, value: LetterSpacing): void

Set the letterSpacing from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeLineHeight(start: number, end: number, value: LineHeight): void

Set the lineHeight from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeListOptions(start: number, end: number, value: TextListOptions): void

Set the textListOptions from characters in range start (inclusive) to end (exclusive).


setRangeListSpacing(start: number, end: number, value: number): void

Set the listSpacing from characters in range start (inclusive) to end (exclusive).


setRangeParagraphIndent(start: number, end: number, value: number): void

Set the paragraphIndent for a paragraph containing characters in range start (inclusive) to end (exclusive).


setRangeParagraphSpacing(start: number, end: number, value: number): void

Set the paragraphSpacing for a paragraph containing characters in range start (inclusive) to end (exclusive).


setRangeTextCase(start: number, end: number, value: TextCase): void

Set the textCase from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeTextDecoration(start: number, end: number, value: TextDecoration): void

Set the textDecoration from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeTextDecorationColor(start: number, end: number, value: TextDecorationColor): void

Set the textDecorationColor from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeTextDecorationOffset(start: number, end: number, value: TextDecorationOffset): void

Set the textDecorationOffset from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeTextDecorationSkipInk(start: number, end: number, value: boolean): void

Set the textDecorationSkipInk from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeTextDecorationStyle(start: number, end: number, value: TextDecorationStyle): void

Set the textDecorationStyle from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeTextDecorationThickness(start: number, end: number, value: TextDecorationThickness): void

Set the textDecorationThickness from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeTextStyleId(start: number, end: number, value: string): void

DEPRECATED: Use setRangeTextStyleIdAsync instead. This function will throw an exception if the plugin manifest contains "documentAccess": "dynamic-page".

Set the textStyleId from characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setRangeTextStyleIdAsync(start: number, end: number, styleId: string): Promise<void>

Set the provided TextStyle to characters in range start (inclusive) to end (exclusive). Requires the font to be loaded.


setReactionsAsync(reactions: Array<Reaction>): Promise<void>

Updates the reactions on this node. See reactions for a usage example.


setRelaunchData(data: { [command: string]: string }): void

Sets state on the node to show a button and description when the node is selected. Clears the button and description when relaunchData is {}.

info

In Figma and Dev Mode, this shows up in the properties panel. In FigJam, this shows up in the property menu. See here for examples.

View more →


setSharedPluginData(namespace: string, key: string, value: string): void

Lets you store custom information on any node or style, public to all plugins. The total size of your entry (namespace, key, value) cannot exceed 100 kB.

View more →


setStrokeStyleIdAsync(styleId: string): Promise<void>

Set the PaintStyle that the strokes property of this node is linked to.


setVectorNetworkAsync(vectorNetwork: VectorNetwork): Promise<void>

Updates the vector network.


strokeAlign: 'CENTER' | 'INSIDE' | 'OUTSIDE'

The alignment of the stroke with respect to the boundaries of the shape.

View more →


strokeBottomWeight: number

Determines the bottom stroke weight on a rectangle node or frame-like node. Must be non-negative and can be fractional.


strokeCap: StrokeCap | figma.mixed

The decoration applied to vertices which have only one connected segment.

View more →


strokeGeometry: VectorPaths [readonly]

An array of paths representing the object strokes relative to the node. StrokeGeometry is always from the center regardless of the nodes strokeAlign.


strokeJoin: StrokeJoin | figma.mixed

The decoration applied to vertices which have two or more connected segments.

View more →


strokeLeftWeight: number

Determines the left stroke weight on a rectangle node or frame-like node. Must be non-negative and can be fractional.


strokeMiterLimit: number

The miter limit on the stroke. This is the same as the SVG miter limit.


strokeRightWeight: number

Determines the right stroke weight on a rectangle node or frame-like node. Must be non-negative and can be fractional.


strokeStyleId: string

The id of the PaintStyle object that the strokes property of this node is linked to.

If the manifest contains"documentAccess": "dynamic-page", this property is read-only. Use setStrokeStyleIdAsync to update the style.


strokeTopWeight: number

Determines the top stroke weight on a rectangle node or frame-like node. Must be non-negative and can be fractional.


strokeWeight: number | figma.mixed

The thickness of the stroke, in pixels. This value must be non-negative and can be fractional.

caution

For rectangle nodes or frame-like nodes using different individual stroke weights, this property will return figma.mixed.

info

For rectangle nodes or frame-like nodes, individual stroke weights can be set for each side using the following properties:


strokes: ReadonlyArray<Paint>

The paints used to fill the area of the shape's strokes. For help on how to change this value, see Editing Properties.


strokesIncludedInLayout: boolean

Applicable only on auto-layout frames. Determines whether strokes are included in layout calculations. When true, auto-layout frames behave like css box-sizing: border-box.

View more →


stuckNodes: SceneNode[] [readonly]

An array of nodes that are "stuck" to this node. In FigJam, stamps, highlights, and some widgets can "stick" to other nodes if they are dragged on top of another node.

View more →


stuckTo: SceneNode | null

If this node is stuck to another node this property returns that node or null.

View more →


targetAspectRatio: Vector | null [readonly]

When toggled, causes the layer to keep its proportions when the user resizes it via auto layout, constraints, the properties panel, or on-canvas. If not set, the node does NOT resize toward a specific targetAspectRatio.

View more →


textCase: TextCase | figma.mixed

Overrides the case of the raw characters in the text node. Requires the font to be loaded.


textDecoration: TextDecoration | figma.mixed

Whether the text is underlined or has a strikethrough. Requires the font to be loaded.


textDecorationColor: TextDecorationColor | figma.mixed | null

The text decoration color. If the text is not underlined, this value will be null. Requires the font to be loaded.


textDecorationOffset: TextDecorationOffset | figma.mixed | null

The text decoration offset. If the text is not underlined, this value will be null. Requires the font to be loaded.


textDecorationSkipInk: boolean | figma.mixed | null

Whether the text decoration skips descenders. If the text is not underlined, this value will be null. Requires the font to be loaded.


textDecorationStyle: TextDecorationStyle | figma.mixed | null

The text decoration style (e.g. "SOLID"). If the text is not underlined, this value will be null. Requires the font to be loaded.


textDecorationThickness: TextDecorationThickness | figma.mixed | null

The text decoration thickness. If the text is not underlined, this value will be null. Requires the font to be loaded.


toString(): string

Returns a string representation of the node. For debugging purposes only, do not rely on the exact output of this string in production code.

View more →


topLeftRadius: number


topRightRadius: number


unlockAspectRatio(): void

Unlocks the node's targetAspectRatio.


variantProperties: { [property: string]: string } | null [readonly]

DEPRECATED: Use componentProperties instead.

Variant properties and values for this node. Is null for nodes that are not variants.

View more →


vectorNetwork: VectorNetwork

Exposes a complete, but more complex representation of vectors as a network of edges between vectices. See VectorNetwork.

If the manifest contains"documentAccess": "dynamic-page", this property is read-only. Use setVectorNetworkAsync to update the value.


vectorPaths: VectorPaths

Exposes a simple, but incomplete representation of vectors as path. See VectorPaths


verticalPadding: number

DEPRECATED: Use paddingTop and paddingBottom instead.


visible: boolean

Whether the node is visible or not. Does not affect a plugin's ability to access the node.

View more →


width: number [readonly]

The width of the node. Use a resizing method to change this value.


x: number

The position of the node. Identical to relativeTransform[0][2].

View more →


y: number

The position of the node. Identical to relativeTransform[1][2].

View more →