<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: shadcncraft</title>
    <description>The latest articles on DEV Community by shadcncraft (@shadcncraft).</description>
    <link>https://dev.to/shadcncraft</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3410218%2Fee9ad771-a149-4e33-a576-1ea4ca1c54ca.png</url>
      <title>DEV Community: shadcncraft</title>
      <link>https://dev.to/shadcncraft</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shadcncraft"/>
    <language>en</language>
    <item>
      <title>Claude Cowork has changed managing a Figma design system library forever</title>
      <dc:creator>shadcncraft</dc:creator>
      <pubDate>Wed, 27 May 2026 05:27:05 +0000</pubDate>
      <link>https://dev.to/shadcncraft/claude-cowork-has-changed-managing-a-figma-design-system-library-forever-523n</link>
      <guid>https://dev.to/shadcncraft/claude-cowork-has-changed-managing-a-figma-design-system-library-forever-523n</guid>
      <description>&lt;p&gt;Field notes from a month of running a Figma library with Claude Cowork in the loop. What it is great at (variables, rebinding, scoped refactors, plugin generation), what it cannot do (anything truly visual), and the workflow rules I had to learn the hard way so it does not eat your file.&lt;/p&gt;

&lt;p&gt;If you manage a Figma library for a living, you already know the work that does not show up in any portfolio. Renaming a few hundred variables when a naming convention shifts. Hand-building a tokens page so an AI tool can pick up your variables. Quietly reconciling drift between the Figma kit and the code-side tokens because nobody else is going to. Writing internal docs that go stale the moment the library updates.&lt;/p&gt;

&lt;p&gt;I have spent the last month using Claude Cowork on the &lt;a href="https://shadcncraft.com/figma" rel="noopener noreferrer"&gt;shadcncraft Figma kit&lt;/a&gt;, and most of that work has changed shape. Tasks that used to take days are now a single scoped prompt. Tasks that were never really practical to attempt by hand, like a full cross-collection audit, are suddenly on the menu. And a small but real slice of the work is now riskier than before, because the agent is happy to make large, confident changes you may not catch until later.&lt;/p&gt;

&lt;p&gt;This is the guide I wish I had at the start. It is written for designers and design system leads who own a Figma library and want to know, in concrete terms, what Cowork is good at, what it is bad at, and the workflow rules that keep it useful rather than dangerous.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this is, in one paragraph
&lt;/h2&gt;

&lt;p&gt;Claude Cowork can read and write your Figma file directly through the Figma MCP. It can rename variables, rebind them, audit collections, walk component trees, change states, and write Figma plugins for you on demand. It cannot see your file the way you and I can. It reads the underlying node tree and variable graph, not pixels. Once you internalize that, almost every good and bad thing about working with it makes sense.&lt;/p&gt;

&lt;p&gt;If you are not using it yet for library work, you are about to fall behind. The catch is that "using it" badly is worse than not using it at all, because confident agents at scale produce confidently broken files at scale. The point of this post is to spare you that.&lt;/p&gt;

&lt;p&gt;This post is about using the Figma MCP loop to maintain a Figma library. If what you actually want to do is use the same loop to build apps from your Figma file, that is a separate workflow with its own setup, and it has its own post: &lt;a href="https://shadcncraft.com/blog/from-figma-to-production-react-with-ai" rel="noopener noreferrer"&gt;From Figma to production React, with AI in the loop&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two customer pain points this directly solves
&lt;/h2&gt;

&lt;p&gt;When we ran the last shadcncraft customer survey, two themes came up again and again from people running a Figma library against a shadcn/ui codebase. Cowork puts a real dent in both.&lt;/p&gt;

&lt;p&gt;The first was designers building a hand-maintained "tokens page" inside their Figma file purely so an AI workflow could read variables over the Figma MCP. With Cowork in the loop, that page is unnecessary. It can read the variables directly. The workaround can now go away.&lt;/p&gt;

&lt;p&gt;The second was drift. Customers running a Figma kit alongside a shadcn codebase spend ongoing cleanup time keeping the two in sync, because there has never been a good way to detect where they diverge. Cowork can read your shadcn CSS variables file and compare it against your Figma variables in one pass. Drift becomes visible and fixable in a single operation, instead of a slow manual reconciliation that nobody has time for.&lt;/p&gt;

&lt;p&gt;Neither of these were really design problems. They were tax that design system owners were paying because the tooling did not exist. The tooling now exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Cowork is genuinely great at
&lt;/h2&gt;

&lt;p&gt;Three areas have changed the shape of my week.&lt;/p&gt;

&lt;h3&gt;
  
  
  Variable management, rebinding, and managing states
&lt;/h3&gt;

&lt;p&gt;This is the thing Cowork does that I no longer want to do by hand, ever. Bulk renames across a collection without breaking references. Rebinding instances from one variable to another. Switching states on a large set of components. Moving a variable from Primitives into Theme while preserving every reference that points at it. These are the tasks where a careful agent saves you days, and the work is mechanical enough that the agent stays accurate if you scope the prompt properly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Auditing collections and detecting drift
&lt;/h3&gt;

&lt;p&gt;Asking Cowork to walk a single collection and report unused variables, duplicates, suspiciously similar values, or values that drift from your code-side tokens is the kind of task a human will do once and never again. The agent does it on demand, without complaint, and it can run the same audit on a cadence if you want it to.&lt;/p&gt;

&lt;h3&gt;
  
  
  Writing Figma plugins for you
&lt;/h3&gt;

&lt;p&gt;This one took me by surprise and is now one of the highest leverage uses of the tool. Cowork is extremely good at writing small, single-purpose Figma plugins. If you have a repetitive task that you would rather not run through an agent every time, ask Cowork to write you a plugin that does it once, locally, in your file. The plugin runs as fast as Figma can execute, has no API timeout, and never gets bored or lazy halfway through. There is a real lesson here: sometimes a dumb deterministic script is a better answer than a smart agent that gets distracted on the seventh hundredth iteration.&lt;/p&gt;

