Astryx: Meta's design system for React 19 and the agents that ship with you
Astryx is Meta's customizable React design system, with tokens and components prepared for both developers and coding agents.
At a glance
- What is it?
- Astryx is Meta's open source React design system, now in beta, with 150+ components, seven themes, and a CLI built for both humans and AI assistants. It avoids styling lock-in by exposing StyleX styles as CSS custom properties and plain className overrides.
- Who is it for?
- Adopt Astryx if you are on React 19 or later, want a component library that does not force a styling stack on you, and value a system that is explicitly designed for AI-assisted development. Skip it if you need stable chart components (they are canary-only), cannot accept a beta label, or require deep customization that swizzling cannot cover.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Astryx actually is and who it targets
Astryx is a React design system that Meta says grew inside the company over eight years, powering 13,000+ apps. It ships 150+ accessible components, brand-level theming, dark mode, templates, and a CLI. The stated differentiator is that it is built for both people and coding agents: the API, docs, and CLI are designed together so a human and an AI assistant build the same way. That is a concrete audience: teams that already use AI pair programmers or plan to, and who want a library that does not fight agent tooling. The beta label is honest. The README says it is currently in Beta, and the package list shows that chart components are only published under a canary tag. So this is a production-adjacent library, not a fully stable one.
The mechanism: StyleX under the hood, CSS variables on top
Astryx authors its styles with StyleX, but that is invisible to consumers. The key design choice is that a theme is a set of CSS custom property overrides. That means you can restyle the entire system without forking component source. You override a CSS variable and the components pick it up. On top of that, you can pass className to any component, using Tailwind, CSS modules, or plain CSS. This is a real departure from libraries that lock you into a styling solution or require a build plugin. The README explicitly says there is no build plugin and no PostCSS or Babel config needed for the basic setup. That is a genuine architectural stance: the styling is compiled to CSS at build time, but the consumer only sees CSS custom properties and class names. The trade-off is that you do not get the full power of StyleX's compile-time optimizations if you override with plain CSS, but you also do not inherit its constraints.
Getting it running: install commands and the CLI script trick
The README gives exact commands. You need React 19 or later, because react and react-dom are peer dependencies. For npm: npm install @astryxdesign/core @astryxdesign/theme-neutral @stylexjs/stylex, then npm install -D @astryxdesign/cli. The theme-neutral package is one of seven ready-made themes. The simplest setup is a few CSS imports plus a theme provider, with no build plugin. The CLI is a separate package, and the README recommends adding a script to package.json: "astryx": "node node_modules/@astryxdesign/cli/clients/cli/bin/astryx.mjs". That avoids path errors when AI assistants or new developers invoke the CLI directly. This is a practical detail that shows the agent-first thinking: they anticipate that a tool might not resolve node_modules/.bin correctly, so they give a direct path. The CLI supports component docs, templates, scaffolding, themes, and codemods. That is a broad surface, and the codemods part is worth checking before you rely on it for upgrades.
The package split: core, CLI, build, and seven themes
The repository is a monorepo with packages for core, cli, build, and themes. The core package holds components, the theme system, and utilities. The CLI package handles scaffolding and codemods. The build package contains build plugins for StyleX source builds. The themes package offers seven themes: neutral, butter, chocolate, matcha, stone, gothic, and y2k. That is a narrow set. If your brand does not fit one of those, you can customize via CSS variables, but you start from a fixed palette. There is also an experimental lab package used internally for Storybook and the sandbox, but it is not published to npm. The chart packages, vega and charts, are published only under the @canary dist-tag, meaning no stable release. So if you need charts, Astryx is not ready for you. This split is clear, but the canary-only chart packages are a limitation you must plan around.
Where Astryx is the wrong tool
The most obvious wrong case is if you are not on React 19. The peer dependency is strict: React 19 or later. If your project is stuck on React 18, Astryx is out of reach. Second, if you need charting, the chart packages are canary-only, so you would be depending on an unstable release. Third, if you want a component library that enforces design consistency through guardrails, Astryx explicitly does not do that. The README says 'Guidance over enforcement': components give you capability rather than guardrails that fight you. If you pass a value, the component renders it. That is a philosophical choice that can lead to inconsistent UI if your team does not follow the docs. For a team that wants strict design governance, this is a risk. Finally, the beta status means APIs can change. The release cadence is fast: v0.5.0 on 2026-08-24, v0.4.7 on 2026-08-23, v0.4.6 on 2026-08-22. That is three releases in three days. If you need stability, that velocity is a warning.
Alternatives and the real difference in approach
The most direct alternative is Material UI (MUI) for React. MUI uses Emotion for styling, which is a runtime CSS-in-JS solution, and it exposes a theme object that you configure via JavaScript. Astryx, by contrast, compiles StyleX to static CSS and exposes themes as CSS custom properties. That means Astryx has no runtime style calculation, which can be a performance advantage, but it also means you cannot do dynamic theming based on JavaScript state as easily. MUI's theming is more programmatic, while Astryx's is more declarative. Another alternative is Radix UI, which is unstyled and gives you primitives, leaving styling entirely to you. Astryx ships pre-built CSS, so it is a different trade-off: you get a look out of the box, but you have to override it if you want something custom. Radix gives you nothing visual, but full control. The choice depends on whether you want a starting point or a blank canvas.
Maintenance, upgrade cost, and license
The project is under the MIT license, which is permissive and allows commercial use. The README mentions a sync contract for architecture changes and documentation updates, which is a good sign for maintainability. The release velocity is high, which means you will see frequent updates. That has a cost: you must keep up with version changes, and the codemods in the CLI are meant to ease that. The README says the CLI includes codemods, but it does not specify what they cover. Before adopting, you should inspect the CLI's codemod list to see if it handles the breaking changes you are likely to hit. The project is not archived, and the last push is recent, so it is actively maintained. But the beta label means you should expect breaking changes. The contributing guide and Discord exist, so community support is available, but the project is still young outside Meta.
Editorial conclusion
Adopt Astryx if you are on React 19 or later, want a component library that does not force a styling stack on you, and value a system that is explicitly designed for AI-assisted development. Skip it if you need stable chart components (they are canary-only), cannot accept a beta label, or require deep customization that swizzling cannot cover. Before adopting, verify that your React version meets the peer dependency, check the current state of the CLI's codemods, and confirm that the seven themes cover your brand needs. Astryx is a serious, well-documented design system, but it is not yet a finished one.
Community notes