Chakra UI logo

Chakra UI

简洁、模块化的 React 组件库,以可访问性和开发体验为核心,v3 采用 Ark UI + Panda CSS 全新零运行时架构。

精选工具React组件库可访问性Panda CSS

以可访问性和开发体验为核心的 React 组件库,GitHub Stars 超过 40,000。v3 采用 Ark UI + Panda CSS 零运行时架构,支持组合式 API 和跨框架(React/Vue/Solid),提供类型安全的样式系统。

Chakra UI

简洁、模块化的 React 组件库,以可访问性和开发体验为核心,v3 采用 Ark UI + Panda CSS 全新零运行时架构。

技术简介说明

Chakra UI 是一个以「简洁性」和「可访问性」为核心理念的 React 组件库,由 Segun Adebayo(Segun Adebayo)于 2019 年创建。它以直觉式的 API 设计、出色的开发体验和严格的 WAI-ARIA 无障碍标准著称,GitHub Stars 超过 40,000,已成为 React 生态中最受欢迎的组件库之一。

Chakra UI v3(2024 年 10 月发布,持续迭代至 2026 年的 v3.35.0)带来了架构层面的根本性变革——从 v2 的运行时 Emotion CSS-in-JS 迁移到构建时生成的 Panda CSS + Ark UI 组合方案。这一变革使得 Chakra UI 实现了零运行时开销、类型安全的样式系统,同时保持了开发者喜爱的组合式 API。Ark UI 提供无样式的 headless 组件行为层(基于 Zag.js 有限状态机),Panda CSS 负责构建时 CSS 生成和 Design Token 管理。

Chakra UI 的独特之处在于它同时追求「开发体验」和「运行时性能」,这在传统组件库中往往是矛盾的。v3 通过构建时 CSS 生成解决了性能问题,同时通过组合式 API(Compound Components)和语义化命名保持了优雅的开发者体验。跨框架支持(React、Vue、Solid)也使其成为设计系统团队的理想选择。

基本信息

  • 官网https://chakra-ui.com/
  • GitHubhttps://github.com/chakra-ui/chakra-ui
  • License:MIT
  • 最新版本:v3.35.0(2026 年 4 月 22 日)
  • 主要维护者:Segun Adebayo(个人创作者),社区贡献
  • npm 周下载量:约 587,000+
  • TypeScript 支持:原生支持,完全类型化
  • 跨框架支持:React、Vue、Solid(通过 Ark UI)

快速上手

安装

# 核心包
npm install @chakra-ui/react @emotion/react
 
# Chakra UI v3 使用 Panda CSS,还需要安装 Panda CSS
npm install @chakra-ui/react @ark-ui/react
 
# 使用 pnpm
pnpm add @chakra-ui/react @ark-ui/react
 
# 可选:图标
npm install @chakra-ui/icons
 
# 注意:v3 不再需要 @emotion/react 和 @emotion/styled

注意:Chakra UI v3 要求 React 18+ 版本。从 v2 迁移到 v3 需要较大的改动,请参阅迁移章节。

基础配置

// src/main.tsx
import { ChakraProvider, defaultSystem } from '@chakra-ui/react';
import ReactDOM from 'react-dom/client';
import App from './App';
 
ReactDOM.createRoot(document.getElementById('root')!).render(
  <ChakraProvider value={defaultSystem}>
    <App />
  </ChakraProvider>
);
// 自定义主题系统
import { createSystem, defaultConfig, defineConfig } from '@chakra-ui/react';
 
const config = defineConfig({
  theme: {
    tokens: {
      colors: {
        brand: {
          50: { value: '#e6f2ff' },
          500: { value: '#0066cc' },
          900: { value: '#001a33' },
        },
      },
      fonts: {
        heading: { value: '"Inter", sans-serif' },
        body: { value: '"Inter", sans-serif' },
      },
    },
  },
});
 
export const system = createSystem(defaultConfig, config);

最小示例

import { Box, Button, Heading, Stack, Text } from '@chakra-ui/react';
 
function App() {
  return (
    <Box p={8}>
      <Stack gap={4}>
        <Heading size="lg">欢迎使用 Chakra UI</Heading>
        <Text color="fg.muted">
          简洁、模块化、可访问的 React 组件库
        </Text>
        <Button colorPalette="blue" size="md">
          开始使用
        </Button>
      </Stack>
    </Box>
  );
}
 
