facebook/astryxPublic

An open source design system that's fully customizable and agent ready

AI summary: A high-performance syntax tree parser and analysis tool for modern programming languages.

Stars
11.8K
+16 today
Forks
1K
Watchers
75
Open issues
192
Open PRs
170
Contributors
~69
Commits
2.8K
Branches
101

TypeScriptMITCreated Jan 9, 2026Last push todayLatest release v0.1.9+658 stars this week+766 this month

Star history

since Jun 21, 2026
05K10KJun 2026Jul 2026Jul 2026Aug 2026
11.8K stars as of Aug 7, 2026, tracked back to Jun 21, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-02: 0 commits2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 11 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 2 commits2026-01-13: 6 commits2026-01-14: 4 commits2026-01-15: 2 commits2026-01-16: 2 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 3 commits2026-01-22: 7 commits2026-01-23: 1 commit2026-01-24: 0 commits2026-01-25: 3 commits2026-01-26: 1 commit2026-01-27: 0 commits2026-01-28: 5 commits2026-01-29: 1 commit2026-01-30: 3 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 6 commits2026-02-03: 3 commits2026-02-04: 5 commits2026-02-05: 2 commits2026-02-06: 1 commit2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 3 commits2026-02-10: 0 commits2026-02-11: 7 commits2026-02-12: 2 commits2026-02-13: 5 commits2026-02-14: 1 commit2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 9 commits2026-02-18: 10 commits2026-02-19: 16 commits2026-02-20: 10 commits2026-02-21: 17 commits2026-02-22: 9 commits2026-02-23: 5 commits2026-02-24: 21 commits2026-02-25: 14 commits2026-02-26: 10 commits2026-02-27: 7 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 6 commits2026-03-03: 8 commits2026-03-04: 19 commits2026-03-05: 12 commits2026-03-06: 13 commits2026-03-07: 15 commits2026-03-08: 25 commits2026-03-09: 8 commits2026-03-10: 5 commits2026-03-11: 0 commits2026-03-12: 9 commits2026-03-13: 19 commits2026-03-14: 6 commits2026-03-15: 5 commits2026-03-16: 7 commits2026-03-17: 15 commits2026-03-18: 25 commits2026-03-19: 18 commits2026-03-20: 23 commits2026-03-21: 14 commits2026-03-22: 11 commits2026-03-23: 6 commits2026-03-24: 20 commits2026-03-25: 17 commits2026-03-26: 16 commits2026-03-27: 10 commits2026-03-28: 14 commits2026-03-29: 11 commits2026-03-30: 14 commits2026-03-31: 20 commits2026-04-01: 16 commits2026-04-02: 19 commits2026-04-03: 18 commits2026-04-04: 16 commits2026-04-05: 4 commits2026-04-06: 22 commits2026-04-07: 14 commits2026-04-08: 12 commits2026-04-09: 22 commits2026-04-10: 22 commits2026-04-11: 15 commits2026-04-12: 16 commits2026-04-13: 28 commits2026-04-14: 17 commits2026-04-15: 22 commits2026-04-16: 28 commits2026-04-17: 17 commits2026-04-18: 16 commits2026-04-19: 26 commits2026-04-20: 28 commits2026-04-21: 47 commits2026-04-22: 49 commits2026-04-23: 57 commits2026-04-24: 19 commits2026-04-25: 25 commits2026-04-26: 8 commits2026-04-27: 6 commits2026-04-28: 18 commits2026-04-29: 21 commits2026-04-30: 21 commits2026-05-01: 22 commits2026-05-02: 31 commits2026-05-03: 47 commits2026-05-04: 24 commits2026-05-05: 4 commits2026-05-06: 0 commits2026-05-07: 5 commits2026-05-08: 7 commits2026-05-09: 9 commits2026-05-10: 8 commits2026-05-11: 8 commits2026-05-12: 6 commits2026-05-13: 6 commits2026-05-14: 6 commits2026-05-15: 10 commits2026-05-16: 1 commit2026-05-17: 3 commits2026-05-18: 13 commits2026-05-19: 20 commits2026-05-20: 13 commits2026-05-21: 29 commits2026-05-22: 12 commits2026-05-23: 9 commits2026-05-24: 1 commit2026-05-25: 11 commits2026-05-26: 3 commits2026-05-27: 14 commits2026-05-28: 7 commits2026-05-29: 15 commits2026-05-30: 7 commits2026-05-31: 5 commits2026-06-01: 2 commits2026-06-02: 12 commits2026-06-03: 11 commits2026-06-04: 15 commits2026-06-05: 5 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 21 commits2026-06-09: 10 commits2026-06-10: 39 commits2026-06-11: 31 commits2026-06-12: 37 commits2026-06-13: 6 commits2026-06-14: 0 commits2026-06-15: 3 commits2026-06-16: 12 commits2026-06-17: 13 commits2026-06-18: 17 commits2026-06-19: 12 commits2026-06-20: 12 commits2026-06-21: 9 commits2026-06-22: 6 commits2026-06-23: 25 commits2026-06-24: 61 commits2026-06-25: 40 commits2026-06-26: 24 commits2026-06-27: 21 commits2026-06-28: 10 commits2026-06-29: 34 commits2026-06-30: 3 commits2026-07-01: 18 commits2026-07-02: 72 commits2026-07-03: 41 commits2026-07-04: 22 commits2026-07-05: 1 commit2026-07-06: 7 commits2026-07-07: 31 commits2026-07-08: 30 commits2026-07-09: 27 commits2026-07-10: 28 commits2026-07-11: 66 commits2026-07-12: 24 commits2026-07-13: 18 commits2026-07-14: 4 commits2026-07-15: 8 commits2026-07-16: 7 commits2026-07-17: 15 commits2026-07-18: 10 commits2026-07-19: 26 commits2026-07-20: 10 commits2026-07-21: 16 commits2026-07-22: 21 commits2026-07-23: 39 commits2026-07-24: 19 commits2026-07-25: 18 commits2026-07-26: 16 commits2026-07-27: 22 commits2026-07-28: 34 commits2026-07-29: 1 commit2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
2,752 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    11,809 stars

  • Rising fast

    +658 stars this week

  • Very active

    2,752 commits in 52 weeks

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

  • Repeat trending

    10 trending appearances

