chakra-ui/zag

Build your design system in React, Solid, Vue, Svelte or Vanilla. Powered by finite state machines

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 48 minutes ago
Added to GitGenius on September 13th, 2026
Created on July 7th, 2021
Open Issues & Pull Requests: 23 (+0)
GitHub issues: Enabled
Number of forks: 278
Total Stargazers: 5,206 (+0)
Total Subscribers: 15 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 14.4 hours
Mean response time: 5.1 days
90th percentile: 13.8 days
Tracked items: 404

Most active contributors

Sign in to see contributor activity.

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 22% of issues opened in the past year have been closed. Three people close 98% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 2
New in 7 days: 6
Closed in 7 days: 6
Avg open age: 40 days
Stale 30+ days: 0
Stale 90+ days: 0

Recent activity

Opened in 7 days: 5
Closed in 7 days: 5
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • stale (14)
  • bug (3)
  • good first issue (1)

Detailed Description

Zag is a JavaScript library that implements accessible UI component patterns using finite state machines, with framework adapters for React, Solid, Vue, Svelte, and vanilla JavaScript.

The library addresses the problem of repeated reimplementation of common component patterns across different frameworks. Rather than building tabs, menus, modals, and similar components separately in each framework using framework-specific reactivity systems, Zag models component interactions as framework-agnostic state machines. This approach reduces complexity and makes components easier to understand, debug, test, and improve. The state machine methodology provides a single source of truth for component behavior that can be adapted to any framework through lightweight wrappers.

Zag suits teams building design systems or component libraries that need to support multiple frameworks without duplicating logic. It is particularly valuable if accessibility is a priority, as the machines are built according to WAI-ARIA authoring practices with keyboard interactions, focus management, and ARIA attributes handled consistently. The headless nature means you retain full control over styling and can use any CSS solution. Choose Zag if you want to write component logic once and deploy it across React, Vue, Solid, Svelte, and vanilla JavaScript without reimplementation.

The project maintains end-to-end tests for every component based on WAI-ARIA specifications to ensure consistent behavior across frameworks. Development prioritizes keeping machines lightweight and straightforward, avoiding complex state machine concepts to maintain clarity and ease of understanding.