FigCraft v0.11.2

FigCraft is a free, open-source interface design and prototyping application built in Rust. It aims to reproduce core design workflows found in Figma while providing a native desktop experience, local file storage, and support for offline work.

The application includes tools for creating layouts, reusable components, vector graphics, design systems, and interactive prototypes. It also supports developer handoff, multiple export formats, command-line automation, and integration with AI agents through the Model Context Protocol (MCP).

FigCraft is an ambitious alternative for UI designers and developers who want greater control over their design files without depending entirely on a cloud-based platform. However, it is still in alpha, and its developers estimate that it has reached approximately 49% of the functionality needed to replace Figma for real-world work. It is best treated as an actively developing alternative rather than a complete replacement.

Features

Interface Design and Auto Layout

FigCraft provides a canvas-based editor with a familiar interface featuring a toolbar, layers panel, design properties, and keyboard shortcuts.

Its auto-layout system supports horizontal and vertical layouts, wrapping, grid layouts, spacing, padding, alignment, and flexible sizing. Designers can combine nested frames, constraints, and layout grids to create responsive interface structures.

These tools are useful for building application screens, dashboards, landing pages, and reusable interface layouts without manually positioning every element.

Components and Design Systems

FigCraft supports reusable components, instances, variants, and component properties. Changes to a main component can propagate to its instances while preserving supported overrides.

The application also includes an asset panel for searching and inserting reusable components, along with a variables system supporting colors, numbers, strings, and Boolean values. Variables can have multiple modes, aliases, and scopes, making them useful for maintaining design systems and light or dark themes.

These capabilities provide a foundation for consistent UI development across larger projects.

Vector Graphics and Drawing Tools

The application includes vector editing tools that go beyond basic shapes. Users can draw paths, edit points and handles, create variable-width strokes, and combine overlapping shapes using Boolean operations.

Supported operations include union, subtraction, intersection, and exclusion. The editor also provides a shape builder, masks, gradients, adjustable corners, and editable vector geometry.

This makes FigCraft useful for designing icons, interface illustrations, diagrams, and other vector-based assets without requiring a separate drawing application for every task.

Colors, Effects, and Typography

FigCraft supports solid colors, linear and radial gradients, angular and diamond gradients, image fills, multiple strokes, blend modes, shadows, and blur effects.

Additional effects include noise, texture, glass-like treatments, and masks. Color handling supports sRGB and Display P3 profiles, with exported files tagged with their color profile.

The text editor supports mixed formatting within paragraphs, variable fonts, OpenType features, text styles, spacing controls, lists, and right-to-left text. These capabilities are useful for multilingual interfaces and more sophisticated typography.

Interactive Prototyping

FigCraft allows designers to connect frames and create interactive prototypes with triggers, actions, transitions, and back navigation.

Its interaction system also supports variables and conditional expressions, enabling more dynamic prototypes. A presentation view provides device frames and interaction hints, while a live preview helps designers test their work.

These features allow teams to explore interface behavior before implementing the final design in code.

Developer Handoff and Code Inspection

The application includes a developer-oriented inspection workflow with measurements, annotations, ready-for-development status, and frame comparisons.

Developers can inspect design properties and generate code representations in formats such as CSS, HTML, React, SwiftUI, and Jetpack Compose. Components can expose their properties as parameters in the generated code.

The output is intended to help bridge design and implementation, although generated code should be reviewed and adapted to the conventions and architecture of the target project.

AI Agent and CLI Automation

One of FigCraft's most distinctive features is its command-driven architecture. The same underlying command system powers the graphical interface, CLI, JSON control channel, and MCP server.

This enables scripts and compatible AI agents to create or modify designs, inspect documents, render files, and export assets without relying exclusively on manual interaction.

The command-line tools also support headless rendering and batch export, making the application potentially useful in automated design workflows and development pipelines.

Local Files and Offline Privacy

FigCraft stores projects as local .figcraft archives and can work without requiring an account. The project states that it does not use telemetry and does not contact a server until users share or join a file.