What astryx does

Astryx is a fast, scalable AST (Abstract Syntax Tree) generation and analysis framework built by Facebook. It is designed to process massive codebases quickly, providing a unified interface for analyzing code across multiple languages. It facilitates complex refactoring, linting, and static analysis tasks by exposing a robust, queryable representation of source code.

Platform engineers, developer productivity teams, and security researchers managing very large codebases.

  • Multi-Language Support: Parses multiple modern languages into a unified AST format.
  • High Performance: Optimized for speed, capable of processing millions of lines of code in seconds.
  • Queryable Interface: Provides a powerful query language to search for specific syntax patterns.
  • Scalable Architecture: Designed to run efficiently on large monorepos.
  • Extensibility: Easy to write custom linters or refactoring rules on top of the AST.

Where teams use it

Large-Scale Refactoring

Automating codebase-wide changes safely across thousands of files.

Custom Linting Rules

Enforcing organization-specific coding standards programmatically.

Static Analysis

Detecting complex security vulnerabilities or performance anti-patterns.

Codebase Metrics

Gathering deep insights into code structure and complexity.

Getting started: cargo install astryx

README

main branch
Astryx

Astryx

An open source design system that's fully customizable and built for how we build now:
by people and the agents working alongside them.

Currently in Beta · Built on React and StyleX

npm version license MIT PRs welcome

Docs Storybook Sandbox

Docs · Storybook · Sandbox · Contributing

Overview

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.

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.

What makes Astryx different:

  • Open internals. Components are built to be composed at any level, not locked behind a closed top-level API. The building blocks you'd reach for are exported directly, and when you need to go deeper, swizzle ejects a component's full source into your project to own.
  • No styling lock-in. Astryx authors its styles with StyleX, but that's invisible to consumers. Override with className using Tailwind, CSS modules, or plain CSS — whatever your project already uses.
  • Customize without wrapping. A theme is a set of CSS custom property overrides, so a designer can make Astryx unmistakably theirs without forking or wrapping component source.
  • Built for people and agents. The API, docs, and CLI are designed together so a person and an AI assistant build the same way, from the same reference.