export default App;

核心概念与架构

v3 全新架构

Chakra UI v3 采用全新的分层架构:

┌──────────────────────────────────────────────────┐
│              Chakra UI v3                         │
│  有样式的组合式组件 API                              │
│  <Accordion.Root> <Dialog.Root> 等                │
├──────────────────────────────────────────────────┤
│              Ark UI                               │
│  无样式 headless 组件(行为 + 可访问性)              │
│  基于 Zag.js 有限状态机                             │
│  支持 React / Vue / Solid                         │
├──────────────────────────────────────────────────┤
│              Panda CSS                            │
│  构建时 CSS 生成(零运行时)                         │
│  Design Token 管理 + 类型安全样式                    │
│  支持 CSS 级联层、:where 选择器                     │
├──────────────────────────────────────────────────┤
│              React 18+                            │
│  运行时                                            │
└──────────────────────────────────────────────────┘

组合式 API(Compound Components)

v3 全面采用组合式 API,所有复杂组件都通过 Root + 子组件的模式构建:

// v3 组合式 API
import { Accordion } from '@chakra-ui/react';
 
<Accordion.Root defaultValue={['section-1']}>
  <Accordion.Item value="section-1">
    <Accordion.ItemTrigger>第一部分</Accordion.ItemTrigger>
    <Accordion.ItemContent>
      <Accordion.ItemBody>
        这是第一部分内容
      </Accordion.ItemBody>
    </Accordion.ItemContent>
  </Accordion.Item>
  <Accordion.Item value="section-2">
    <Accordion.ItemTrigger>第二部分</Accordion.ItemTrigger>
    <Accordion.ItemContent>
      <Accordion.ItemBody>
        这是第二部分内容
      </Accordion.ItemBody>
    </Accordion.ItemContent>
  </Accordion.Item>
</Accordion.Root>

样式原语(Style Primitives)

v3 使用 css prop 和语义化样式属性:

import { Box, Stack } from '@chakra-ui/react';
 
// 使用样式属性
<Box
  p={4}
  bg="bg.surface"
  borderRadius="lg"
  borderWidth="1px"
  borderColor="border.subtle"
>
  卡片内容
</Box>
 
// 使用 css prop 处理复杂样式
<Box
  css={{
    '&:hover': {
      transform: 'translateY(-2px)',
      boxShadow: 'lg',
    },
  }}
>
  悬停动画效果
</Box>
 
// 响应式样式
<Stack direction={{ base: 'column', md: 'row' }} gap={4}>
  <Box flex={1}>左侧</Box>
  <Box flex={1}>右侧</Box>
</Stack>

Design Token 系统

// Panda CSS 配置
import { defineConfig } from '@chakra-ui/react';
 
export default defineConfig({
  theme: {
    tokens: {
      // 颜色令牌
      colors: {
        primary: {
          50: { value: '#eff6ff' },
          100: { value: '#dbeafe' },
          500: { value: '#3b82f6' },
          900: { value: '#1e3a5f' },
        },
      },
      // 间距令牌
      spacing: {
        xs: { value: '0.25rem' },
        sm: { value: '0.5rem' },
        md: { value: '1rem' },
        lg: { value: '1.5rem' },
      },
      // 语义令牌
      semanticTokens: {
        colors: {
          'text.primary': { value: '{colors.gray.900}' },
          'text.muted': { value: '{colors.gray.500}' },
          'bg.surface': { value: '{colors.white}' },
        },
      },
    },
  },
});