&lt;p&gt;The other reason to prefer plugins for big jobs is that the Figma MCP has a 60-second timeout. Large agent-driven tasks routinely run past it, and when they do, the agent often has no clean confirmation that the work either completed or failed. A plugin sidesteps that entire failure mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Cowork cannot do
&lt;/h2&gt;

&lt;p&gt;Be honest with yourself about this before you start, because the failures are not always loud.&lt;/p&gt;

&lt;h3&gt;
  
  
  It cannot "see" your file
&lt;/h3&gt;

&lt;p&gt;Cowork reads the underlying Figma data, not the canvas. It does not know that a button looks visually unbalanced, that a card has slightly more breathing room on the right than the left, that an icon is optically misaligned, or that a color, while technically correct, looks wrong against the surface behind it. Any task that depends on visual judgment is yours, not the agent's.&lt;/p&gt;

&lt;p&gt;In practice this is fine. It actually makes you a better team. You bring the visual taste; the agent does the bulk mechanical work that would otherwise make you want to lie down. Once you stop expecting it to design, the division of labor settles in quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  It cannot order your variables
&lt;/h3&gt;

&lt;p&gt;It can reorder layers without much trouble, but variable ordering inside a collection is not currently something it can change. Worth knowing before you ask it to "tidy up" a collection and then wonder why the order is unchanged.&lt;/p&gt;

&lt;h3&gt;
  
  
  It is happy to confidently break things at scale
&lt;/h3&gt;

&lt;p&gt;This is the failure mode that almost broke me. Without the right guidance, Cowork behaves like an extremely over-confident junior designer. It will tell you the job is done. It will sound certain. And, if you let it loose on a whole file, it will sometimes have quietly snapped references, renamed things you did not want renamed, or modified components it should not have touched. The rest of this post is, in many ways, the set of habits I built to stop that happening.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow rules that make it work
&lt;/h2&gt;

&lt;p&gt;These are not optional. Every one of them I learned the hard way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do small, specific, scoped tasks
&lt;/h3&gt;

&lt;p&gt;The single most important habit. Give Cowork one narrow job at a time. Point it at a specific node, a specific collection, or a specific component set. The more scoped the task, the less surface area for it to do something unexpected.&lt;/p&gt;

&lt;p&gt;When I am pointing it at something specific in Figma, I paste the node URL straight into the prompt. That removes any ambiguity about which thing I am referring to and stops it from wandering off into adjacent parts of the file looking for something that loosely matches the description.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chunk down large tasks
&lt;/h3&gt;

&lt;p&gt;If a job feels big, it is too big. Break it into pieces and run them as separate prompts. When I have asked Cowork to "walk the whole file" and do something across the lot, bad things have happened. Sometimes the API times out partway through. Sometimes it processes a slice and reports success. Sometimes it touches things it should not have.&lt;/p&gt;

&lt;p&gt;A good rule of thumb: if the task touches more than one collection, more than one page, or more than a few hundred nodes, split it.&lt;/p&gt;

&lt;h3&gt;
  
  
  For big repetitive jobs, ask for a plugin
&lt;/h3&gt;

&lt;p&gt;This deserves repeating because it is the single biggest unlock. If you have a job that is large, deterministic, and you might want to run again, ask Cowork to write you a plugin for it. The plugin runs locally inside Figma, dodges the MCP timeout, and produces consistent results across thousands of iterations. Cowork is exceptionally good at this, and it converts a stressful agent run into a one-click button you keep around.&lt;/p&gt;

&lt;h3&gt;
  
  
  Store reference files in the project folder and point the agent at them
&lt;/h3&gt;

&lt;p&gt;Cowork's memory is not something you want to rely on across a long session. The fix is to put the source of truth in the project folder and instruct the agent to read it whenever it needs to. I keep the shadcn styles CSS in the folder, for example, so any sync or audit work references the actual file rather than the agent's recollection of what it looked like an hour ago.&lt;/p&gt;

&lt;p&gt;This is also a quiet token saver. The agent does not have to carry a long copy of the file around in its working context. It reads, acts, and moves on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keep a CLAUDE.md in the project folder
&lt;/h3&gt;

&lt;p&gt;For any sustained piece of work, build a CLAUDE.md file alongside your project. Use it to capture the broader goal of the session, conventions the agent should follow, references it should read before acting, and anything you have asked it not to touch. Update it as the work evolves. Over a long chat this is the difference between an agent that holds the thread and an agent that drifts back to a generic default behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get it to validate its own work
&lt;/h3&gt;

&lt;p&gt;Never accept "done" at face value. Ask it to read back what it changed, run an audit against the change, or open the affected nodes and report their current state. If you are doing something destructive, ask it to dry-run first and list what would change before you let it commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make regular backups in Figma version history
&lt;/h3&gt;

&lt;p&gt;Before any larger or potentially breaking change, save a named version in Figma's version history. This is your undo button when the agent confidently does the wrong thing at scale. It costs you ten seconds and it has saved me from rebuilding entire collections more than once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Plan for token cost
&lt;/h3&gt;

&lt;p&gt;Cowork chews through tokens. For the month of intensive library work I moved onto the Pro Max 20x plan so I could stop thinking about usage caps, and that turned out to be the right call. If you are working at a lower tier, scope your prompts tighter, lean harder on plugins for repetitive work, and avoid open-ended "explore the file and tell me what you find" prompts. Those are the most expensive and the least reliable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three new workflows worth knowing about specifically
&lt;/h2&gt;

&lt;p&gt;The capabilities I covered above are general. These are three specific workflows where I went from "this is a known problem with no good answer" to "this runs in one prompt." Worth calling out individually because they each unlock something that was either painful or genuinely not possible before.&lt;/p&gt;

&lt;h3&gt;
  
  
  Drift detection against your code-side tokens
&lt;/h3&gt;

&lt;p&gt;Drop your shadcn CSS variables file into the project folder. Ask Cowork to read it and compare against the equivalent Figma variables, reporting any value mismatches, any tokens that exist on one side and not the other, and any naming inconsistencies.&lt;/p&gt;

&lt;p&gt;The output is a list. You decide which side is right and ask Cowork to bring the other into line. The point is that the drift becomes visible in one pass, instead of slowly accumulating in the background as it does today. If your code-side tokens are the source of truth, the same workflow goes the other way: read the CSS, write the values back into Figma.&lt;/p&gt;

&lt;h3&gt;
  
  
  Per-variable reference docs generated from the live Figma file
&lt;/h3&gt;

&lt;p&gt;Ask Cowork to walk a collection and produce a reference document, one entry per variable, with the current value, what it is aliased to, and where it is used. Store the output alongside your library and your docs stay aligned with the file without anyone transcribing anything. Re-run it after any meaningful change. This is the one that finally killed the "docs are always six weeks out of date" problem for me.&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom plugins for your most repetitive jobs
&lt;/h3&gt;

&lt;p&gt;When the task is "do this exact thing several thousand times across a file," I do not ask the agent to do it. I ask the agent to write me a plugin that does it, run the plugin, and verify the result. Stripping a specific deprecated style off every instance of a component, retagging a large set of nodes, batch-renaming layers to match a new convention. The plugin is faster, cheaper, more reliable, and you keep it around for next time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The moment you will want to quit
&lt;/h2&gt;

&lt;p&gt;I will tell you this so you are ready for it. There have been at least two moments during this month where I was so frustrated at Cowork's apparent ineptitude that I genuinely considered abandoning the project and canceling my plan. Something I had asked it to do had gone badly wrong at scale, and the damage was big enough and expensive enough that the cleanup was going to take longer than starting from scratch.&lt;/p&gt;

&lt;p&gt;The thing that kept me going both times was simple: I went back to doing the same job manually, and after about twenty minutes it felt absurd. The power of the tool, when it works, is high enough that going back is no longer a serious option. The frustration is real, but it is a frustration of working out the right workflow, not a frustration with the underlying capability.&lt;/p&gt;

&lt;p&gt;If you find yourself in that moment, the answer is almost always the same. Make the scope smaller. Point at a single node. Ask for a plugin instead of an agent run. Add a validation step. Restore from version history and try again. Update your CLAUDE.md so the agent does not make the same mistake twice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start small
&lt;/h2&gt;

&lt;p&gt;Pick one collection. Something contained, like renaming a set of spacing variables to a new convention. Run it with the rules above and see how it feels. Build from there.&lt;/p&gt;

&lt;p&gt;If you own a &lt;a href="https://shadcncraft.com/figma" rel="noopener noreferrer"&gt;shadcncraft Figma kit&lt;/a&gt;, every workflow in this post runs against your file today. If you are running a different shadcn-based library, most of them will transfer with minor changes.&lt;/p&gt;

&lt;p&gt;If you hit something that does not behave the way this guide suggests, come and tell us in &lt;a href="https://discord.com/invite/tzgMKeqG3s" rel="noopener noreferrer"&gt;the Discord&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>figma</category>
      <category>shadcn</category>
      <category>claude</category>
      <category>cowork</category>
    </item>
    <item>
      <title>From Figma to production React, with AI in the loop</title>
      <dc:creator>shadcncraft</dc:creator>
      <pubDate>Wed, 27 May 2026 05:21:17 +0000</pubDate>
      <link>https://dev.to/shadcncraft/from-figma-to-production-react-with-ai-in-the-loop-59i4</link>
      <guid>https://dev.to/shadcncraft/from-figma-to-production-react-with-ai-in-the-loop-59i4</guid>
      <description>&lt;p&gt;The four pieces of the new design-to-code workflow: shadcncraft in your project, the shadcncraft Figma kit, the Figma MCP, and the shadcn MCP. How to set it up, what the loop actually looks like on a real task, and how to bring it into an existing project.&lt;/p&gt;

&lt;p&gt;Designers have been promised "design-to-code" for years. What kept arriving was a button that exported a div soup nobody wanted to ship. The promise quietly stalled. Something has shifted in the last twelve months, and the workflow that comes out the other side is finally one a real team can use.&lt;/p&gt;

&lt;p&gt;This post is for the designer who wants to stop throwing redlines over the wall, and for the developer who wants to stop translating Figma layers into JSX by hand. It is about a single loop: design in Figma using a kit that matches your React components one to one, then let an AI tool read the Figma file and produce code that already speaks the same language as your codebase. Both sides of the team work in their native tool. The AI does the translation step that used to be a tax on everyone.&lt;/p&gt;

&lt;p&gt;Below is how the loop works, how to set it up on an existing project, and where to keep your hand on the wheel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this loop is different now
&lt;/h2&gt;

&lt;p&gt;Three things had to be true at the same time, and they finally are.&lt;/p&gt;

&lt;p&gt;First, your design file has to use the same building blocks as your production code. Not a "Figma version of a button." The same button, with the same name, the same variants, the same prop surface, sitting in your Figma library and in your &lt;code&gt;/components/ui/&lt;/code&gt; folder. shadcncraft is built around this constraint. The Figma kit and the React registry mirror each other component for component, slot for slot.&lt;/p&gt;

&lt;p&gt;Second, the AI needs to see the design. The Figma MCP server exposes design files to AI tools the same way the file system is exposed to a code editor. Claude, Cursor, Codex, and friends can now read a frame, understand its structure, see the variables in use, and reason about it. This is what flipped the workflow. Until last year, AI tools could only see the screenshot. Now they can read the layers.&lt;/p&gt;

&lt;p&gt;Third, the AI needs to recognise the components. The shadcn MCP server, plus shadcncraft's namespaced registry, means the AI is not generating React from scratch every time. It can pull the right component from your installed kit and compose with it. The generated code looks like it came from someone who already knew your conventions, because it did.&lt;/p&gt;

&lt;p&gt;When those three pieces are connected, the loop runs like this: design a screen, ask the AI to implement it, get a first pass that uses your real components, refine in the editor. The translation step that used to take an afternoon takes a few minutes. The drift between design and code shrinks because both ends are pinned to the same kit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup, end to end
&lt;/h2&gt;

&lt;p&gt;There are four pieces to connect. Once they are in place you do not touch this part again.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. shadcncraft installed in your React project
&lt;/h3&gt;

&lt;p&gt;If your project already uses shadcn/ui, you are most of the way there. Add the shadcncraft registry to your &lt;code&gt;components.json&lt;/code&gt;, set your license key in &lt;code&gt;.env&lt;/code&gt;, and you can install any block or component with the standard shadcn CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx shadcn@latest add @shadcncraft/header-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The full setup is in the &lt;a href="https://shadcncraft.com/docs/registry/installation" rel="noopener noreferrer"&gt;Installation docs&lt;/a&gt;, including how to switch style presets and how to configure a team license.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The shadcncraft Figma kit, opened in Figma
&lt;/h3&gt;

&lt;p&gt;Open the kit in Figma. This becomes your design library. Every block and component you can install in code has a matching counterpart here, with the same name and the same variants. Themes are managed inside the file using the shadcncraft Figma plugin, which can export shadcn-compatible CSS variables straight from your Figma file into your codebase. Your design tokens and your code tokens stop being two separate things to maintain.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Figma MCP server, connected to your AI tool
&lt;/h3&gt;

&lt;p&gt;Enable the Figma MCP server in Figma's settings, then point your AI tool at it. Cursor, Claude Code, VS Code, and Codex all support MCP servers. Once connected, the AI can read any Figma file you have open, including the shadcncraft kit and the screens you are designing on top of it.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The shadcn MCP server, also connected
&lt;/h3&gt;

&lt;p&gt;The shadcncraft registry works with the shadcn MCP server out of the box. From your project root, run the init command for your editor of choice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx shadcn@latest mcp init &lt;span class="nt"&gt;--client&lt;/span&gt; cursor
pnpm dlx shadcn@latest mcp init &lt;span class="nt"&gt;--client&lt;/span&gt; claude
pnpm dlx shadcn@latest mcp init &lt;span class="nt"&gt;--client&lt;/span&gt; vscode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With both MCP servers connected, your AI tool can simultaneously read the Figma file (via Figma MCP) and install the right components from your kit (via shadcn MCP). This is the bridge.&lt;/p&gt;

&lt;p&gt;If any of the four pieces are missing, the loop still works in a degraded form. You can build by hand without the AI, or use the AI without Figma MCP and lose the design context. But all four together is what makes this feel like a single workflow rather than four separate tools you keep tab-switching between.&lt;/p&gt;

&lt;h2&gt;
  
  
  The loop in practice
&lt;/h2&gt;

&lt;p&gt;Here is what the loop looks like on a real task. Imagine you have an existing SaaS app, already built on shadcn/ui, and you need to add a billing settings page.&lt;/p&gt;

&lt;p&gt;You open your Figma file. You compose the screen out of shadcncraft blocks: a page header, a settings nav, a plan summary card, an invoices table, a payment method block. Because these are real components from the kit, they already have the right tokens, the right spacing, the right empty and error states. You change copy, swap the plan tier, point the table at your real data shape. You spend maybe twenty minutes designing.&lt;/p&gt;

&lt;p&gt;Then you switch to your editor and ask Claude something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Build the billing settings page from the selected frame in Figma. Use the existing shadcncraft components in this project. Keep the existing route conventions and data fetching patterns from the user settings page."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude reads the Figma frame through the Figma MCP. It sees the shadcncraft layer names. Because shadcncraft's convention is for layer names to match the &lt;code&gt;data-slot&lt;/code&gt; values in the React components, it knows that &lt;code&gt;card-header&lt;/code&gt; becomes &lt;code&gt;&amp;lt;CardHeader&amp;gt;&lt;/code&gt;, that &lt;code&gt;tabs-trigger&lt;/code&gt; becomes &lt;code&gt;&amp;lt;TabsTrigger&amp;gt;&lt;/code&gt;, and so on. It installs anything from the registry that is not already in your project, references your existing data fetching patterns, and outputs the page.&lt;/p&gt;

&lt;p&gt;The first pass gets you most of the way there. You review the diff. You correct the things only you can correct: business rules, real data shape, copy that the design did not specify, edge cases the AI did not consider. You commit.&lt;/p&gt;

&lt;p&gt;This is the part the previous generation of design-to-code tools never delivered. The code that comes out is not div-soup that you would never write yourself. It uses the same components you would have picked, with the same props, in the same composition. Because the AI did not invent the components from a screenshot, it composed them from your installed kit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the loop breaks, and what to do about it
&lt;/h2&gt;

&lt;p&gt;Honest answer: the loop is not a magic button. It works well when both ends are disciplined. Here is what to watch for.&lt;/p&gt;

&lt;p&gt;The Figma file has to be built out of shadcncraft components, not custom shapes that happen to look like shadcncraft components. If your designer detached an instance to make a one-off tweak, the AI cannot see the underlying component anymore. It just sees a frame with some rectangles in it. The output will be generic JSX rather than your kit. The fix is mechanical: keep instances intact, use slots and variant properties to make changes rather than detaching.&lt;/p&gt;

&lt;p&gt;The AI's output is a starting point, not a final commit. Treat it like a pull request from a fast but new contributor. Read it, run it, refactor anything that does not fit your codebase's conventions. The advantage is the speed of the first pass, not the elimination of review.&lt;/p&gt;

&lt;p&gt;Drift is real, but it is now measurable. If you generate a screen today and the kit updates next month, your screen does not auto-update. This is the same problem any installed-not-imported registry has, and shadcncraft handles it the way shadcn does, with the &lt;a href="https://shadcncraft.com/docs/registry/installation" rel="noopener noreferrer"&gt;update strategy in the docs&lt;/a&gt;. The point is that drift is now visible and resolvable, instead of being the permanent baseline.&lt;/p&gt;

&lt;p&gt;When the AI picks the wrong component, the fix is usually a clearer name. If the same prompt keeps producing a &lt;code&gt;Dialog&lt;/code&gt; when you wanted a &lt;code&gt;Sheet&lt;/code&gt;, that is feedback about your naming, not about the AI. shadcncraft component names are public surface, and we update them when they consistently confuse tools or people.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this beats the previous attempts
&lt;/h2&gt;

&lt;p&gt;Two reasons, both structural.&lt;/p&gt;

&lt;p&gt;The first generation of design-to-code tools tried to be clever about screenshots. They read pixels and tried to infer structure. That works for a static rectangle and falls apart on anything stateful, anything responsive, anything composed of real primitives. By contrast, this loop reads the actual Figma layer tree and matches it to actual React components. There is no inference layer to get wrong.&lt;/p&gt;

&lt;p&gt;The second is that the design file and the production code are pinned to the same source. Both sides use the same kit, with the same names, the same variants, the same tokens. The AI does not have to translate between two languages, it just has to assemble. That is the part AI tools are good at right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing this into an existing project
&lt;/h2&gt;

&lt;p&gt;You do not need to start over. You probably should not.&lt;/p&gt;

&lt;p&gt;If your project already uses shadcn/ui, you can layer shadcncraft on top without ripping anything out. Components install side by side with your existing ones. Tokens align. Pick one screen on your roadmap, ideally one that is greenfield or due for a refresh, and try the loop end to end on that single screen. A settings page, a new onboarding flow, a billing card. Anything contained enough that you can compare the before and after honestly.&lt;/p&gt;

&lt;p&gt;What you are looking for in that first screen is not a productivity number. You are looking for whether the loop feels like one workflow or four. If it feels like one, expand from there. If it feels like four, the most common culprit is that one of the four pieces is not actually connected, usually the Figma MCP. Worth ten minutes to check.&lt;/p&gt;

&lt;p&gt;If you want a place to start, the &lt;a href="https://shadcncraft.com//docs/registry/installation" rel="noopener noreferrer"&gt;Installation docs&lt;/a&gt; cover the project side and the shadcn MCP setup. The Figma kit and the Figma MCP setup live inside Figma itself. Pick a screen, set aside an afternoon, and see what comes out the other side.&lt;/p&gt;

&lt;p&gt;The promise that designers and developers could ship from the same source has been around forever. This is the first time it has been true.&lt;/p&gt;

</description>
      <category>shadcn</category>
      <category>figma</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Create and preview your own design system with shadcncraft create</title>
      <dc:creator>shadcncraft</dc:creator>
      <pubDate>Thu, 30 Apr 2026 00:52:25 +0000</pubDate>
      <link>https://dev.to/shadcncraft/create-and-preview-your-own-design-system-with-shadcncraft-create-4iip</link>
      <guid>https://dev.to/shadcncraft/create-and-preview-your-own-design-system-with-shadcncraft-create-4iip</guid>
      <description>&lt;p&gt;shadcncraft create mirrors shadcn create, with the same styles, bases, icon libraries, themes, fonts, and preset workflow, plus live previews of shadcncraft pro blocks.&lt;/p&gt;

&lt;p&gt;shadcncraft now has its own create experience.&lt;/p&gt;

&lt;p&gt;It mirrors &lt;a href="https://ui.shadcn.com/create" rel="noopener noreferrer"&gt;shadcn create&lt;/a&gt;: same styles, same bases, same icon libraries, same themes, same fonts, same radius, same preset codes.&lt;/p&gt;

&lt;p&gt;The difference is the preview. On &lt;a href="https://shadcncraft.com/create" rel="noopener noreferrer"&gt;shadcncraft create&lt;/a&gt;, you can test those combinations directly on shadcncraft pro blocks before installing anything.&lt;/p&gt;

&lt;p&gt;If you already have a shadcn project, you can also resolve its current preset with the shadcn CLI, import it into shadcncraft create, and preview your existing design system on real pro blocks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow
&lt;/h2&gt;

&lt;p&gt;If you already have a shadcn project:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Resolve your current preset.&lt;/li&gt;
&lt;li&gt;Import the preset into shadcncraft create.&lt;/li&gt;
&lt;li&gt;Preview it on pro blocks.&lt;/li&gt;
&lt;li&gt;Adjust the config if needed.&lt;/li&gt;
&lt;li&gt;Use the new preset with &lt;code&gt;init&lt;/code&gt; or &lt;code&gt;apply&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you are starting fresh, skip the first step and build a preset directly in &lt;a href="https://shadcncraft.com/create" rel="noopener noreferrer"&gt;shadcncraft create&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resolve your current preset
&lt;/h2&gt;

&lt;p&gt;From your existing shadcn project, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest preset resolve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use the alias:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest preset info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI reads your current shadcn config and returns the matching preset code.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Preset
  code         b5Kc6P0Vc
  version      b
  style        luma
  baseColor    olive
  theme        lime
  chartColor   sky
  iconLibrary  hugeicons
  font         geist
  fontHeading  inherit
  radius       default
  menuAccent   subtle
  menuColor    default
  url          https://ui.shadcn.com/create?preset=b5Kc6P0Vc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is the code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;b5Kc6P0Vc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That code contains the visual setup: style, theme, colors, fonts, radius, icons, and other preset settings.&lt;/p&gt;

&lt;p&gt;For monorepos, point the command at the app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest preset resolve &lt;span class="nt"&gt;-c&lt;/span&gt; apps/web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For machine-readable output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest preset resolve &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Import it into shadcncraft create
&lt;/h2&gt;

&lt;p&gt;Presets are fully compatible between shadcn create and shadcncraft create.&lt;/p&gt;

&lt;p&gt;If you made a preset on &lt;code&gt;ui.shadcn.com/create&lt;/code&gt;, you can import it into shadcncraft create. If you resolved one from an existing project, import that too.&lt;/p&gt;

&lt;p&gt;The importer accepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A bare preset code&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;--preset &amp;lt;code&amp;gt;&lt;/code&gt; flag&lt;/li&gt;
&lt;li&gt;A full &lt;code&gt;shadcn init --preset &amp;lt;code&amp;gt;&lt;/code&gt; command&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open &lt;a href="https://shadcncraft.com/create" rel="noopener noreferrer"&gt;shadcncraft create&lt;/a&gt;, choose the open preset option, and paste any of these:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;b5Kc6P0Vc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--preset b5Kc6P0Vc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest init &lt;span class="nt"&gt;--preset&lt;/span&gt; b5Kc6P0Vc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;shadcncraft create extracts the preset code and applies the same config to the customizer.&lt;/p&gt;

&lt;p&gt;Now your existing shadcn setup is loaded into the preview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preview real pro blocks
&lt;/h2&gt;

&lt;p&gt;The point of shadcncraft create is the block preview.&lt;/p&gt;

&lt;p&gt;Preview your preset across real shadcncraft pro blocks: marketing, application, and ecommerce. Small component previews help, but blocks expose the full system.&lt;/p&gt;

&lt;p&gt;You can keep adjusting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base: Radix UI or Base UI&lt;/li&gt;
&lt;li&gt;Style: Vega, Nova, Maia, Lyra, Mira, Luma, or Sera&lt;/li&gt;
&lt;li&gt;Icon library: Lucide, Tabler Icons, Hugeicons, Phosphor Icons, or Remix Icon&lt;/li&gt;
&lt;li&gt;Theme, base color and chart color&lt;/li&gt;
&lt;li&gt;Font and heading font&lt;/li&gt;
&lt;li&gt;Radius&lt;/li&gt;
&lt;li&gt;Menu accent and menu color&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Create a new project
&lt;/h2&gt;

&lt;p&gt;Once the preview feels right, use the preset with &lt;code&gt;init&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest init &lt;span class="nt"&gt;--preset&lt;/span&gt; b5Kc6P0Vc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a new project with the selected style, theme, fonts, radius, icons, and preset settings from the start.&lt;/p&gt;

&lt;p&gt;You can also include a template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest init &lt;span class="nt"&gt;--template&lt;/span&gt; next &lt;span class="nt"&gt;--preset&lt;/span&gt; b5Kc6P0Vc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same shadcn CLI. Same preset resolver. shadcncraft create just gives you a better way to choose before running the command.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apply it to an existing project
&lt;/h2&gt;

&lt;p&gt;Presets are not only for new projects.&lt;/p&gt;

&lt;p&gt;To update an existing shadcn project, apply the preset:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest apply b5Kc6P0Vc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This updates the project to match the preset, including theme, colors, CSS variables, fonts, icons, and detected UI components.&lt;/p&gt;

&lt;p&gt;You can also apply only the parts you want:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest apply b5Kc6P0Vc &lt;span class="nt"&gt;--only&lt;/span&gt; theme
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest apply b5Kc6P0Vc &lt;span class="nt"&gt;--only&lt;/span&gt; font
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest apply b5Kc6P0Vc &lt;span class="nt"&gt;--only&lt;/span&gt; theme,font
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That makes it easy to test a new visual direction without rebuilding the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;The new shadcn preset commands make your current project portable.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;preset resolve&lt;/code&gt; and &lt;code&gt;preset info&lt;/code&gt; turn an existing project into a preset code.&lt;/p&gt;

&lt;p&gt;shadcncraft create can import that code and apply the same config to the live customizer.&lt;/p&gt;

&lt;p&gt;Then you can preview your existing design system against shadcncraft pro blocks before changing anything in your app.&lt;/p&gt;

&lt;p&gt;Resolve the preset. Open it in shadcncraft create. Preview real pro blocks. Then create, apply, or share the setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Open &lt;a href="https://shadcncraft.com/create" rel="noopener noreferrer"&gt;shadcncraft create&lt;/a&gt;, pick a pro block, and start switching styles, bases, icons, themes, fonts, and radius.&lt;/p&gt;

&lt;p&gt;When the preview looks right, copy the preset.&lt;/p&gt;

&lt;p&gt;Create a new project with it, apply it to an existing one, or import it back into shadcn create.&lt;/p&gt;

&lt;p&gt;Same shadcn foundation. Same preset workflow. Now with shadcncraft pro blocks in the preview.&lt;/p&gt;

</description>
      <category>shadcn</category>
      <category>react</category>
      <category>radix</category>
      <category>baseui</category>
    </item>
    <item>
      <title>Pick your shadcn base, your style, your icons</title>
      <dc:creator>shadcncraft</dc:creator>
      <pubDate>Tue, 28 Apr 2026 02:48:39 +0000</pubDate>
      <link>https://dev.to/shadcncraft/pick-your-shadcn-base-your-style-your-icons-23dm</link>
      <guid>https://dev.to/shadcncraft/pick-your-shadcn-base-your-style-your-icons-23dm</guid>
      <description>&lt;p&gt;shadcncraft now supports Base UI, all seven shadcn styles, multiple icon libraries, and a new customizer for previewing combinations before install.&lt;/p&gt;

