We’ve updated our Figma UI kit to align with the latest shadcn/ui release and refined existing components for a better user experience.

We're excited to announce that we updated our Figma kit to match the newest shadcn/ui release. This update introduces new components like Button Group, Field, Input Group, Item, Kbd, and Spinner—plus fresh Sign up and OTP blocks. We’ve also polished existing components, added new Button icon sizes (icon-sm, icon-lg), swapped loading states to Spinner, and unified forms with the new Field component.
Be sure to visit the component pages Playground in our Figma kit for new examples that show how to build different variants.

Please see our guide in the documentation.
We'll be deleting Form page in the next Figma kit update (Form is replaced by the Field component).
Not yet. We plan to update Pro Blocks code in an upcoming update.
The October 2025 update adds seven new primitives: Spinner, Kbd, Button Group, Input Group, Field, Item, and Empty; each made to handle those small, repeated bits of UI we end up rewriting in every project.
If you've ever copied code for a simple loading spinner or spent time aligning buttons, you'll know the pain these new components aim to fix. Let's go through them one by one.
These primitives are about predictable markup, roles, and class hooks. No hidden state. No tight coupling. You can drop them into React, Vue, Svelte, Solid, or plain HTML and wire them with whatever state tool you like. Your theme tokens flow through, your icons plug in, and your accessibility rules stay intact. That is how they reduce repetition: the pattern is stable, the binding is up to you.
What it is: A consistent way to show loading, from tiny inline hints to full page waits.
Why it matters: Teams often ship five different spinners with five sizes and three colors. A shared Spinner gives you one design language for progress across buttons, tables, modals, and pages.
Where it shines:
Good habits: Pair it with clear copy like "Saving" or "Loading results." Mark busy regions so screen readers know an area is updating. Keep motion subtle to avoid visual noise.
What it is: A small component for keyboard keys and shortcuts. Think Esc, ⌘K, Ctrl + S.
Why it matters: Shortcuts appear in docs, menus, tooltips, banners, and onboarding. Kbd keeps them readable and consistent, with spacing and typography that match the rest of your UI.
What you can do now:
Accessibility tip: Localize labels for platform keys. On Windows, show Ctrl. On macOS, show ⌘.
What it is: A wrapper that keeps a row of buttons tight, aligned, and tidy.
Why it matters: Toolbars and segmented controls often have gaps, double borders, or odd radii. Button Group merges edges so the group reads as one control.
Use cases:
Team benefit: Designers can hand off one pattern. Developers stop hand-tuning borders on every screen.
What it is: A flexible input wrapper for prefixes, suffixes, icons, and small actions.
Why it matters: Most apps repeat the same structure around inputs. Search icons. Clear buttons. Currency and unit labels. Input Group standardizes the chrome, so you do not rebuild it each time.
Patterns it unlocks:
Design note: Because it is a wrapper, you keep your existing inputs. The group handles spacing and alignment.
What it is: The form glue. It ties together a label, the control, a hint, and an error. It wires ids and ARIA so assistive tech reads the right thing.
Why it matters: Form markup gets messy fast. Field locks in a good structure. You get consistent labels, optional hints, and clear error messaging without custom wiring every time.
Where to use it:
Accessibility checklist: Each field should have one label, an optional hint, and an optional error. These link to the input so screen readers announce them in order.
What it is: A simple row primitive for selectable lists. Think menu items, command items, dropdown options, and settings rows.
Why it matters: Lists often need the same states again and again. Hover. Focus. Selected. Disabled. The item gives you one reliable row that supports those states without you inventing a new pattern.
What you can do now:
Styling tip: Drive states with data attributes so your styles remain readable and portable.
What it is: A friendly "nothing here yet" block that sets context and provides a next step.
Why it matters: Blank screens confuse users. Empty gives them a short message, a small visual, and one clear action.
Great uses:
Tone advice: Keep the title short, the description helpful, and offer a single primary action. Optional secondary links can sit below.
The payoff is less custom markup, fewer throwaway wrappers, and a cleaner design system that feels the same from page to page.
These primitives are small, but they fix problems you bump into every week:
Adopt them where you feel the most friction. You will write less code, ship faster, and your product will feel more consistent without a heavy rewrite.
Founder @ shadcndesign.com

Ten agent skills covering the full shadcn/ui workflow: design in Figma, turn designs into code, and build pages with Pro Blocks. Included in the Plus, React, and Premium packages.

The new shadcn/ui Questionnaire component is now in our Figma UI kit. Design multi-step surveys, onboarding flows, and intake forms in all 8 styles.

The shadcn/ui kit for Figma (PRO) now ships every style in a single file. Switch one variable mode and the whole kit restyles, plus a new Typeset system and Figma plugin 2.0.