# Table of Contents
- [Getting Started · Astryx](#getting-started-astryx)
- [Browser Support · Astryx](#browser-support-astryx)
- [CLI Integrations · Astryx](#cli-integrations-astryx)
- [Elevation · Astryx](#elevation-astryx)
- [Getting Started · Astryx](#getting-started-astryx)
- [Icons · Astryx](#icons-astryx)
- [Color · Astryx](#color-astryx)
- [Illustrations · Astryx](#illustrations-astryx)
- [Migration Guide · Astryx](#migration-guide-astryx)
- [Motion · Astryx](#motion-astryx)
- [Layout · Astryx](#layout-astryx)
- [Spacing · Astryx](#spacing-astryx)
- [Principles · Astryx](#principles-astryx)
- [Internationalization · Astryx](#internationalization-astryx)
- [Theme System · Astryx](#theme-system-astryx)
- [Shape · Astryx](#shape-astryx)
- [Styling Library Interop · Astryx](#styling-library-interop-astryx)
- [Typography · Astryx](#typography-astryx)
- [All Tokens · Astryx](#all-tokens-astryx)
- [Styling Components · Astryx](#styling-components-astryx)
- [Working with AI · Astryx](#working-with-ai-astryx)
---
# Getting Started · Astryx
[Skip to content](https://astryx.atmeta.com/docs#astryx-app-shell-main)
Type to search
↑↓Navigate↵SelectEscClose
Getting Started
===============
Add the design system to your project and start building.
Quick Start with AI
-------------------
Copy link
Paste this into your AI coding tool and let it handle the setup:
Paste this into your AI
text
`` Install @astryxdesign/core, @astryxdesign/theme-neutral, and @astryxdesign/cli in this project, then run `npx @astryxdesign/cli init` to set up agent docs. Read the generated files to learn the conventions. ``
Install
-------
Copy link
Astryx requires React 19 or later: `react` and `react-dom` >= 19.0.0 are peer dependencies of `@astryxdesign/core`.
Add the core package, a theme, and the CLI to your existing project.
Terminal
bash
` npm install @astryxdesign/core @astryxdesign/theme-neutral @astryxdesign/cli `
Then run `astryx init` to install the AI agent cheat sheet (AGENTS.md/CLAUDE.md). It's non-interactive; no prompts; so it's safe for AI agents, CI, and scripts. Add `--all` for pointers to the theme and page-building workflows.
Terminal
bash
` npx astryx init `
Add the theme CSS
-----------------
Copy link
Import the reset stylesheet and a theme in your global CSS file. Themes provide all design tokens (colors, spacing, radius, typography) as CSS custom properties.
globals.css
css
` @import '@astryxdesign/core/reset.css'; @import '@astryxdesign/core/astryx.css'; @import '@astryxdesign/theme-neutral/theme.css'; `
Available themes: @astryxdesign/theme-neutral (muted minimal, a good starting point), @astryxdesign/theme-butter, @astryxdesign/theme-chocolate, @astryxdesign/theme-gothic (dark-only), @astryxdesign/theme-matcha, @astryxdesign/theme-stone, and @astryxdesign/theme-y2k. See [`astryx docs theme`](https://astryx.atmeta.com/docs/theme)
for the full theming guide.
These stylesheets are cascade-layered: the reset loads in @layer reset and component styles in @layer astryx-base. If your project has existing global CSS, a legacy reset, or Tailwind, declare the layer order explicitly and assign every stylesheet to a layer deliberately: unlayered styles and later layers both override astryx-base regardless of specificity. See the Cascade Layer Safety section in [`astryx docs migration`](https://astryx.atmeta.com/docs/migration)
before building screens.
Add your first component
------------------------
Copy link
Components are imported from per-category subpath entrypoints. This keeps bundles small and makes intent clear.
app/page.tsx
tsx
` import {Button} from '@astryxdesign/core/Button'; import {VStack} from '@astryxdesign/core/Layout'; export default function Page() { return ( ); } `
Customize with StyleX
---------------------
Copy link
Astryx components support various styling solutions, from plain CSS and `className` to Tailwind and CSS-in-JS. See the [styling docs](https://astryx.atmeta.com/docs/styling)
for the full guide. Astryx also has a deep integration with [StyleX](https://stylexjs.com/)
, an atomic CSS-in-JS library: create styles with `stylex.create()` and pass them to components with the `xstyle` prop.
Style overrides
tsx
` import * as stylex from '@stylexjs/stylex'; const overrides = stylex.create({ save: { alignSelf: 'flex-end', marginTop: 16 }, }); `
Example Apps
------------
Copy link
For a full working project, clone one of the example apps from the repo. These are complete setups with routing, theming, and components wired together.
| Example | Stack | Path |
| --- | --- | --- |
| Next.js | Next.js + theme CSS | [apps/example-nextjs](https://github.com/facebook/astryx/tree/main/apps/example-nextjs) |
| Next.js + StyleX | Next.js + StyleX for custom styles | [apps/example-nextjs-stylex](https://github.com/facebook/astryx/tree/main/apps/example-nextjs-stylex) |
| Next.js + Tailwind | Next.js + Tailwind bridge | [apps/example-nextjs-tailwind](https://github.com/facebook/astryx/tree/main/apps/example-nextjs-tailwind) |
| Next.js Source | Next.js importing from source | [apps/example-nextjs-source](https://github.com/facebook/astryx/tree/main/apps/example-nextjs-source) |
| Vite | Vite | [apps/example-vite](https://github.com/facebook/astryx/tree/main/apps/example-vite) |
Clone and run an example
bash
` git clone https://github.com/facebook/astryx.git cd astryx/apps/example-nextjs pnpm install pnpm dev `
Explore the CLI
---------------
Copy link
The CLI is your reference for components, tokens, templates, and docs. For reliable invocation (especially with AI assistants), add this script to your package.json:
package.json
json
` "scripts": { "astryx": "node node_modules/@astryxdesign/cli/clients/cli/bin/astryx.mjs" } `
Then discover what's available:
Terminal
bash
` astryx component # list all components astryx component Button # props, usage, theming for Button astryx docs # list all doc topics astryx template --list # available page templates astryx docs tokens # spacing, color, radius reference `
[](https://astryx.atmeta.com/)
[Docs](https://astryx.atmeta.com/docs/getting-started)
[Components](https://astryx.atmeta.com/components)
[Templates](https://astryx.atmeta.com/templates)
[Themes](https://astryx.atmeta.com/themes)
[Playground](https://astryx.atmeta.com/playground)
[Blog](https://astryx.atmeta.com/blog)
[Community](https://astryx.atmeta.com/community)
[Changelog](https://astryx.atmeta.com/changelog)
[Canary docs](https://astryx-canary.vercel.app/docs/getting-started)
[](https://github.com/facebook/astryx)
GitHub
[](https://discord.com/invite/XnsUcFykEP)
Discord
[](https://www.facebook.com/astryxdesign)
Facebook
[](https://www.instagram.com/astryxdesign)
Instagram
[](https://www.threads.com/@astryxdesign)
Threads
[](https://x.com/Astryxdesign)
X
[](https://opensource.fb.com/)
[Terms of use](https://opensource.fb.com/legal/terms)
[Privacy policy](https://opensource.fb.com/legal/privacy)
©2026 Meta Platforms, Inc.
---
# Browser Support · Astryx
[Skip to content](https://astryx.atmeta.com/docs/browser-support#astryx-app-shell-main)
Type to search
↑↓Navigate↵SelectEscClose
Browser Support
===============
What browsers Astryx targets, which modern platform features it depends on, and how to support older browsers for your own audience.
Overview
--------
Copy link
Astryx is built on modern web platform features: the Popover API, CSS anchor positioning, and CSS `light-dark()`. These let components stay small, accessible, and dependency-free, but they also set a floor on which browsers render everything correctly.
A design system does not own its traffic; the products built on it do. Their audiences range from evergreen-Chrome-only internal tools to public sites with meaningful older-Safari share. So Astryx does not declare a single hard browser floor the way an app would. Instead it defines tiers that describe what works at each level, and hands the final decision to you. Pick the tier that matches your audience.
Support Tiers
-------------
Copy link
Astryx officially supports Tier 1 and Tier 2. Tier 3 is best-effort: components will not crash, but positioning and theming may degrade.
| Tier | Baseline | Representative versions | What your users experience |
| --- | --- | --- | --- |
| Tier 1: Full fidelity | Current Baseline (2026) | Chrome 125+, Edge 125+, Safari 26+, Firefox 147+ | Everything works, including CSS anchor positioning. This is the reference target. |
| Tier 2: Functional | Baseline − 2 years (2024) | Chrome 114+, Edge 114+, Safari 17+, Firefox 125+ | Components open, dismiss, and are fully usable. Only anchor positioning is missing, so layered surfaces (tooltips, menus, popovers) may not be positioned next to their trigger. |
| Tier 3: Below Tier 2 | Older than Baseline − 2 | Anything older | Best-effort. The only guarantee is "does not crash." `light-dark()` is unavailable, so theme colors may fall back to defaults. |
Which Features Set the Floor
----------------------------
Copy link
Only three modern features carry a browser requirement. Everything else Astryx uses (`:has()`, `color-mix()`, container queries, the `