Getting Started

Install Astryx and a theme:

# npm
npm install @astryxdesign/core @astryxdesign/theme-neutral
npm install -D @astryxdesign/cli

# pnpm
pnpm add @astryxdesign/core @astryxdesign/theme-neutral
pnpm add -D @astryxdesign/cli

# yarn
yarn add @astryxdesign/core @astryxdesign/theme-neutral
yarn add -D @astryxdesign/cli

The simplest setup is a few CSS imports plus a theme provider — no build plugin, no PostCSS or Babel config. See the @astryxdesign/core README for the full guide (Next.js, Tailwind, Vite, and CDN).

For reliable CLI access, add a script to your package.json:

"scripts": {
  "astryx": "node node_modules/@astryxdesign/cli/bin/astryx.mjs"
}

Then use it as npm run astryx -- component --list. This avoids path errors when AI assistants or new developers invoke the CLI directly.

Packages

Package Description README
@astryxdesign/core Components, theme system, and utilities README
@astryxdesign/cli CLI tooling: component docs, templates, scaffolding, themes, and codemods README
@astryxdesign/build Build plugins for StyleX source builds README
@astryxdesign/theme-* Seven ready-made, fully customizable themes (neutral, butter, chocolate, matcha, stone, gothic, y2k) README

@astryxdesign/lab (experimental components) is used internally for Storybook and the sandbox and is not published to npm. @astryxdesign/vega (Vega/Vega-Lite chart wrapper) and @astryxdesign/charts (chart components) are published to npm only under the @canary dist-tag — there is no stable release yet.

Principles

These are the promises Astryx makes to the people building on it.

  • Guidance over enforcement. 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.
  • Strong, documented conventions. Every component follows the same naming, prop, and composition rules, and every one is thoroughly documented — so once you've learned a few, the rest feel familiar, and both people and AI can predict how an unfamiliar component behaves.
  • One system for humans and AI. 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.
  • Earned by measurement. We test conventions rather than assert them, hold the results loosely, and revisit them when a new situation proves them wrong.

Architecture

Foundations

The building blocks for visually cohesive and accessible interfaces: typography, color, layout, and accessibility.

Components

A library of 150+ reusable UI building blocks with full TypeScript support.

Patterns

Battle-tested design solutions for common interactions and workflows: table pages, detail page layouts, form wizards, navigation patterns, data entry flows.

Project Structure

Directory Purpose
apps/ Example apps, the docsite, and Storybook
packages/ Published packages: core, cli, build, themes
internal/ Internal tooling: test utilities, eslint plugin, vibe tests

Contributing

We welcome contributions! See CONTRIBUTING.md for the full guide.

Our conventions and review rubrics live in the Contributing wiki — including API Conventions, Design Conventions, the Component Lifecycle, and the Contributing Templates and Blog Review rubrics. Read the relevant one before opening a PR.

Quick start for contributors: this repo uses Node 22+ on an active LTS line and pnpm 11. Install pnpm directly, or enable Corepack once so the pinned pnpm version installs automatically:

corepack enable
pnpm install

If corepack is missing, install pnpm directly or install Corepack manually; see the troubleshooting notes in CONTRIBUTING.md.

License

MIT

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 4

Releases and announcements

