{"full_name":"meta/astryx","owner":"meta","name":"astryx","url":"https://github.com/meta/astryx","description":"An open source design system that's fully customizable and agent ready","homepage":"http://astryx.atmeta.com","topics":[],"language":"TypeScript","license":"MIT","avatar":"https://avatars.githubusercontent.com/u/69631?v=4","created_at":"2026-01-09T16:20:32Z","pushed_at":"2026-11-10T09:38:44Z","metrics":{"stars":21157,"forks":1625,"watchers":82,"issues":1686,"prs":8978,"releases":45,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":5},"growth":{"day":{"stars":3142,"forks":215,"base_day":"2026-11-09"}},"history":{"dates":["2026-11-09","2026-11-10"],"stars":[18015,21157],"forks":[1410,1625],"watchers":[82,82],"issues_open":[null,null],"prs_open":[null,null]},"boards":{"daily":4,"weekly":36,"monthly":165,"daily_rate":5,"weekly_rate":24,"monthly_rate":102},"same_owner":[{"full_name":"meta/chisel","name":"chisel","boards":{}},{"full_name":"meta/componentkit","name":"componentkit","boards":{}},{"full_name":"meta/docusaurus","name":"docusaurus","boards":{}},{"full_name":"meta/fresco","name":"fresco","boards":{}},{"full_name":"meta/hhvm","name":"hhvm","boards":{}},{"full_name":"meta/infer","name":"infer","boards":{}},{"full_name":"meta/relay","name":"relay","boards":{}}],"issues":[{"number":3164,"title":"Vibe Test — API Concerns (rolling)","comments":27,"created_at":"2026-06-26T13:37:30Z"},{"number":958,"title":"Edge compensation: deriving spacing/radius/size relationships from visual intent","comments":17,"created_at":"2026-03-29T01:45:32Z"},{"number":977,"title":"feat: charts — compositional d3 chart system (@astryxdesign/charts) + declarative Vega wrapper (@astryxdesign/vega)","comments":15,"created_at":"2026-03-30T14:20:56Z"},{"number":918,"title":"feat(theme): Brand Theming — multi-brand theme creation, distribution, and governance","comments":8,"created_at":"2026-03-27T04:19:27Z"},{"number":4664,"title":"[Bug] lab/Drawer hardcodes its close delay against a themeable hold","comments":1,"created_at":"2026-08-03T01:40:34Z"},{"number":3335,"title":"TabList uses the navigation-links pattern, not ARIA Tabs (no role=tab/tabpanel, aria-selected, or arrow-key navigation)","comments":7,"created_at":"2026-07-01T23:10:40Z"},{"number":3636,"title":"[Tracker] i18n & RTL support — string injection + RTL correctness","comments":1,"created_at":"2026-07-06T18:51:27Z"},{"number":3343,"title":"Accessibility & keyboard-management program: build shared interaction primitives, then migrate components","comments":6,"created_at":"2026-07-02T00:34:28Z"}],"discussions":[{"number":6510,"title":"Any plans for an actual DateTime field equivalent to an input of type \"datetime-local\"?","comments":0,"category":"Ideas","created_at":"2026-09-24T06:13:06Z"},{"number":5571,"title":"Request for a proper Modal component","comments":1,"category":"Ideas","created_at":"2026-08-26T20:56:54Z"},{"number":3921,"title":"PowerSearch typeahead: label-only matching vs key — intentional?","comments":1,"category":"Q&A","created_at":"2026-07-13T23:58:39Z"},{"number":3430,"title":"Add visual regression testing","comments":0,"category":"General","created_at":"2026-07-02T14:29:38Z"},{"number":3417,"title":"Any plans for React Native support?","comments":2,"category":"Q&A","created_at":"2026-07-02T12:05:51Z"}],"latest_release":{"name":"Astryx v0.7.11","tag":"v0.7.11","published_at":"2026-11-07T15:00:47Z","body":"Astryx 0.7.11 — all `@astryxdesign/*` packages ship at this version.\n\n```bash\nOLD_VERSION=0.7.10  # replace with the Core version your project uses today\nnpm install @astryxdesign/core@0.7.11 @astryxdesign/cli@0.7.11  # plus every other @astryxdesign/* package you use, at 0.7.11\nnpx @astryxdesign/cli upgrade --from \"$OLD_VERSION\" --apply --path .\n```\n\n## @astryxdesign/core\n\n### New Features\n\n- Under a finger (a coarse primary pointer, on any touch device), Popover grows out of its trigger, wide before tall, with its edge held on the trigger, and shrinks back into the trigger when it closes. The growth plays the theme's `--duration-medium-min` (in the Storybook theme, the step nearest iOS's 206 ms growth) with its entrance easing, and the shrink plays its exit duration and easing, on the compositor. A close during the growth, or an open during the shrink, turns back from where the popover is. With reduced motion it cross-fades in and out, opacity only, in 200 ms or less. A fine primary pointer (a mouse) keeps its entrance. A tap that lands while it grows is ignored, and a pan started then scrolls nothing. The shrink plays on the layer runtime's exit copy, of which Popover is the first user. The growth starts in the next animation frame, before that frame paints, so the opening tap does no extra layout. (#8187)\n- `DropdownMenuSubMenu` accepts `delay` and `hideDelay`, in milliseconds, the same options `Tooltip`, `HoverCard` and `TopNavMenu` have. `delay` is how long a hovering pointer waits before the flyout opens (default 150), and `hideDelay` is how long the flyout stays after the pointer leaves (default 200). The defaults match today's timing, so nothing changes unless you pass them. Keyboard focus and touch never wait. (#10298)\n- `Timestamp` takes a `timezoneID` prop naming the IANA zone its absolute formats render in, such as `'UTC'` or `'America/Los_Angeles'`. An explicit zone renders identically on the server and the client, so a server-rendered absolute time no longer depends on the server's zone and hydrates without a mismatch. Omit it (or pass `'local'`) to keep the viewer's own zone, relative formats' visible text ignores it (configured `tooltipEntries` rows still follow it), and an unknown identifier warns once in development and falls back to the viewer's zone. (#9789)\n\n### Fixes\n\n- Animated layout glides now use the theme's `--duration-medium` instead of `--duration-medium-min`: 300 ms instead of 225 ms in the Neutral theme, and 410 ms instead of 310 ms with no theme. Their move curve, Reduce Motion behavior, and support for `linear()` and `steps()` easing stay unchanged. (#10261)\n- Under Reduce Motion, a cross-fade's move and its call's settle wait while a sampler pauses its fade, so the element never moves, and an exit's element never goes, while the paused fade still shows. (#10378)\n- `Avatar` initials and the default person icon paint in primary text on the neutral tint, a pair at 4.5:1 or more in light and dark mode; secondary text fell below 4.5:1 in dark mode. Initials read darker in light mode and lighter in dark mode. (#10205)\n- Banner: `role=\"alert\"` now sits on the title and description only, not on the whole banner, so an urgent alert holds only its message (`component:Banner` FR8; WCAG 2.2 4.1.3 Status Messages). The dismiss and expand controls, their tooltips, a caller's action, and the supporting content are outside the alert. ARIA attributes passed with `role=\"alert\"`, such as `aria-label`, move with it. Other roles still land on the banner frame. Use `role=\"alert\"` only for an urgent message, and announce every other message with `useAnnounce`. No visual change: the banner renders the same pixels as before. (#6779)\n- BottomSheet: a touch release takes the iOS sheet's measured values, and a release moving back toward where the drag began cancels. A release faster than about 1,000 px/s is a flick: it goes at least to the next detent in its direction, so a short fast flick at the lowest detent closes t"},"readme":true,"readme_zh":false,"news":[{"title":"Astryx: An open source design system that's customizable and agent ready","url":"https://github.com/meta/astryx","hn":"https://news.ycombinator.com/item?id=50418809","source":"Hacker News","lang":"en","date":"2026-11-08","points":3,"comments":1},{"title":"Choose UI libraries based on whether agents can look up their specifications","url":"https://note.com/noptium/n/nd15e9a74b1eb?hl=en","source":"note","lang":"en","date":"2026-11-09"},{"title":"O Astryx de Código Aberto da Meta Dispara no GitHub com 15,080 Estrelas","url":"https://blockchain.news/pt/news/meta-astryx-github-trending-pt","source":"Blockchain News","lang":"en","date":"2026-11-08"},{"title":"Meta Open-Sources Astryx, its Agent-Ready React Design System","url":"https://www.infoq.com/news/2026/09/meta-astryx-design-system/","source":"InfoQ","lang":"en","date":"2026-09-13"},{"title":"GitHub-Trending Astryx Brings AI-Ready Open Source To React","url":"https://www.opensourceforu.com/2026/07/github-trending-astryx-brings-ai-ready-open-source-to-react/","source":"opensourceforu","lang":"en","date":"2026-07-17"},{"title":"Meta’s Astryx Returns to GitHub Trending: JSON Manifest Stops AI Agents From Hallucinating UI Props","url":"https://www.techtimes.com/articles/320761/20260716/metas-astryx-returns-github-trending-json-manifest-stops-ai-agents-hallucinating-ui-props.htm","source":"techtimes","lang":"en","date":"2026-07-16"},{"title":"Meta Open-Sources Astryx: An AI-Agent-Ready React Design System","url":"https://www.opensourceforu.com/2026/06/meta-open-sources-astryx/","source":"opensourceforu","lang":"en","date":"2026-06-29"},{"title":"Meta’s Astryx Brings a CLI and MCP Server to an Open-Source React Design System Agents Can Read","url":"https://www.marktechpost.com/2026/06/27/metas-astryx-brings-a-cli-and-mcp-server-to-an-open-source-react-design-system-agents-can-read/","source":"marktechpost","lang":"en","date":"2026-06-27"},{"title":"Meta’s Astryx Gives AI Coding Agents a Design System They Can Actually Read","url":"https://www.techtimes.com/articles/319202/20260627/metas-astryx-gives-ai-coding-agents-design-system-they-can-actually-read.htm","source":"techtimes","lang":"en","date":"2026-06-27"},{"title":"Meta's Open-Source Astryx Surges on GitHub with 15,080 Stars","url":"https://news.google.com/rss/articles/CBMiZ0FVX3lxTE4yai16SW9yQXZmRWdCMEdRUUNYUWVQUXdLUTRGMnd0QzAxTjNIbF8tTnM2N2tScjF5aHQwS1BmeEJCWGpGeFNuTWpkdTNUT05WbXpyZEhqN2Z3Nm9JbEZXbzFrTlE3ZDQ?oc=5","source":"Blockchain News","lang":"en","date":"2026-11-08"},{"title":"Meta 的开源 Astryx 在 GitHub 上激增，获得 15,080 星星","url":"https://news.google.com/rss/articles/CBMia0FVX3lxTE1ZeVE2c2lDZUphZms1clUwN19IZWRLVVU4QTNnaDhXcXdPYmktQ19HV3V0MFFaUWFtZHpMdTAweExfMTUtZ3YxUWtKUUJzRUxvYTRlVFhTZE5xSEVVYWhlQzZ4ODFxZ0FYQmxz?oc=5","source":"blockchain.news","lang":"zh","date":"2026-11-08"},{"title":"韩国通过NVIDIA OpenShell和Nemotron推动AI安全","url":"https://news.google.com/rss/articles/CBMiiAFBVV95cUxPQ3JiOUljNDdZOUplcHJDb19xUUE5Q3VVRGthTUhacXplYlFjbGt1cDN1TjcxM1ItU1JwNUhyVmNoVEluYThleXJZa3ZJemNhQl9LWkNNeXE4cHgxT3JNcV9KdmFuR3JaYlJnVUVrS1piVmw3NDVUNC13ZGR1b1J5NEYySnBRalFX?oc=5","source":"blockchain.news","lang":"zh","date":"2026-11-08"},{"title":"Meta Open-Sources Astryx: An Agent-Ready React Design System With 150+ Accessible Components, Seven Themes, and a CLI","url":"https://news.google.com/rss/articles/CBMi6gFBVV95cUxQOGFLTWZOQ3pWalc1QnNtYWt4a1dDU2tSVllDWHJ4c19TRmhwR3dRUXpfMDlwMlZfMGNBXzZDZ3hJdG5tNklZTnM4SXpDaTg5YjJqZWRPUXFVTWMyTmtvUTlaUF9TVXQ5YXF1Y1ZGczlvWDVqMC15aXpyczNfdVNrMkR3dGJvLUJrd1FZT1lOVDN4Z2w2NU04endIdVNDMk10MlpWX3N1RENjWUZPWjNuNkUyTlp0akVuU0R0Q3dwTUl6S2djOUczLUZMbEdzVTNpOXZPczB1amh1cVlCM2tQT2Q3RVl2NU9YQVHSAeoBQVVfeXFMUDhhS01mTkN6VmpXNUJzbWFreGtXQ1NrUlZZQ1hyeHNfU0ZocEd3UVF6XzA5cDJWXzBjQV82Q2d4SXRubTZJWU5zOEl6Q2k4OWIyamVkT1FxVU1jMk5rb1E5WlBfU1V0OWFxdWNWRnM5b1g1ajAteWl6cnMzX3VTazJEd3Riby1Ca3dRWU9ZTlQzeGdsNjVNOHp3SHVTQzJNdDJaVl9zdURDY1lGT1ozbjZFMk5adGpFblNEdEN3cE1JektnYzlHMy1GTGxHc1UzaTl2T3MwdWpodXFZQjNrUE9kN0VZdjVPWEFR?oc=5","source":"MarkTechPost","lang":"en","date":"2026-07-21"}],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}