It supports importing and exporting common formats, including SVG, PNG, JPG, WebP, and PDF. Existing Figma .fig files can also be opened on a best-effort basis, although compatibility with real-world documents has not been fully validated.

For collaborative work, FigCraft offers preview-stage live sessions and an optional self-hosted server. These features are not equivalent to a mature cloud collaboration platform, and online sharing has important privacy limitations discussed below.

Download FigCraft v0.11.2 - Software Mirrors

FigCraft v0.11.2 for Windows

figcraft-0.11.2-windows-x86.msi | 66.33 MB

figcraft-0.11.2-windows-x86-portable.zip | 82.12 MB

figcraft-0.11.2-windows-x64.msi | 67.79 MB

figcraft-0.11.2-windows-x64-portable.zip | 84.97 MB

figcraft-0.11.2-windows-arm64.msi | 64.53 MB

figcraft-0.11.2-windows-arm64-portable.zip | 82.14 MB

FigCraft v0.11.2 for macOS

figcraft-cli-0.11.2-macos-universal.zip | 75.45 MB

figcraft-0.11.2-macos-universal.dmg | 93.03 MB

FigCraft v0.11.2 for Linux

figcraft-server-0.11.2-linux-x86_64.tar.gz | 4.06 MB

figcraft-server-0.11.2-linux-aarch64.tar.gz | 3.72 MB

figcraft-0.11.2-linux-x86_64.tar.gz | 85.32 MB

figcraft-0.11.2-linux-x86_64.rpm | 86.16 MB

figcraft-0.11.2-linux-x86_64.pkg.tar.zst | 64.12 MB

figcraft-0.11.2-linux-x86_64.flatpak | 59.86 MB

figcraft-0.11.2-linux-x86_64.deb | 86.56 MB

figcraft-0.11.2-linux-x86_64.AppImage.zsync | 281.11 kB

figcraft-0.11.2-linux-x86_64.AppImage | 80.25 MB

figcraft-0.11.2-linux-riscv64.tar.gz | 83.77 MB

figcraft-0.11.2-linux-riscv64.rpm | 84.63 MB

figcraft-0.11.2-linux-riscv64.deb | 84.88 MB

figcraft-0.11.2-linux-aarch64.tar.gz | 82.6 MB

figcraft-0.11.2-linux-aarch64.rpm | 84.07 MB

figcraft-0.11.2-linux-aarch64.pkg.tar.zst | 62.17 MB

figcraft-0.11.2-linux-aarch64.flatpak | 56.55 MB

figcraft-0.11.2-linux-aarch64.deb | 84.6 MB

figcraft-0.11.2-linux-aarch64.AppImage.zsync | 272.09 kB

figcraft-0.11.2-linux-aarch64.AppImage | 77.67 MB

FigCraft v0.11.2 for BSD

figcraft-0.11.2-freebsd-x86_64.tar.gz | 84.96 MB

Others Download related to FigCraft v0.11.2

figcraft-web-0.11.2.zip | 8.66 MB

FigCraft v0.11.2 Source Code

FigCraft v0.11.2 Source code (zip)

FigCraft v0.11.2 Source code (tar.gz)

FigCraft v0.11.2 Release Notes:

What's Changed

  • test: explain the discarded reads in the fake servers (SonarCloud rust:S7450) by @dylanmtaylor in #1221
  • packaging: bash test and function hygiene (SonarCloud S7688, S7679, S7682, S131, S7677) by @dylanmtaylor in #1201
  • packaging: use [[ for bash conditional tests (SonarCloud S7688) by @dylanmtaylor in #1225
  • CI: one test binary per crate, nextest, line tables only by @aiongg in #1208
  • Packaging: pin the signing client and appimagetool, and check their hashes by @aiongg in #950
  • Tests: paragraph indent test no longer depends on test order by @aiongg in #1227
  • CI: shared gate workflow; FreeBSD nightly and on release by @aiongg in #1206
  • Docs: roadmap entries for the community PRs in #507, #510, #529 and #530 by @bflatastic in #587
  • i18n: a missing translation fails no check; cargo xtask i18n-report lists them by @aiongg in #1228
  • M6: Dev Mode tail: imports in layer trees, compare with versions, an inspect-only canvas by @bflatastic in #538
  • ci(sonar): stop cancelling main-branch runs so coverage is published by @dylanmtaylor in #1231
  • M12: Boards — a collaborative whiteboard file kind by @bflatastic in #1229
  • PDF: write with craft-libs' krilla, which bounds decoded PNGs by @aiongg in #1240
  • chore: resolve SonarCloud maintainability issues by @dylanmtaylor in #1241
  • Community batch r2-1: 63 reviewed PRs by @bflatastic in #1244
  • Cap the issue list returned by Document::validate by @Silvertree2010 in #1187
  • Strip bidi control characters from names and report reasons by @Silvertree2010 in #1192
  • Regression test for #237 by @skylartaylor in #1197
  • M3: instance-swap properties in the Dev Mode component playground by @marcoarnulfo in #1199
  • Control server: wait after a failed accept instead of retrying at once by @oracola91 in #1212
  • M5: a top-level frame taller than the device scrolls without an overflow setting by @seltzdesign in #1232
  • Fix duplicate SVG ids when a layer name matches a generated id by @Silvertree2010 in #1238
  • engine: fill rules as vector.fillRule and vector.reverseLoop by @yelintong in #740
  • M1: write grid track sizes in .fig export (#465) by @xiaou61 in #904
  • Keep a solid paint's own opacity when binding a colour variable by @Silvertree2010 in #948
  • fix(ui): keep the style picker open while editing a style's colour by @kollakek1 in #976
  • Fix invisible dropdown options in the light theme by @Ridzzz0Alam in #983
  • fix: = zooms in, matching - zooming out (#973) by @Ridzzz0Alam in #986
  • M7: keep keyboard focus inside the Interface size menu by @YarilaFox in #1014
  • M1: a selected unfilled shape drags from inside its box (#910) by @muamerETS in #1018
  • fix(engine): show the Pen's Shift 45° step in its preview line (#970) by @vxMacDev in #1023
  • M1: individual corner fields sit at their corners, each with its own icon (#1002) by @muamerETS in #1030
  • Treat U+2007 FIGURE SPACE as non-breaking in line breaking by @Silvertree2010 in #1031
  • M8: save-format tests keep their temp folders apart by @MortenHusted in #1032
  • M3: a variant switch takes the new variant's resizing unless the instance set its own by @MortenHusted in #1033
  • M6: SVG import fills open subpaths the way SVG does by @MortenHusted in #1034
  • M3: a variable mode set on a layer inside an instance is an override by @MortenHusted in #1037
  • Keep not from reading back as a variable named "not …" by @Silvertree2010 in #1041
  • M3: style links given in a call apply after its values by @MortenHusted in #1042
  • M3: a swapped nested instance keeps its outer main's overrides by @MortenHusted in #1043
  • M4: individual stroke weights follow the corner radius like CSS borders by @MortenHusted in #1044
  • M7: Type settings keeps its width with long labels (#1029) by @AganzeFelicite in #1047
  • Drop XML-forbidden control characters from live-text SVG export by @Silvertree2010 in #1052
  • M5: prototype actions lay out what they change like the canvas does by @MortenHusted in #1135
  • Write a final Greek sigma in lower-case text layout by @Silvertree2010 in #1142
  • Remove all leftover temp files at server startup by @Silvertree2010 in #1145
  • Guard file generation increments against u64 overflow by @Silvertree2010 in #1146
  • Restrict a pre-existing data directory to 0700 by @Silvertree2010 in #1147
  • Bound the library/plugins close drain with a deadline by @Silvertree2010 in #1149
  • Never drop Sync events when the live inbox is full by @Silvertree2010 in #1151
  • Match widget data check depth to serde_json's recursion limit by @Silvertree2010 in #1153
  • FreeBSD: package the aarch64 cross build (craft-common-actions#39) by @zuujiscom in #1158
  • M0.9: figcraft-cli export names files as the app's export does (#1154) by @switch87 in #1160
  • M0.9: --help and -h after a figcraft-cli subcommand print the usage (#1155) by @switch87 in #1161
  • Reject non-finite coordinates in control-channel ui.input by @Silvertree2010 in #1164
  • Make SVG unique_id linear for repeated layer names by @Silvertree2010 in #1165
  • M7: Cmd/Ctrl+S saves while a panel field has the keyboard (#1157) by @switch87 in #1166
  • Refuse library versions that leave no newer one to publish by @Silvertree2010 in #1169
  • Never overwrite a file's log when it can't be read by @Silvertree2010 in #1171
  • M8: the unsaved-changes question on close offers Save (#1170) by @switch87 in #1173
  • Keep the hello size limit until a connection is admitted by @Silvertree2010 in #1175
  • Enforce per-address storage caps per IPv6 /64, /56 and /48 by @Silvertree2010 in #1178
  • Refuse text.loadFont path for plugins by @Silvertree2010 in #1181
  • Shut kicked and removed connections when their close can't be queued by @Silvertree2010 in #1182
  • Enforce an absolute pre-hello deadline against ping slowloris by @Silvertree2010 in #1183
  • Make is_ancestor fail closed on deep or looping parent chains by @Silvertree2010 in #1185
  • Stop stale next_id from making pastes overwrite existing nodes by @Silvertree2010 in #1186
  • M4: vector edit transform box around points of several layers by @marcoarnulfo in #1189
  • Refuse non-local library paths in the library Cache by @Silvertree2010 in #1190
  • Deny library.publishToServer to plugins by @Silvertree2010 in #1191
  • Accept a version string for the plugin manifest api field by @Silvertree2010 in #1195
  • Don't run the expiry sweep from offline CLI commands by @Silvertree2010 in #1196
  • fill/stroke props: accept "none" and null as no paint by @lileeei in #1198
  • The colour picker's eyedropper applies the colour to the paint the picker edits (Reported in storytold/vectorcraft#3342) by @marcoarnulfo in #1200
  • Honour even-odd fill rule when hit testing vectors by @Silvertree2010 in #1230
  • M5: one presentation tab per page of a file by @JimKnoxx in #660
  • M1: say that the automation roots reach only the headless side (#835) by @xiaou61 in #905
  • Keep literal true/false distinct from variables named true/false by @Silvertree2010 in #1038
  • M6: Dev Mode measurements kept on the canvas, a read-only layers panel by @bflatastic in #1248
  • variable.export css: number lengths in px by @lucasmartins-ai in #1008
  • Show a boolean property's default on the main component's bound layers by @kkilchrist in #1006
  • MCP: inspect_document answers within what a client can read by @Hamza0101 in #915
  • node.reparent: index is the layer's final position by @kkilchrist in #1005
  • node.set: accept path to replace a vector's geometry by @kkilchrist in #1004
  • data.fill and text.fit: fill copies of a frame from rows of data by @lucasmartins-ai in #1009
  • chore: drop redundant 'static lifetimes (Sonar S8863) by @dylanmtaylor in #1254
  • fix(security): prevent symlink traversal in asset walker, safe cert tmpdir, and safe icon copy by @dylanmtaylor in #1255
  • fix(security): owner-only recovery permissions, linear cli export suffixing, and web noopener by @dylanmtaylor in #1256
  • fix(security): bound decoration steps, text-on-path elements, and rename expansions by @dylanmtaylor in #1257
  • fix(security): cap COLR layers, PNG glyph dimensions, and layout cache capacity by @dylanmtaylor in #1264
  • fix(security): linear docprops reordering and deduplicate restored deletion nodes by @dylanmtaylor in #1258
  • Clamp control-channel document.inspect depth to 64 by @Silvertree2010 in #1162
  • Convert text decoration colour in colour profile conversion by @Silvertree2010 in #1247
  • Clip Inside/Outside strokes by the shape's even-odd fill rule by @Silvertree2010 in #1253
  • Validate image member names when reading .figcraft archives by @Silvertree2010 in #1148
  • Clear plugin settings when a plugin id is re-registered by @Silvertree2010 in #1159
  • Restore the clipboard when a command fails and is rolled back by @Silvertree2010 in #1167
  • Cap layout.setTrack track count at MAX_TRACKS by @Silvertree2010 in #1168
  • Keep wrong join-code streak when a correct code is tried by @Silvertree2010 in #1174
  • Check SVG nesting depth after DTD entity expansion by @Silvertree2010 in #1177
  • Count scalar kiwi fields against the decoded-value budget by @Silvertree2010 in #1188
  • Require a per-client secret to resume a collab client id by @Silvertree2010 in #1193
  • security: linear vector import, stroking and rounding, validation, and cyclic dev snapshots by @dylanmtaylor in #1306
  • Merge 13 open PRs (tested batch) by @aiongg in #1311
  • M3: apply and detach color variables from Selection colors by @dotCooCoo in #1273
  • M6: Dev Mode refuses edits from dropped files, the Pages list and the Assets panel by @dotCooCoo in #1277
  • M3: bind variables to a text style's fields from the style editor by @dotCooCoo in #1281
  • M3: style variable pickers offer only variables scoped to the field by @dotCooCoo in #1283
  • M3: apply variables to a text layer's font family and font style by @dotCooCoo in #1284
  • M4: corner smoothing on polygons and stars by @dotCooCoo in #1286
  • M1: the iOS button next to Corner smoothing sets 60% by @dotCooCoo in #1288
  • Docs: parity rows for mouse-trigger delays, outline options and missing fonts by @dotCooCoo in #1293
  • M4: the Text on a path tool by @dotCooCoo in #1298
  • M4: text put on a path takes the path's fill and effects by @dotCooCoo in #1301
  • M5: a notice before a prototype's Open link leaves for a website by @dotCooCoo in #1304
  • M7: with Contents only on, a slice in a frame or group exports only that container by @dotCooCoo in #1305
  • M7: the export settings name Ignore overlapping layers and offer Include bounding box for text layers only by @dotCooCoo in #1307
  • Follow-ups from the #1311 review: link notice clicks, variable scopes, corner tooltip by @aiongg in #1316

New Contributors

  • @aiongg made their first contribution in #1208
  • @oracola91 made their first contribution in #1212
  • @seltzdesign made their first contribution in #1232
  • @xiaou61 made their first contribution in #904
  • @kollakek1 made their first contribution in #976
  • @Ridzzz0Alam made their first contribution in #983
  • @zuujiscom made their first contribution in #1158
  • @switch87 made their first contribution in #1160
  • @lileeei made their first contribution in #1198
  • @lucasmartins-ai made their first contribution in #1008
  • @kkilchrist made their first contribution in #1006
  • @dotCooCoo made their first contribution in #1273
Full Changelog: v0.10.0...v0.11.2

Performance and Compatibility

FigCraft is built primarily in Rust and uses a native desktop interface rather than Electron or an embedded web view. Its document engine is designed to update only the parts of a design that change, which can reduce unnecessary work when editing complex documents.

The project also supports a WebAssembly build, making browser-based use possible. Desktop installers are provided for Windows, macOS, Linux, and FreeBSD, subject to the available release packages.

Its main limitation is maturity. The developers explicitly identify the application as alpha software. Although its core editor and many design features are implemented, the project has not been fully validated against real Figma documents. Importing .fig files is best-effort, and its plugin system uses WebAssembly plugins rather than Figma's native plugin ecosystem.

Live collaboration is also in preview. Users can share a document through the default collaboration server or a self-hosted server, but the project does not yet provide accounts, team management, or a complete cloud workspace.

Privacy also requires attention when sharing. Online sessions upload files to a server, and the shared documents are not end-to-end encrypted. Anyone with an edit link or code can modify the file. Sensitive projects should therefore remain local, use a trusted self-hosted server, or be shared only through a trusted local network.

System Requirements

The project does not publish a single minimum CPU, RAM, or GPU specification. Its documented technical requirements include:

  • Operating systems: Windows, macOS, Linux, and FreeBSD, depending on the available build.

  • Development toolchain: Rust and Cargo for building from source.

  • Web build: WebAssembly support, with Trunk used for the browser build.

  • Storage: Local disk space for the application, design files, and assets.

  • Fonts: System fonts can be used, while the project's separate craft-fonts repository provides additional bundled fonts.

  • Internet connection: Not required for normal offline design work, but needed for online collaboration and other network-dependent workflows.

The easiest installation method is to download an appropriate installer from the project's GitHub releases. Developers who prefer building from source should follow the repository's current setup instructions.

Pros and Cons

Pros

  • Free and open-source under the MIT or Apache-2.0 license.

  • Native application built in Rust without Electron.

  • Works offline without requiring an account.

  • Includes auto layout, components, variants, variables, and design-system tools.

  • Provides advanced vector editing and Boolean operations.

  • Supports interactive prototyping and developer handoff.

  • Exposes design operations through a CLI, JSON control channel, and MCP server.

  • Supports common image, vector, and document export formats.

  • Offers cross-platform desktop builds and a WebAssembly version.

  • Provides a foundation for local and self-hosted collaboration.

Cons

  • Still in alpha and not yet a complete replacement for Figma.

  • Figma document import is best-effort and has not been fully validated against real documents.

  • Does not support Figma's native plugin ecosystem.

  • Multiplayer collaboration remains a preview feature.

  • Lacks mature account, team, and cloud-workspace management.

  • Online sharing is not end-to-end encrypted.

  • Generated code requires review before production use.

  • Building from source requires familiarity with Rust and Cargo.

How to Install

Option 1: Download a Prebuilt Release

  1. Visit the FigCraft GitHub repository.

  2. Open the Releases section.

  3. Download the installer or package appropriate for your operating system.

  4. Install or extract the package according to its format.

  5. Launch FigCraft and create a new design or open an existing .figcraft project.

Prebuilt releases are the most convenient option for users who want to try the application without setting up a development environment.

Option 2: Build from Source

Install Rust and Cargo first, then clone the repository:

git clone https://github.com/storytold/figcraft
cd figcraft

Start the desktop application in release mode:

cargo run --release -p figcraft

To start the collaboration server separately:

cargo run --release -p figcraft-server

To run the workspace test suite:

cargo test --workspace

The project also provides a CI command for formatting, linting, tests, layering checks, and asset validation:

cargo xtask ci

For additional fonts, clone the shared font repository alongside FigCraft:

git clone https://github.com/storytold/craft-fonts ../craft-fonts

Without the additional font repository, FigCraft can fall back to system fonts. Consult the project's documentation for platform-specific dependencies and further configuration.

Final Verdict

FigCraft is an ambitious open-source design application that combines many of the features expected from a modern UI design tool with the benefits of native software and local-first storage.

Its strongest advantages are its component system, vector editor, prototyping tools, and command-driven architecture. Support for CLI automation and MCP is particularly interesting for developers who want AI agents to generate or modify interface designs as part of their development workflow.

However, its alpha status is a significant consideration. Figma import compatibility, collaboration, and plugin support are not yet mature enough to assume a seamless transition from established design platforms. Users working on critical production projects should evaluate these limitations before adopting it as their primary tool.

FigCraft is a promising choice for developers, designers, and open-source enthusiasts who want a native, offline-capable interface design tool. It is worth testing for new projects and automated design workflows, but teams that depend on Figma's complete collaboration ecosystem should treat it as an emerging alternative rather than a direct replacement.

FigCraft v0.11.2
Free
Software Informations:
Developer:

Operating System:
Windows / macOS / Linux / BSD
Date Added:
2026-10-25T16:07:26.621Z
Categories:

Post a Comment/Report Broken Link: