<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>StyleX on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/stylex/</link>
        <description>Recent content in StyleX on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Wed, 01 Jul 2026 18:57:46 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/stylex/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>astryx</title>
        <link>https://producthunt.programnotes.cn/en/p/astryx/</link>
        <pubDate>Wed, 01 Jul 2026 18:57:46 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/astryx/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1592552912391-5e028125a2f5?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3ODI5MDMyODh8&amp;ixlib=rb-4.1.0" alt="Featured image of post astryx" /&gt;&lt;h1 id=&#34;facebookastryx&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/astryx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;facebook/astryx&lt;/a&gt;
&lt;/h1&gt;&lt;!-- SYNC CONTRACT: Architecture changes require documentation updates. --&gt;
&lt;h1 id=&#34;astryx&#34;&gt;Astryx
&lt;/h1&gt;&lt;p&gt;An open source design system that&amp;rsquo;s fully customizable and built for how we build now — by people and the agents working alongside them.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Currently in Beta&lt;/strong&gt; · Built on &lt;a class=&#34;link&#34; href=&#34;https://react.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;React&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://stylexjs.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;StyleX&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview
&lt;/h2&gt;&lt;p&gt;Astryx is an open source design system that grew inside Meta over the last eight years, where it became the most-used and largest design system in the company — powering 13,000+ apps and shaped by the engineers, designers, and product teams who depend on it every day.&lt;/p&gt;
&lt;p&gt;It ships 150+ accessible components, brand-level theming, dark mode, ready-to-ship templates, and a CLI as one cohesive system. You import pre-built CSS and use typed React components — no build plugin, no styling library to adopt — and both people and AI assistants build with the same tooling.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What makes Astryx different:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Open internals.&lt;/strong&gt; Components are built to be composed at any level, not locked behind a closed top-level API. The building blocks you&amp;rsquo;d reach for are exported directly, and when you need to go deeper, swizzle ejects a component&amp;rsquo;s full source into your project to own.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No styling lock-in.&lt;/strong&gt; Astryx authors its styles with StyleX, but that&amp;rsquo;s invisible to consumers. Override with &lt;code&gt;className&lt;/code&gt; using Tailwind, CSS modules, or plain CSS — whatever your project already uses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customize without wrapping.&lt;/strong&gt; A theme is a set of CSS custom property overrides, so a designer can make Astryx unmistakably theirs without forking or wrapping component source.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built for people and agents.&lt;/strong&gt; The API, docs, and CLI are designed together so a person and an AI assistant build the same way, from the same reference.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;p&gt;Install Astryx and a theme:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# npm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install @astryxdesign/core @astryxdesign/theme-neutral
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -D @astryxdesign/cli
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# pnpm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm add @astryxdesign/core @astryxdesign/theme-neutral
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm add -D @astryxdesign/cli
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# yarn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yarn add @astryxdesign/core @astryxdesign/theme-neutral
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yarn add -D @astryxdesign/cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The simplest setup is a few CSS imports plus a theme provider — no build plugin, no PostCSS or Babel config. See the &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;packages/core/README.md#quick-start&#34; &gt;@astryxdesign/core README&lt;/a&gt;&lt;/strong&gt; for the full guide (Next.js, Tailwind, Vite, and CDN).&lt;/p&gt;
&lt;p&gt;For reliable CLI access, add a script to your &lt;code&gt;package.json&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;scripts&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;astryx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;node node_modules/@astryxdesign/cli/bin/astryx.mjs&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then use it as &lt;code&gt;npm run astryx -- component --list&lt;/code&gt;. This avoids path errors when AI assistants or new developers invoke the CLI directly.&lt;/p&gt;
&lt;h2 id=&#34;packages&#34;&gt;Packages
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Package&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
					&lt;th&gt;README&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;packages/core&#34; &gt;&lt;code&gt;@astryxdesign/core&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Components, theme system, and utilities&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;packages/core/README.md&#34; &gt;README&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;packages/cli&#34; &gt;&lt;code&gt;@astryxdesign/cli&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;CLI tooling: component docs, templates, scaffolding, themes, and codemods&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;packages/cli/README.md&#34; &gt;README&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;packages/build&#34; &gt;&lt;code&gt;@astryxdesign/build&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Build plugins for StyleX source builds&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;packages/build/README.md&#34; &gt;README&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;packages/themes&#34; &gt;&lt;code&gt;@astryxdesign/theme-*&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Seven ready-made, fully customizable themes (neutral, butter, chocolate, matcha, stone, gothic, y2k)&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;packages/themes&#34; &gt;README&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;@astryxdesign/lab&lt;/code&gt; (experimental components) and &lt;code&gt;@astryxdesign/vega&lt;/code&gt; (Vega/Vega-Lite chart wrapper) are used internally for Storybook and the sandbox; they are not yet published to npm.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;principles&#34;&gt;Principles
&lt;/h2&gt;&lt;p&gt;These are the promises Astryx makes to the people building on it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Guidance over enforcement.&lt;/strong&gt; Components give you capability rather than guardrails that fight you. Design opinions live in docs and examples — if you pass a value, the component renders it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strong, documented conventions.&lt;/strong&gt; Every component follows the same naming, prop, and composition rules, and every one is thoroughly documented — so once you&amp;rsquo;ve learned a few, the rest feel familiar, and both people and AI can predict how an unfamiliar component behaves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One system for humans and AI.&lt;/strong&gt; The API, conventions, docs, and CLI are designed together so people and AI assistants build the same way. Every change that made Astryx easier for AI made it easier for people too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Earned by measurement.&lt;/strong&gt; We test conventions rather than assert them, hold the results loosely, and revisit them when a new situation proves them wrong.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;architecture&#34;&gt;Architecture
&lt;/h2&gt;&lt;h3 id=&#34;foundations&#34;&gt;Foundations
&lt;/h3&gt;&lt;p&gt;The building blocks for visually cohesive and accessible interfaces: typography, color, layout, and accessibility.&lt;/p&gt;
&lt;h3 id=&#34;components&#34;&gt;Components
&lt;/h3&gt;&lt;p&gt;A library of 150+ reusable UI building blocks with full TypeScript support.&lt;/p&gt;
&lt;h3 id=&#34;patterns&#34;&gt;Patterns
&lt;/h3&gt;&lt;p&gt;Battle-tested design solutions for common interactions and workflows: table pages, detail page layouts, form wizards, navigation patterns, data entry flows.&lt;/p&gt;
&lt;h2 id=&#34;project-structure&#34;&gt;Project Structure
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Directory&lt;/th&gt;
					&lt;th&gt;Purpose&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;apps/&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Example apps, the docsite, and Storybook&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;packages/&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Published packages: core, cli, build, themes&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;internal/&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Internal tooling: test utilities, eslint plugin, vibe tests&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;We welcome contributions! See &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt;&lt;/strong&gt; for the full guide.&lt;/p&gt;
&lt;p&gt;Quick start for contributors: this repo uses &lt;strong&gt;pnpm 10&lt;/strong&gt; via &lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/api/corepack.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Corepack&lt;/a&gt;. Enable it once and the right pnpm version installs automatically:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;corepack &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;MIT&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