&lt;p&gt;shadcncraft now adapts to your setup.&lt;/p&gt;

&lt;p&gt;Choose your base, style, and icon library, and everything follows. A new customizer lets you preview combinations live.&lt;/p&gt;

&lt;p&gt;Until now, every component shipped with fixed defaults: Radix UI, the standard shadcn look, and Lucide icons. If your project used something else, you had to adjust it after install.&lt;/p&gt;

&lt;p&gt;That is no longer the case. shadcncraft now respects your project config from the start.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/kBTgpTq3U-A"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Your project defines the defaults
&lt;/h2&gt;

&lt;p&gt;Your setup is the source of truth. The registry reads what you've chosen and installs components to match:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Base&lt;/strong&gt; — Radix UI and Base UI, both fully supported.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Style&lt;/strong&gt; — all seven shadcn presets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Icons&lt;/strong&gt; — Lucide, Tabler Icons, Hugeicons, Phosphor Icons, and Remix Icon.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tokens, fonts, radius, and themes remain unchanged. Nothing gets overridden.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built on shadcn styles
&lt;/h2&gt;

&lt;p&gt;These styles come directly from shadcn. Same presets, same output.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vega&lt;/strong&gt; — classic shadcn look.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nova&lt;/strong&gt; — tighter spacing, more compact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maia&lt;/strong&gt; — softer and more rounded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lyra&lt;/strong&gt; — sharp and structured.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mira&lt;/strong&gt; — dense and product-focused.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Luma&lt;/strong&gt; — softer and more fluid.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sera&lt;/strong&gt; — editorial and typographic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your project already uses one of these, shadcncraft follows it. If not, you can try them across the library.&lt;/p&gt;

&lt;p&gt;Custom styles from shadcn create also work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preview every combination
&lt;/h2&gt;

&lt;p&gt;Each component and block page now includes a live customizer.&lt;/p&gt;

&lt;p&gt;You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Switch between Radix and Base UI&lt;/li&gt;
&lt;li&gt;Change styles&lt;/li&gt;
&lt;li&gt;Swap icon libraries&lt;/li&gt;
&lt;li&gt;Adjust fonts and radius&lt;/li&gt;
&lt;li&gt;Apply shadcn or &lt;a href="https://tweakcn.com" rel="noopener noreferrer"&gt;tweakcn&lt;/a&gt; themes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the same model as &lt;a href="https://ui.shadcn.com/create" rel="noopener noreferrer"&gt;shadcn create&lt;/a&gt;, applied to every component and block.&lt;/p&gt;

&lt;p&gt;You can see exactly what you'll get before installing anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Works across the library
&lt;/h2&gt;

&lt;p&gt;Support is library-wide. Components and blocks are built to follow your config.&lt;/p&gt;

&lt;p&gt;Some older blocks may not support every option yet. We're updating those over time and will surface support more clearly on each component and block page.&lt;/p&gt;

&lt;h2&gt;
  
  
  One-line migration
&lt;/h2&gt;

&lt;p&gt;Nothing breaks if you're already using shadcncraft.&lt;/p&gt;

