GitHub - meta/astryx: An open source design system that's fully customizable and agent ready
Blog

GitHub - meta/astryx: An open source design system that's fully customizable and agent ready

meta
2026.11.10
·GitHub·by Homin.Lee
#Agent#AI#Claude#ML#TypeScript

Key Points

  • 1Astryx is an open-source, React 19-based design system that features over 150 accessible components and highly customizable themes for modern web development.
  • 2Designed to bridge the gap between human and AI workflows, the system provides a consistent CLI and API that ensure both agents and developers follow the same building conventions.
  • 3The architecture prioritizes flexibility through open internals and non-restrictive styling, allowing developers to integrate their preferred CSS tools while maintaining full control over component composition.

Astryx is an open-source, React-based design system initially developed at Meta. It comprises over 150 accessible, production-ready components designed to support both human developers and AI coding assistants. Built on top of React 19+ and the StyleX styling engine, it emphasizes modularity, "open-internals," and technical flexibility without forcing a specific styling library upon the consumer.

Core Methodology and Architecture

The system is architected around several key technical pillars:

1. StyleX Integration and CSS Customization
Astryx utilizes StyleX for its internal styling, but it deliberately obscures this from the end-user. The system avoids styling lock-in by implementing theming through CSS custom properties. Because themes are defined as sets of CSS variable overrides, developers can customize the visual identity of components without the need for source-code wrapping or complex component forking. It remains compatible with existing styling paradigms, including Tailwind CSS, CSS modules, or native CSS.

2. Component Composition and "Swizzling"
Rather than utilizing opaque, closed-source API layers, Astryx exposes the core building blocks of every component. If a developer requires deeper customization than the standard props allow, the swizzle command can be used to eject the full source code of a component directly into the consumer's local project directory, effectively shifting ownership to the user while maintaining the library's design conventions.

3. Agent-Ready Design
A central differentiator of Astryx is its explicit optimization for AI agents. The API design, CLI, and documentation are co-developed. By providing a unified CLI (@astryxdesign/cli) that functions identically in local development and within AI assistant workflows, the system ensures that the "source of truth" for component behavior is consistent for both human and machine. The CLI is intended to be installed both as a project dependency and globally to ensure AI tools can invoke it reliably across different directory contexts.

4. Performance and Build System
The system is designed to be lightweight and portable, avoiding heavy build plugins or complex transpilation steps. It requires only standard CSS imports and a theme provider. For advanced use cases, @astryxdesign/build provides plugins specifically for StyleX-based source builds, though it is not a requirement for standard component implementation.

5. Systemic Principles
The technical philosophy of Astryx is defined by:

  • Guidance over Enforcement: Components are designed to be permissive. Configuration is dictated by documentation and standard usage patterns rather than hard-coded runtime or compile-time guardrails.
  • Predictability: Consistent naming and prop conventions across all 150+ components ensure that AI models can learn the component patterns quickly, facilitating more accurate code generation.
  • Empirical Validation: The design system maintains a "Vibe test" suite and cross-repository component testing, ensuring that design decisions are validated through measurement rather than rigid adherence to subjective rules.

The project structure is split into core packages (@astryxdesign/core for components, @astryxdesign/cli for tooling, and themed packages like @astryxdesign/theme-neutral) to maintain a clean separation of concerns and allow for incremental adoption.