Skip to content

Releases: figma/code-connect

v1.4.9

Choose a tag to compare

@mina-asham mina-asham released this 06 Jul 11:16

Fixed

General

  • Fixed parser invocation failing when a path or argument contained a space. This affected the Swift parser (Xcode project / Swift package paths), the Compose parser (Gradle wrapper paths), and the custom parser (any user-provided parserCommand referencing a path with spaces).

Template files

  • Fixed template-only projects unnecessarily building and running a native parser. When every Code Connect file is a parserless template (.figma.ts/.figma.js), the CLI no longer invokes the Swift or Compose parser — which is slow at best and can fail outright (for example a Swift package targeting macOS 12 whose Figma dependency requires macOS 13, producing "the library '...' requires macos 12.0, but depends on the product 'Figma' which requires macos 13.0"). Projects that also contain native source files are unaffected and still run the parser.

Swift

  • Raised the supported swift-syntax upper bound to allow the 603.x release. Previously the cap below 603 could silently downgrade swift-syntax in projects that depend on both Code Connect and swift-syntax (directly or transitively) on a Swift 6.3 toolchain. Older toolchains remain supported.

Features

General

  • Added @figma/code-connect/figma-types-no-require, a variant of the template type definitions for projects that have @types/node installed. The default @figma/code-connect/figma-types entry declares a global require (so const figma = require('figma') works without @types/node), but that declaration overrides Node's own require type and causes errors like Property 'resolve' does not exist on require.resolve(...) elsewhere in projects that use @types/node. Such projects can now use "@figma/code-connect/figma-types-no-require" in their types array instead, adding it to their main tsconfig.json without a separate config. The default entry is unchanged, so no existing setup needs to change.

Template files

  • Augmented the getSlot API: getSlot('SlotName') still renders the same way, and the returned value now also exposes connectedInstances (the connected instances directly in the slot). This lets you render a slot's connected children inline. For example getSlot('body').connectedInstances.map((c) => c.executeTemplate().example).

React & HTML

  • Augmented the figma.slot API: figma.slot('SlotName') still maps the slot the same way, and you can now also write figma.slot('SlotName').connectedInstances in a props object to render the slot's code-connected instances inline. For example props: { content: figma.slot('Content').connectedInstances }.

Code Connect 1.4.8

Choose a tag to compare

@slees-figma slees-figma released this 08 Jun 16:12

Fixed

General

  • Fixed browser compatibility issues where importing @figma/code-connect in Storybook or webpack environments would fail with "Can't resolve 'child_process'" or "Console is not a constructor" errors. Node.js-only modules (child_process, console) are now imported dynamically only when needed by CLI commands, making the package safe to use in browser environments.

Template files

  • Fixed template projects failing to publish or parse when Code Connect could not infer a React, HTML, Swift, or Compose parser. The CLI now proceeds without a parser and uses the default template-file globs.
  • Fixed a "getInstanceSwap(...)?.executeTemplate is not a function" error that could break a template when getInstanceSwap('prop') referenced an instance-swap property that isn't present on the selected node (for example a property that is conditionally hidden by a boolean). The missing property now renders an inline error, consistent with the other accessors, instead of failing the whole template.
  • Fixed migrated text-layer references (from the React/HTML figma.textContent('...') helper) producing a TypeScript error and silently rendering nothing when the layer was missing. Migration now preserves the original behavior — the text renders when the layer is found, and a clear error is shown when it isn't.

Features

Template files

  • The figma connect migrate command now uses the same --dir and --file filtering behavior as publish, parse, and unpublish. The migrate-only positional glob argument has been removed.
  • The figma connect migrate command can now migrate compatible large source files into batch template files. Files with 10 or more Code Connect docs are attempted automatically, --batch all forces a batch attempt, and --batch none disables batch migration.

Code Connect 1.4.7

Choose a tag to compare

@islobodiuk-figma islobodiuk-figma released this 28 May 14:25

Fixed

General

  • The --file (-f) option on figma connect publish, unpublish, and parse now accepts multiple files, so you can target several Code Connect files in one command (e.g. figma connect publish --file a.figma.ts b.figma.ts). Previously only a single file path was accepted.
  • Tweak retry behavior for publish command to reduce 429s errors
  • Shared flags (--verbose, --token, --config, --dir, --file, --out-file, --out-dir, --api-url, --skip-update-check, --exit-on-unreadable-files, --dry-run) now work whether you write them before or after the subcommand name. Previously, only figma connect publish -v toggled verbose mode; figma connect -v publish was silently ignored.

Compose

  • Fixed a crash that prevented the Code Connect Gradle plugin from being used with projects on Kotlin 2.3 or newer. The plugin now runs Kotlin source parsing in an isolated worker process, so it no longer ships an embedded Kotlin compiler in the consumer's build environment and cannot conflict with the host project's Kotlin Gradle Plugin across version upgrades.
  • Fixed parseCodeConnect / createCodeConnect failing in multi-module Gradle projects when the plugin is applied to more than one subproject. The task now resolves the -PfilePath/-PoutputDir arguments against the root project so every subproject finds the input the CLI wrote at the build root.
  • The Code Connect Gradle tasks now work cleanly with Gradle's configuration cache enabled. Previously, enabling --configuration-cache caused an opaque serialization error; the tasks now store and reuse the configuration cache entry as expected.

Code Connect 1.4.5

Choose a tag to compare

@slees-figma slees-figma released this 13 May 16:34

Fixed