9 total
  1. v0.1.9v0.1.9Jul 27, 2026

    v0.1.9 is an all-patch release — no breaking changes, so no codemods required. ### New Features - Avatar: add a `tooltip?: string | boolean` prop for a name-on-hover tooltip. Omitting it (or `true`) shows the avatar's `name` on hover and keyboard focus; a string shows that text instead (no need to wrap in `Tooltip`); `false` disables it. Avatar owns the tooltip via the existing Tooltip hook, so there's no extra wrapper DOM. Because this adds a default tooltip to every existing named Avatar, set `tooltip={false}` when you supply your own `Tooltip`/`HoverCard` overlay. The root `aria-label` (`alt || name`) is unchanged; the default name tooltip is visual-only (no `aria-describedby` double-announce), while a custom string tooltip is exposed as a description. Decorative avatars (no `name`/`alt`) get no tooltip. (#4164) - BreadcrumbItem gains a `menu` prop that turns a crumb into a menu trigger for switching between sibling destinations. It accepts the same item API as DropdownMenu/MoreMenu/ContextMenu (a `DropdownMenuOption[]` array or composed item children), so existing menu-item definitions drop into a breadcrumb with no rewrite. The item components are also re-exported under `Bre

  2. v0.1.8v0.1.8Jul 23, 2026

    ## @astryxdesign/core #### Breaking Changes - Avatar and AvatarGroup adopt Icon's abbreviated size scale — `size` now takes `xsm`/`sm`/`md`/`lg`/`xl` instead of `tiny`/`xsmall`/`small`/`medium`/`large`. Pixel values are unchanged (20/24/36/48/128px) and the default is now `md` (still 36px, formerly `small`). Avatar's tiers stay larger than Icon's because avatars align with media rather than glyphs. Run `astryx upgrade` to migrate call sites. (#2672) #### New Features - Collapsible: the content area now anchors body typography (font family, size, weight, line-height) instead of inheriting from its surroundings, and exposes a stable `astryx-collapsible-content` theme target so revealed text can be themed externally. - Collapsible: add an `isDisabled` prop to disable a single item. A disabled item's trigger can't be toggled and is dimmed; following the system-wide disabled convention it uses `aria-disabled` (not the native `disabled` attribute) and drops out of the tab order, staying perceivable to assistive tech. Disabling doesn't collapse an already-open item. Works standalone and inside CollapsibleGroup. - `@astryxdesign/core`'s `docs.mjs` now redirects to the CLI so agents con

  3. v0.1.7v0.1.7Jul 21, 2026

    ## @astryxdesign/core #### Breaking Changes - Table plugin render-prop interfaces (`TableRenderProps`, `HeaderRowRenderProps`, `HeaderCellRenderProps`, `BodyRowRenderProps`, `BodyCellRenderProps`, `ScrollWrapperRenderProps`) and the `scrollWrapper` component contract rename their StyleX array field `styles` → `xstyle`, matching the prop name sub-components receive it under. Custom plugin authors: rename `props.styles` reads and `styles:` writes in transform functions (#3679) **Codemod:** `npx astryx upgrade --codemod rename-table-renderprops-styles-to-xstyle` #### New Features - Export the authoring factories from `@astryxdesign/core`: `createConfig` at `@astryxdesign/core/config` and `createIntegration`/`createPageTemplate`/`createBlockTemplate`/`createComponentDoc`/`createFunctionDoc`/`createDoc` at `@astryxdesign/core/authoring`. Authoring a config or integration no longer requires depending on the CLI. Existing `@astryxdesign/cli/*` imports keep working via re-export. - Button: new `width` prop following the input field width convention (`SizeValue`: numbers are pixels, strings are used as-is). `width="100%"` removes the need for a `width: '100%'` xstyle override or a str

  4. v0.1.6v0.1.6Jul 15, 2026

    All `@astryxdesign/*` packages ship together at **0.1.6**. ## @astryxdesign/core #### New Features - Add `useTableGroupedRows` — groups a flat data array into collapsible section rows. Each distinct `groupBy` value becomes a full-width section-header row with a chevron toggle, group label, and member count; collapsing hides that group's rows while keeping the header. Mirrors `useTableRowExpansionState`: the consumer owns the `collapsedGroups` set and the hook returns `{data, plugin, idKey}` (pass to `Table` data / plugins / idKey). Supports `renderGroupHeader` and `groupOrder`. (#3763) - Add `useTableRowIndex` — a plugin that prepends a right-aligned, monospaced row-number column. Numbering follows the rendered `data` order, so it reflects the current sort / filter / pagination view (pass the sorted/paged array). Provides `getRowKey` for stable keyed lookup, plus `label` and `startFrom` to customize the header and starting ordinal. (#3756) #### Fixes - Rebrand the core package `displayName` from "XDS Core" to "Astryx Core" The core package's `displayName` still read "XDS Core". It surfaces in the docsite package sidebar and landing cards as the friendly package label, so thi

  5. v0.1.5v0.1.5Jul 13, 2026

    ## @astryxdesign/core #### New Features - AspectRatio: add a `fit` prop (`'cover' | 'contain' | 'center'`) so the component sizes and positions its child instead of every consumer hand-writing `width`/`height`/`objectFit` on the child. `cover`/`contain` ship as zero-specificity baseline rules in `reset.css` keyed on a `data-astryx-aspect-ratio-override` marker the component sets on the child's direct parent (direct-child selectors, no dependence on internal structure or the theming surface), so a child's own styles always win and self-sized children are unchanged; `center` centers the child at its natural size from the component's wrapper. When `fit` is omitted the child is left unstyled, preserving the existing contract (#2753) - CodeBlock: new `syntaxTheme` prop for per-instance syntax theme overrides. Shorthand for wrapping a single block in `<SyntaxTheme theme={...}>` — accepts a preset from `@astryxdesign/core/theme/syntax` or a theme created with `defineSyntaxTheme()` (#3360). - CollapsibleGroup: add a `hasDividers` prop (boolean, default `false`) so FAQ-style accordions get built-in row hairlines instead of hand-rolled borders, plus a `density` prop (`'compact' | 'balance