核心特性

  • 零运行时 CSS:Panda CSS 在构建时生成 CSS,运行时零开销,显著提升性能
  • 组合式 API:所有复杂组件采用 Root + 子组件模式,灵活且可预测
  • 严格的无障碍标准:所有组件遵循 WAI-ARIA 规范,内置键盘导航和屏幕阅读器支持
  • Ark UI 行为层:基于 Zag.js 有限状态机,提供经过测试的 headless 组件行为
  • 跨框架支持:Ark UI 同时支持 React、Vue、Solid,一套行为逻辑多框架复用
  • 类型安全样式:Panda CSS 提供完整的 TypeScript 类型推导,样式属性有智能提示
  • CSS 现代特性:使用级联层(Cascade Layers)、:where 选择器、CSS 变量等现代特性
  • 语义化命名:v3 使用语义化命名(colorPalette 替代 colorSchemeopen 替代 isOpen
  • Presence 动画:统一的 CSS 动画方案替代旧的 JS 过渡组件
  • Command Menu(CMDK):CLI 工具支持快速添加组件代码片段
  • 暗色模式:通过 next-themes 实现(v3 移除了内置颜色模式工具)

生态图

核心生态

┌──────────────────────────────────────────────────────────┐
│                    Chakra UI 生态                         │
├────────────────┬────────────────┬─────────────────────────┤
│  核心库         │  行为层         │  样式引擎                │
│  @chakra-ui/   │  @ark-ui/react │  Panda CSS              │
│  react         │  35+ headless  │  构建时 CSS 生成          │
│  v3.35.0       │  组件          │  零运行时开销              │
├────────────────┼────────────────┼─────────────────────────┤
│  模板系统       │  图标           │  工具                    │
│  Park UI       │  @chakra-ui/   │  @chakra-ui/codemod     │
│  预设计组件模板  │  icons         │  v2 → v3 迁移工具         │
│  React/Vue/    │                │  50+ 自动转换             │
│  Solid         │                │                          │
├────────────────┼────────────────┼─────────────────────────┤
│  付费产品       │  社区资源       │  学习资源                 │
│  Chakra UI Pro │  Chakra Templates│  官方文档                │
│  高级页面模板    │  社区主题       │  YouTube 教程             │
│                │  社区扩展       │  迁移指南                 │
└────────────────┴────────────────┴─────────────────────────┘

关键包

包名说明版本
@chakra-ui/react核心组件库v3.35.0
@ark-ui/reactHeadless 行为组件v5.37.0
panda-css / @pandacss/dev构建时 CSS 引擎v2.x
@chakra-ui/icons官方图标集-
@chakra-ui/codemodv2→v3 迁移工具-
@zag-js/*有限状态机工具-
Park UI预设计组件模板-

Park UI

Park UI 于 2025 年 11 月正式加入 Chakra UI 组织,提供基于 Ark UI + Panda CSS 构建的精美组件模板。开发者可以直接使用这些模板快速搭建页面,支持 React、Vue、Solid 三个框架。

适用场景

  • 重视可访问性的项目:Chakra UI 以 WAI-ARIA 为最高标准,所有组件均通过严格的无障碍测试
  • 需要零运行时性能的场景:Panda CSS 构建时生成 CSS,运行时零开销,适合对性能敏感的应用
  • 跨框架设计系统:Ark UI 同时支持 React/Vue/Solid,适合需要多框架统一行为的设计系统
  • SaaS 产品:简洁现代的风格适合各类 SaaS 产品
  • 组件灵活组合的项目:组合式 API 提供最大的灵活性,适合需要深度定制组件结构的场景
  • 现代 CSS 技术栈:使用级联层、CSS 变量等现代特性,适合新项目
  • 设计驱动的开发:Design Token + Panda CSS 类型安全样式,设计到代码一致性好

开发与工程化

开发流程

# 创建新项目
npm create vite@latest my-chakra-app -- --template react-ts
cd my-chakra-app
 
# 安装 Chakra UI v3
npm install @chakra-ui/react @ark-ui/react
 
# 安装 Panda CSS(样式引擎)
npm install -D @pandacss/dev
npx panda init
 
# 开发
npm run dev
 
# 构建(Panda CSS 在构建时生成 CSS)
npm run build

Panda CSS 配置

// panda.config.ts
import { defineConfig } from '@pandacss/dev';
 
export default defineConfig({
  preflight: true,
  include: ['./src/**/*.{ts,tsx}'],
  exclude: [],
  theme: {
    extend: {
      tokens: {
        colors: {
          brand: {
            50: { value: '#e6f2ff' },
            500: { value: '#0066cc' },
          },
        },
      },
    },
  },
  outdir: 'styled-system',
});

CLI 工具

# 使用 Chakra CLI 添加组件代码片段
npx @chakra-ui/cli snippet add Dialog
npx @chakra-ui/cli snippet add Accordion
npx @chakra-ui/cli snippet add DataTable

CI/CD 集成

name: CI
on: [push, pull_request]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm ci
      - run: npx panda codegen  # 生成 Panda CSS 类型
      - run: npm run typecheck
      - run: npm run lint
      - run: npm run build

性能与安全

