Make anything buttery.
A React design system with the layout and motion to match, for web and desktop apps, and checks that hold every screen to it.
npx create-buttery my-appIt makes the app in the folder you're in. Installation has the other ways in.
Where to start
A new app
npx create-buttery my-app starts one from a template, with the provider, the styles, the lint configs and the layout checks already in place, for the web and the desktop.
An existing app
npx buttery init adds the packages, the provider and the styles, then move one screen at a time onto buttery's components, with the layout check watching.
With a coding agent
AGENTS.md, the skill and the MCP server give an agent the rules and buttery's components, and every check says how to fix what it finds.
What's new
The docs in the packages
@butteryui/coreships every page of the docs as Markdown, withllms.txtandllms-full.txt, and@butteryui/reactshipsmanifest.json, the examples as files and what the MCP server answers from, so an agent in an app reads the installed version's docs fromnode_modules, offline.buttery createandbuttery initpoint an app's agents at them.- Stylelint fails a
var(--bt-*)of a name that buttery and the project don't declare, naming the nearest token. Development warnings end with a link to the docs. AnOverflowClusterin a section's actions folds and unfolds with the page. LayoutGuardchecks a rule or two per frame, so a check doesn't hold up what the page is doing, and the overlap rule is seven times cheaper. The agent evaluation ran its seven tasks with two coding agents, and what it found is fixed: a layout check under load no longer waits on an animation that reduced motion cut short, and aGridwith responsive columns warns when nothing above it is a size container.
The command line
npx create-buttery my-app --template dashboardstarts an app from a template in any folder, with its lint configs, Playwright specs, agent files and the MCP server in each coding agent's config.buttery add pagewrites any of 16 pages from buttery's patterns, wired into a dashboard app's routes and sidebar, andbuttery create componentstarts a component on buttery's public parts.buttery checkruns the checks from@butteryui/teston pages of the running app, starting its dev server when it isn't running, and prints each problem once with its fix, or every one with--json.buttery doctorchecks an app's setup andbuttery initsets buttery up in an app you have.- The dashboard template has a page of every kind, and
buttery_scaffoldsets an example that isn't a whole page inside anAppPageor a section of aPage, so every scaffolded page has the page grammar's padding and title.
The MCP server, and passwordless sign-in
@butteryui/mcpgives coding agents five read-only tools over the Model Context Protocol: search, get, scaffold, lint and a layout check, on protocol 2026-07-28 and the 2025 handshake. Lint catches literal values a component's props don't take, such asgap="16px", and says what to write instead.AuthFlowsigns people in or up with a code sent to their email or phone, built fromIdentifierField,OneTimeCodeFieldand theuseOtpFlowhook, which work on their own too. The roastery demo and the dashboard template sign in with it.- The docs search finds sign-in for "login" and "passwordless", and the segmented control for "switch between".
Try it
Real components, not pictures of them. Press, drag and open them.
Reminders
Preview
Starts in 15 minutes