General

  • The preview command now prints a clearer single-line message if the preview service is temporarily unavailable, instead of repeating a per-file error.
  • figma connect preview now splits requests into smaller chunks when previewing many components at once, so previews of large component libraries no longer fail with “Payload Too Large” errors.

Code Connect 1.4.4

Choose a tag to compare

@christinabannister-figma christinabannister-figma released this 23 Apr 15:17

Fixed

General

  • Bumped Lodash version from 4.17 to 4.18 to address vulnerability CVE-2021-23337

Storybook

  • Storybook files with .ts, .jsx, or .js extensions (e.g. Button.stories.jsx) are now discovered by the CLI. Previously only .stories.tsx files were picked up.

Template files

  • --exit-on-unreadable-files is now respected for template files (.figma.ts / .figma.js)
  • Fixed batch data not being picked up when rendering Code Connect snippets

Features

General

  • Added --force flag to figma connect publish. When Figma already has UI-created Code Connect mappings for one or more nodes, publishing will now show a warning instead of failing silently. Use --force to overwrite those existing mappings with the Code Connect files from your codebase.
  • The connect create command can now generates template files.
  • Added preview command: you can now run npx figma connect preview {fileUrl} to locally preview a Code Connect file without having to publish it.

Template files

  • Added batch template support (.figma.batch.json + .figma.batch.ts). A batch file defines a shared template and an array of component entries, allowing hundreds of similar components (e.g. icons) to be Code Connected without individual template files. Per-entry data is available in the template via figma.batch.

Code Connect 1.4.3

Choose a tag to compare

@christinabannister-figma christinabannister-figma released this 01 Apr 18:28

Fixed

Template files

  • Fixed getBoolean() returning undefined instead of false when a boolean property is set to false in a template file.
  • Fixed some TS discrepancies in the figma.* API in template files
  • Some fixes for the migration script

Swift & Compose

  • Fixed args inconsistency in Swift and Compose helpers that could cause errors during template rendering.

Features

CLI

  • Added --file (-f) option to parse, publish, and unpublish commands to process a single Code Connect file instead of the entire project (e.g. figma connect parse --file=src/Button.figma.tsx).

Template files

  • The migrate command now outputs TypeScript (.figma.ts) files by default. Pass --javascript to output JavaScript (.figma.js) files instead.
  • The migrate command now outputs import figma from "figma" (ESM syntax) when using the --typescript flag
  • The migrate command now removes __props metadata blocks by default. Pass --include-props to preserve them.
  • Storybook connections can now be migrated by the template migration script

Code Connect 1.4.2

Choose a tag to compare

@slees-figma slees-figma released this 17 Mar 10:22

Fixed

General

  • Fixed incorrect documentUrlSubstitutions when one key is a prefix of another (e.g. SearchInput and SearchInputMenu). The CLI now processes longer keys first so the correct substitution is applied.
  • Publishing with --batch-size now retries automatically on rate-limit (429) and server error (5xx) responses, respecting the Retry-After header when present, rather than failing immediately
  • Fixed an issue around .figma.js/.figma.ts files being incorrectly treated as template files

CLI

  • The --include-template-files flag now shows a deprecation warning instead of causing an error. The flag is no longer necessary as template files are automatically included by default.

Features

General

  • Code Connect now supports default branch names other than master/main. For cases where it can't be detected automatically, you can set defaultBranch in your figma.config.json.

Template files

  • Variant restrictions are now handled by the migrate script. These are inlined into one template file with if/else blocks.
  • TypeScript is now supported for raw template files (.figma.template.ts / .figma.ts).
    • ESM import syntax is now supported for the Figma API: import figma from 'figma'
    • Type-only imports (import type) are supported
    • Other module imports are not yet supported
    • To enable types for the figma API, add "@figma/code-connect/figma-types" to the types array in your tsconfig.json.
    • JavaScript files are the default output of the migrate command. Can pass --typescript to output TypeScript (.figma.ts) files instead.

Code Connect 1.4.1

Choose a tag to compare

@slees-figma slees-figma released this 20 Feb 15:23

Fixed

  • Fixed issue with publishing template files without a source value

Code Connect 1.4.0

Choose a tag to compare

@slees-figma slees-figma released this 18 Feb 12:15

Features

React

  • Add support for figma.slot() to map Figma slot layer properties in Code Connect files.

Parserless

  • Added a beta migration script to migrate parser-based Code Connect files to parserless templates under figma connect migrate.
  • The default extension for parserless/template files is now .figma.js instead of .figma.template.js. The old .figma.template.js extension is still fully supported for backwards compatibility.
  • Removed --include-template-files flag. Template files (.figma.js and .figma.template.js) are now always included when detected.
  • Add support for instance.getSlot(name) in templates to reference "slot" properties.
  • Parserless templates now support optional component and source comment fields (e.g., // component=Button)

Code Connect 1.3.13

Choose a tag to compare

@islobodiuk-figma islobodiuk-figma released this 02 Feb 14:20

Features

  • Add --api-url option to use a different code-connect api endpoint. This option can also be configured in figma.config.json with the apiUrl field
  • Add language config option to override syntax highlighting language in figma.config.json

Parserless

  • Syntax highlighting + formatting for parserless templates when publishing with a known label (e.g. React)

Fixed

  • Fix crash that occurs when the provided Figma file has no components
  • Set version number for annotations gradle plugin
  • Security update: upgraded undici to fix CVE-2026-22036. Roll back and report if you encounter networking issues.
  • Security update: upgraded lodash to fix CVE-2025-13465.