性能特点

  • 零运行时 CSS:Panda CSS 在构建时生成所有 CSS,运行时不需要 JS 计算样式
  • 级联层优化:使用 CSS Cascade Layers 管理样式优先级,避免 !important 滥用
  • :where 选择器:降低样式特异性,让覆盖更简单
  • CSS 变量:主题令牌编译为 CSS 变量,主题切换无需重新计算样式
  • Tree Shaking:完全支持 ES Module Tree Shaking

性能优化建议

// 1. 使用语义化令牌而非直接值
// ✅
<Box bg="bg.surface" color="text.primary" />
 
// ❌ 避免硬编码值
<Box bg="#ffffff" color="#1a1a1a" />
 
// 2. 利用组合式 API 避免不必要的重渲染
<Dialog.Root open={isOpen} onOpenChange={setIsOpen}>
  {/* 子组件不会被父组件状态变化影响 */}
  <Dialog.Content>
    <Dialog.Header>标题</Dialog.Header>
    <Dialog.Body>内容</Dialog.Body>
  </Dialog.Content>
</Dialog.Root>
 
// 3. 使用 css 的 :where 特性减少样式冲突
// Panda CSS 默认使用 :where 降低特异性

安全注意事项

  • XSS 防护:Chakra 组件默认转义文本,避免 dangerouslySetInnerHTML
  • CSP 兼容:构建时 CSS 方案天然兼容严格的 Content Security Policy
  • 依赖审计:定期更新 @ark-ui/react@zag-js/* 依赖

已知性能瓶颈

  • 首次组件渲染:v3 初期版本曾有渲染性能争议(GitHub Discussion #9600),后续版本持续优化
  • Panda CSS 构建时间:大型项目的 Panda CSS codegen 可能增加构建时间
  • 组合式 API 组件数量:复杂组件需要多个子组件包裹,增加 JSX 复杂度

技术对比

特性Chakra UI v3Ant Design v6MUI v9Mantine v9
架构Ark UI + Panda CSSCSS-in-JS 内置Emotion CSS-in-JSCSS Modules
运行时开销零(构建时生成)有(内置引擎)有(Emotion)零(CSS Modules)
API 风格组合式 API传统 propssx prop + styled传统 props
跨框架React/Vue/Solid仅 React仅 React仅 React
无障碍WAI-ARIA 严格WAI-ARIA 支持WAI-ARIA 支持WAI-ARIA 支持
类型安全样式Panda CSS 类型推导Design Token 类型sx prop 类型CSS 变量类型
暗色模式next-themes内置算法内置内置
CLI 工具snippet 命令Ant Design CLI
Headless 方案Ark UI(独立可用)@mui/base
Pro 组件Park UI(模板)ProComponentsData Grid(付费)社区模板
适合场景可访问性优先项目中后台系统Material Design通用 Web
Bundle Size较小中等较大中等

选型建议

  • 选 Chakra UI:重视无障碍、需要零运行时、跨框架设计系统、现代 CSS 技术栈
  • 选 Ant Design:中后台系统、需要 ProComponents、中文市场
  • 选 MUI:Material Design、国际市场、需要 Data Grid
  • 选 Mantine:丰富 hooks、轻量灵活、日程调度

最佳实践

生产环境建议

  1. 使用语义化令牌:始终使用 bg.surfacetext.primary 等语义令牌而非硬编码颜色值
  2. 组合式组件结构:遵循 Root + 子组件模式,不要尝试用 props 控制内部结构
  3. Panda CSS 配置优化:合理配置 includeexclude 减少构建时间
  4. 主题分模块管理
// tokens/colors.ts
export const colors = {
  brand: {
    50: { value: '#e6f2ff' },
    500: { value: '#0066cc' },
    900: { value: '#001a33' },
  },
};
 
// tokens/fonts.ts
export const fonts = {
  heading: { value: '"Inter", sans-serif' },
  body: { value: '"Inter", sans-serif' },
};
 
// panda.config.ts
import { colors } from './tokens/colors';
import { fonts } from './tokens/fonts';
 
export default defineConfig({
  theme: {
    extend: { tokens: { colors, fonts } },
  },
});

常见陷阱

// ❌ 错误:使用 v2 风格的 API
<Accordion defaultIndex={[0]} allowMultiple>
  <AccordionItem>
    <AccordionButton>标题</AccordionButton>
    <AccordionPanel>内容</AccordionPanel>
  </AccordionItem>
</Accordion>
 
// ✅ 正确:使用 v3 组合式 API
<Accordion.Root defaultValue={['item-1']}>
  <Accordion.Item value="item-1">
    <Accordion.ItemTrigger>标题</Accordion.ItemTrigger>
    <Accordion.ItemContent>
      <Accordion.ItemBody>内容</Accordion.ItemBody>
    </Accordion.ItemContent>
  </Accordion.Item>
</Accordion.Root>
// ❌ 错误:使用 is 前缀(v2 风格)
<Dialog isOpen={isOpen} onClose={onClose}>
 
// ✅ 正确:v3 语义化命名
<Dialog.Root open={isOpen} onOpenChange={setOpen}>

推荐模式

// 表单模式
import { Field, Input, Button, Stack } from '@chakra-ui/react';
 
function LoginForm() {
  return (
    <form onSubmit={handleSubmit}>
      <Stack gap={4} maxW="400px">
        <Field.Root>
          <Field.Label>邮箱</Field.Label>
          <Input type="email" placeholder="请输入邮箱" />
          <Field.HelperText>我们不会分享你的邮箱</Field.HelperText>
        </Field.Root>
        <Field.Root>
          <Field.Label>密码</Field.Label>
          <Input type="password" placeholder="请输入密码" />
        </Field.Root>
        <Button colorPalette="blue" type="submit" size="lg">
          登录
        </Button>
      </Stack>
    </form>
  );
}

技术局限与边界

已知限制

  1. v3 迁移成本大:从 v2 到 v3 是架构级变更,API 几乎全部重写,需要大量改动
  2. 社区规模较小:相比 Ant Design(98k Stars)和 MUI(98k Stars),Chakra UI 社区规模偏小
  3. 无内置中后台组件:没有类似 ProComponents 的高级业务组件,复杂表格/表单需自行构建
  4. Panda CSS 学习成本:新开发者需要同时学习 Chakra API + Panda CSS + Ark UI
  5. 暗色模式需外部方案:v3 移除了内置颜色模式,需要配合 next-themes 等工具
  6. 部分组件首次渲染性能:复杂组件(如 DataTable)初始渲染可能不如纯 CSS 方案快
  7. 文档覆盖不完整:v3 的部分高级用法和社区示例还不够完善

迁移注意事项(v2 → v3)

  1. 安装迁移工具:npm install -D @chakra-ui/codemod
  2. 运行自动转换(50+ 变换规则):npx @chakra-ui/codemod
  3. 关键变更:
    • colorSchemecolorPalette
    • isOpenopenonCloseonOpenChange
    • 移除 framer-motion,使用 Presence 组件
    • 移除内置颜色模式,使用 next-themes
    • 组件 API 全面改为组合式(Compound)
    • 样式从 Emotion 迁移到 Panda CSS
    • 透明色使用 CSS color-mix 替代 JS 计算

学习资源

官方文档

教程

社区资源

2026 年现状

最新版本

  • Chakra UI v3.35.0(2026 年 4 月 22 日):CLI 改进,组件持续优化
  • Ark UI v5.37.0(2026 年 5 月):Headless 组件持续迭代
  • Panda CSS v2.x:构建时 CSS 引擎持续演进
  • Park UI:2025 年 11 月正式加入 Chakra 组织

发展趋势

  1. Ark UI 生态扩大:Ark UI 作为独立的 headless 组件库,影响力持续扩大,支持更多框架
  2. Panda CSS v2 演进:社区反馈驱动的改进,更好的框架集成
  3. CLI 工具增强:组件代码片段快速添加,提升开发效率
  4. 跨框架统一:通过 Ark UI + Panda CSS 实现 React/Vue/Solid 统一体验
  5. 性能持续优化:解决社区反馈的渲染性能问题

社区活跃度

  • GitHub Stars:40,000+(2025 年 12 月庆祝 40k)
  • npm 周下载量:587,000+
  • 每周下载量:Ark UI 约 634,700+
  • 由 Segun Adebayo 主导开发,Vercel 赞助
  • 活跃的 Discord 社区

未来路线图

  • Panda CSS v2 稳定版发布
  • Ark UI 支持更多框架(Svelte 等)
  • Chakra UI Pro 商业产品持续完善
  • 性能优化:组件首次渲染性能改进
  • 更好的 Next.js App Router 集成
  • CLI 工具功能扩展