Code frequency

additions and deletions
+3.1M-3.1MWeek of 2026-01-04: +11,444 linesWeek of 2026-01-04: -436 linesWeek of 2026-01-11: +3,143,431 linesWeek of 2026-01-11: -3,133,227 linesWeek of 2026-01-18: +5,413 linesWeek of 2026-01-18: -2,644 linesWeek of 2026-01-25: +16,303 linesWeek of 2026-01-25: -684 linesWeek of 2026-02-01: +20,466 linesWeek of 2026-02-01: -3,638 linesWeek of 2026-02-08: +18,469 linesWeek of 2026-02-08: -1,689 linesWeek of 2026-02-15: +34,250 linesWeek of 2026-02-15: -8,593 linesWeek of 2026-02-22: +21,427 linesWeek of 2026-02-22: -16,174 linesWeek of 2026-03-01: +33,699 linesWeek of 2026-03-01: -17,043 linesWeek of 2026-03-08: +43,880 linesWeek of 2026-03-08: -18,975 linesWeek of 2026-03-15: +28,979 linesWeek of 2026-03-15: -8,495 linesWeek of 2026-03-22: +25,026 linesWeek of 2026-03-22: -8,133 linesWeek of 2026-03-29: +55,561 linesWeek of 2026-03-29: -19,357 linesWeek of 2026-04-05: +57,297 linesWeek of 2026-04-05: -15,135 linesWeek of 2026-04-12: +111,992 linesWeek of 2026-04-12: -70,789 linesWeek of 2026-04-19: +88,224 linesWeek of 2026-04-19: -68,696 linesWeek of 2026-04-26: +29,802 linesWeek of 2026-04-26: -11,053 linesWeek of 2026-05-03: +17,871 linesWeek of 2026-05-03: -6,391 linesWeek of 2026-05-10: +15,904 linesWeek of 2026-05-10: -5,021 linesWeek of 2026-05-17: +57,088 linesWeek of 2026-05-17: -22,638 linesWeek of 2026-05-24: +29,091 linesWeek of 2026-05-24: -6,598 linesWeek of 2026-05-31: +14,965 linesWeek of 2026-05-31: -9,905 linesWeek of 2026-06-07: +42,702 linesWeek of 2026-06-07: -43,405 linesWeek of 2026-06-14: +153,722 linesWeek of 2026-06-14: -145,959 linesWeek of 2026-06-21: +49,582 linesWeek of 2026-06-21: -41,996 linesWeek of 2026-06-28: +47,671 linesWeek of 2026-06-28: -12,062 linesWeek of 2026-07-05: +38,603 linesWeek of 2026-07-05: -10,922 linesWeek of 2026-07-12: +16,220 linesWeek of 2026-07-12: -4,328 linesWeek of 2026-07-19: +88,661 linesWeek of 2026-07-19: -55,163 linesWeek of 2026-07-26: +14,937 linesWeek of 2026-07-26: -5,670 linesJan 4, 2026Jul 26, 2026
+4.3M lines added, -3.8M removed over the last year.