&lt;p&gt;To enable style-aware install, change one line in &lt;code&gt;components.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;{
  "registries": {
    "@shadcncraft": {
&lt;span class="gd"&gt;-     "url": "https://shadcncraft.com/r/{name}",
&lt;/span&gt;&lt;span class="gi"&gt;+     "url": "https://shadcncraft.com/r/{style}/{name}",
&lt;/span&gt;      "headers": {
        // ... your existing headers ...
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Try the customizer on a &lt;a href="https://shadcncraft.com/blocks/pro-marketing/pricing/pricing-1" rel="noopener noreferrer"&gt;live pro block&lt;/a&gt;. You can test different bases, styles, icons, and themes in our pro &lt;a href="https://shadcncraft.com/components" rel="noopener noreferrer"&gt;components&lt;/a&gt; and &lt;a href="https://shadcncraft.com/blocks" rel="noopener noreferrer"&gt;blocks&lt;/a&gt; before installing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this is going
&lt;/h2&gt;

&lt;p&gt;This brings shadcncraft closer to how &lt;a href="https://ui.shadcn.com/create" rel="noopener noreferrer"&gt;shadcn create&lt;/a&gt; works.&lt;/p&gt;

&lt;p&gt;Same styles. Same structure. Same expectations.&lt;/p&gt;

&lt;p&gt;The goal is simple: your design system behaves the same in Figma and in code.&lt;/p&gt;

&lt;p&gt;More updates coming soon.&lt;/p&gt;

</description>
      <category>shadcn</category>
      <category>baseui</category>
      <category>radix</category>
      <category>react</category>
    </item>
    <item>
      <title>Introducing shadcncraft</title>
      <dc:creator>shadcncraft</dc:creator>
      <pubDate>Wed, 08 Apr 2026 06:37:08 +0000</pubDate>
      <link>https://dev.to/shadcncraft/introducing-shadcncraft-2i37</link>
      <guid>https://dev.to/shadcncraft/introducing-shadcncraft-2i37</guid>
      <description>&lt;h2&gt;
  
  
  New name, new &lt;a href="https://shadcncraft.com" rel="noopener noreferrer"&gt;website&lt;/a&gt;, bigger vision
&lt;/h2&gt;

&lt;p&gt;Today we’re launching a new name, a new brand, and a completely rebuilt website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shadcraft is now shadcncraft.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This change reflects what the product has become and where it is going next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the rename
&lt;/h2&gt;

&lt;p&gt;From the beginning, the goal was simple: build the best design system built on top of &lt;strong&gt;shadcn/ui&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Over time the product grew beyond a simple Figma UI kit. It became a full ecosystem built around the shadcn stack, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;React component library&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;matching Figma design system&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Hundreds of production ready UI blocks&lt;/li&gt;
&lt;li&gt;A plugin for importing and exporting themes&lt;/li&gt;
&lt;li&gt;Tools designed to work naturally with modern AI coding workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The new name makes that connection clear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;shadcncraft&lt;/strong&gt; reflects what the product actually is: carefully crafted design system tools built specifically for the shadcn ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  A completely new website
&lt;/h2&gt;

&lt;p&gt;Alongside the rename, we’ve rebuilt the entire website from scratch.&lt;/p&gt;

&lt;p&gt;The old site did not reflect the scope of the product anymore. It focused heavily on the Figma kit and did not show the full design system.&lt;/p&gt;

&lt;p&gt;The new site fixes that.&lt;/p&gt;

&lt;p&gt;It clearly shows what shadcncraft provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React components ready for production&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Matching Figma design files&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hundreds of blocks across marketing, application, and ecommerce&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full sites and templates&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design tokens and theming tools&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is now easier to explore, preview, and understand.&lt;/p&gt;

&lt;p&gt;The new structure also makes it much easier to browse blocks, pages, and full site templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for modern workflows
&lt;/h2&gt;

&lt;p&gt;Frontend development is changing quickly.&lt;/p&gt;

&lt;p&gt;Tools like Cursor, Claude Code, v0, and Figma Make are reshaping how developers and designers work together.&lt;/p&gt;

&lt;p&gt;Design systems now need to support both humans and AI.&lt;/p&gt;

&lt;p&gt;shadcncraft is designed for that new workflow.&lt;/p&gt;

&lt;p&gt;The system is built around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean React components&lt;/li&gt;
&lt;li&gt;Structured design tokens&lt;/li&gt;
&lt;li&gt;Predictable theming&lt;/li&gt;
&lt;li&gt;Consistent naming and patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easier for developers, designers, and AI tools to generate high quality UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  React and Figma working together
&lt;/h2&gt;

&lt;p&gt;One of the biggest goals for shadcncraft is tight alignment between &lt;strong&gt;design and code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every block and component exists in both places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React code ready to install&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Matching Figma components&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Designers can work in Figma while developers install the exact same blocks into their projects using the CLI.&lt;/p&gt;

&lt;p&gt;No guesswork. No rebuilding UI from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  What stays the same
&lt;/h2&gt;

&lt;p&gt;Even with the new name and brand, the core philosophy remains the same.&lt;/p&gt;

&lt;p&gt;shadcncraft is still focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean, production ready UI&lt;/li&gt;
&lt;li&gt;No unnecessary abstraction&lt;/li&gt;
&lt;li&gt;Simple installation via the shadcn CLI&lt;/li&gt;
&lt;li&gt;Full ownership of the code you install&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You get real components you can ship to production, not locked templates or proprietary frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s coming next
&lt;/h2&gt;

&lt;p&gt;The rebrand and website launch are just the beginning.&lt;/p&gt;

&lt;p&gt;There is a lot more coming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More blocks across all categories&lt;/li&gt;
&lt;li&gt;More full site templates&lt;/li&gt;
&lt;li&gt;Deeper theming support&lt;/li&gt;
&lt;li&gt;Improvements to the plugin&lt;/li&gt;
&lt;li&gt;Tighter integration with modern AI coding tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal remains simple: make it dramatically faster to design and ship high quality interfaces with shadcn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank you
&lt;/h2&gt;

&lt;p&gt;A huge thank you to everyone who has supported the project so far.&lt;/p&gt;

&lt;p&gt;Thousands of designers and developers have already used the kit, shared feedback, and helped shape what shadcncraft is becoming.&lt;/p&gt;

&lt;p&gt;If you have not explored the new site yet, &lt;a href="https://shadcncraft.com" rel="noopener noreferrer"&gt;take a look&lt;/a&gt; and see what is new.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/6kKGhTohG8Y"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>shadcn</category>
      <category>figma</category>
      <category>react</category>
    </item>
    <item>
      <title>New way to bring your tweakcn themes into Figma (works with shadcn/ui)</title>
      <dc:creator>shadcncraft</dc:creator>
      <pubDate>Sun, 03 Aug 2025 21:22:47 +0000</pubDate>
      <link>https://dev.to/shadcncraft/new-way-to-bring-your-tweakcn-themes-into-figma-works-with-shadcnui-1km0</link>
      <guid>https://dev.to/shadcncraft/new-way-to-bring-your-tweakcn-themes-into-figma-works-with-shadcnui-1km0</guid>
      <description>&lt;p&gt;Hey folks 👋🏻&lt;/p&gt;

&lt;p&gt;If you’ve been using &lt;a href="http://tweakcn.com" rel="noopener noreferrer"&gt;tweakcn&lt;/a&gt; to customise your shadcn/ui theme in the browser, you can now bring those themes straight into Figma via a new integration with &lt;a href="https://shadcraft.com" rel="noopener noreferrer"&gt;Shadcraft&lt;/a&gt; and the tweakcn plugin.&lt;/p&gt;

&lt;p&gt;Here’s how it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🎨 tweakcn is a super handy in-browser theming tool for shadcn/ui (great for quickly testing out colour, radius, shadow, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🔌 With the plugin, you can now apply your custom theme to a Figma UI kit built specifically for Tailwind and shadcn-based projects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;⚡ It’s all powered by Figma variables, so you can instantly switch between themes or update styles without tedious overrides&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s been a smoother handoff experience for us working across dev/design — especially when devs pick the theme in tweakcn and designers apply it in Figma.&lt;/p&gt;

&lt;p&gt;You can try it out at tweakcn.com — happy to answer questions or share how we’ve been using it in side projects too.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fupnq8pnnmxjbelwqkb2f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fupnq8pnnmxjbelwqkb2f.png" alt=" " width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
  </channel>
</rss>