Commits per week

last 52 weeks
2510Week of 2025-08-02: 0 commitsWeek of 2025-08-09: 0 commitsWeek of 2025-08-16: 0 commitsWeek of 2025-08-23: 0 commitsWeek of 2025-08-30: 0 commitsWeek of 2025-09-06: 0 commitsWeek of 2025-09-13: 0 commitsWeek of 2025-09-20: 0 commitsWeek of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 11 commitsWeek of 2026-01-11: 16 commitsWeek of 2026-01-18: 11 commitsWeek of 2026-01-25: 13 commitsWeek of 2026-02-01: 17 commitsWeek of 2026-02-08: 18 commitsWeek of 2026-02-15: 62 commitsWeek of 2026-02-22: 66 commitsWeek of 2026-03-01: 73 commitsWeek of 2026-03-08: 72 commitsWeek of 2026-03-15: 107 commitsWeek of 2026-03-22: 94 commitsWeek of 2026-03-29: 114 commitsWeek of 2026-04-05: 111 commitsWeek of 2026-04-12: 144 commitsWeek of 2026-04-19: 251 commitsWeek of 2026-04-26: 127 commitsWeek of 2026-05-03: 96 commitsWeek of 2026-05-10: 45 commitsWeek of 2026-05-17: 99 commitsWeek of 2026-05-24: 58 commitsWeek of 2026-05-31: 50 commitsWeek of 2026-06-07: 144 commitsWeek of 2026-06-14: 69 commitsWeek of 2026-06-21: 186 commitsWeek of 2026-06-28: 200 commitsWeek of 2026-07-05: 190 commitsWeek of 2026-07-12: 86 commitsWeek of 2026-07-19: 149 commitsWeek of 2026-07-26: 73 commitsAug 2, 2025Jul 26, 2026
2.8K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 9 commitsSun 1:00 — 5 commitsSun 2:00 — 6 commitsSun 3:00 — 7 commitsSun 4:00 — 18 commitsSun 5:00 — 5 commitsSun 6:00 — 14 commitsSun 7:00 — 5 commitsSun 8:00 — 21 commitsSun 9:00 — 17 commitsSun 10:00 — 12 commitsSun 11:00 — 23 commitsSun 12:00 — 19 commitsSun 13:00 — 12 commitsSun 14:00 — 10 commitsSun 15:00 — 20 commitsSun 16:00 — 9 commitsSun 17:00 — 7 commitsSun 18:00 — 13 commitsSun 19:00 — 9 commitsSun 20:00 — 2 commitsSun 21:00 — 7 commitsSun 22:00 — 9 commitsSun 23:00 — 9 commitsMon 0:00 — 5 commitsMon 1:00 — 2 commitsMon 2:00 — 2 commitsMon 3:00 — 5 commitsMon 4:00 — 4 commitsMon 5:00 — 6 commitsMon 6:00 — 3 commitsMon 7:00 — 7 commitsMon 8:00 — 8 commitsMon 9:00 — 22 commitsMon 10:00 — 18 commitsMon 11:00 — 16 commitsMon 12:00 — 25 commitsMon 13:00 — 21 commitsMon 14:00 — 25 commitsMon 15:00 — 25 commitsMon 16:00 — 22 commitsMon 17:00 — 36 commitsMon 18:00 — 15 commitsMon 19:00 — 25 commitsMon 20:00 — 12 commitsMon 21:00 — 8 commitsMon 22:00 — 8 commitsMon 23:00 — 1 commitsTue 0:00 — 7 commitsTue 1:00 — 1 commitsTue 2:00 — 3 commitsTue 3:00 — 4 commitsTue 4:00 — 8 commitsTue 5:00 — 4 commitsTue 6:00 — 3 commitsTue 7:00 — 6 commitsTue 8:00 — 16 commitsTue 9:00 — 35 commitsTue 10:00 — 18 commitsTue 11:00 — 37 commitsTue 12:00 — 17 commitsTue 13:00 — 16 commitsTue 14:00 — 27 commitsTue 15:00 — 17 commitsTue 16:00 — 32 commitsTue 17:00 — 22 commitsTue 18:00 — 26 commitsTue 19:00 — 27 commitsTue 20:00 — 13 commitsTue 21:00 — 23 commitsTue 22:00 — 11 commitsTue 23:00 — 12 commitsWed 0:00 — 12 commitsWed 1:00 — 7 commitsWed 2:00 — 14 commitsWed 3:00 — 7 commitsWed 4:00 — 0 commitsWed 5:00 — 6 commitsWed 6:00 — 3 commitsWed 7:00 — 4 commitsWed 8:00 — 13 commitsWed 9:00 — 14 commitsWed 10:00 — 16 commitsWed 11:00 — 33 commitsWed 12:00 — 29 commitsWed 13:00 — 33 commitsWed 14:00 — 41 commitsWed 15:00 — 36 commitsWed 16:00 — 56 commitsWed 17:00 — 33 commitsWed 18:00 — 20 commitsWed 19:00 — 24 commitsWed 20:00 — 15 commitsWed 21:00 — 9 commitsWed 22:00 — 20 commitsWed 23:00 — 21 commitsThu 0:00 — 6 commitsThu 1:00 — 10 commitsThu 2:00 — 5 commitsThu 3:00 — 5 commitsThu 4:00 — 4 commitsThu 5:00 — 2 commitsThu 6:00 — 6 commitsThu 7:00 — 11 commitsThu 8:00 — 29 commitsThu 9:00 — 27 commitsThu 10:00 — 46 commitsThu 11:00 — 50 commitsThu 12:00 — 20 commitsThu 13:00 — 22 commitsThu 14:00 — 24 commitsThu 15:00 — 28 commitsThu 16:00 — 41 commitsThu 17:00 — 42 commitsThu 18:00 — 27 commitsThu 19:00 — 37 commitsThu 20:00 — 20 commitsThu 21:00 — 43 commitsThu 22:00 — 24 commitsThu 23:00 — 9 commitsFri 0:00 — 3 commitsFri 1:00 — 5 commitsFri 2:00 — 4 commitsFri 3:00 — 5 commitsFri 4:00 — 6 commitsFri 5:00 — 15 commitsFri 6:00 — 17 commitsFri 7:00 — 22 commitsFri 8:00 — 9 commitsFri 9:00 — 9 commitsFri 10:00 — 24 commitsFri 11:00 — 17 commitsFri 12:00 — 16 commitsFri 13:00 — 30 commitsFri 14:00 — 31 commitsFri 15:00 — 23 commitsFri 16:00 — 40 commitsFri 17:00 — 38 commitsFri 18:00 — 18 commitsFri 19:00 — 19 commitsFri 20:00 — 26 commitsFri 21:00 — 22 commitsFri 22:00 — 11 commitsFri 23:00 — 20 commitsSat 0:00 — 9 commitsSat 1:00 — 5 commitsSat 2:00 — 7 commitsSat 3:00 — 1 commitsSat 4:00 — 2 commitsSat 5:00 — 28 commitsSat 6:00 — 14 commitsSat 7:00 — 16 commitsSat 8:00 — 11 commitsSat 9:00 — 16 commitsSat 10:00 — 18 commitsSat 11:00 — 19 commitsSat 12:00 — 17 commitsSat 13:00 — 20 commitsSat 14:00 — 29 commitsSat 15:00 — 21 commitsSat 16:00 — 35 commitsSat 17:00 — 13 commitsSat 18:00 — 5 commitsSat 19:00 — 11 commitsSat 20:00 — 18 commitsSat 21:00 — 12 commitsSat 22:00 — 17 commitsSat 23:00 — 8 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Aug 7, 2026monthly#16+6,191
Aug 6, 2026monthly#16+6,191
Aug 5, 2026monthly#13+6,591
Aug 4, 2026monthly#9+7,387
Aug 3, 2026monthly#9+8,233
Jul 22, 2026daily#14+4
Jul 4, 2026daily#14+29
Jul 3, 2026daily#5+19
Jul 2, 2026daily#8+33
Jul 1, 2026daily#16+19
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    453.6K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • anomalyco/opencode

    The open source coding agent.

    194.7K stars · TypeScript