Magic UI
免费开源的 React 动画组件库,专为 SaaS 落地页和营销站设计,提供 150+ 可复制粘贴的动画组件,定位为 "shadcn/ui 的完美搭档"。
技术简介说明
Magic UI 是一个专注于动画效果的 React 组件库,由 Dillion Verma 创建。它提供 150+ 动画组件和特效,采用与 shadcn/ui 相同的复制粘贴模式分发,代码直接进入你的项目,无 npm 运行时依赖。
Magic UI 的核心定位是"shadcn/ui 的装饰层"。shadcn/ui 提供基础应用 UI(表单、表格、对话框、导航),而 Magic UI 专注于动画和视觉特效(粒子、光束、地球仪、文字动画)。两者结合可以快速构建专业级的营销页面和落地页。
截至 2026 年 7 月,Magic UI 拥有 21,500+ GitHub Stars,1,000+ Forks,1,365 次提交。Pro 版本声称有 5,000+ 开发者使用。它是当前 React 生态中最大的动画组件库之一。
基本信息
- 官网:https://magicui.design
- GitHub:https://github.com/magicuidesign/magicui
- License:MIT License(开源)
- 最新版本:持续更新(非 npm 包,无传统版本号)
- 主要维护者:Dillion Verma(@dillionverma)
快速上手
安装
# 初始化(二选一)
npx shadcn@latest init # 方式一:通过 shadcn CLI(推荐)
npx magicui-cli@latest init # 方式二:通过 magicui CLI
# 添加组件(二选一)
npx shadcn@latest add @magicui/globe # 方式一
npx magicui-cli add globe # 方式二
基础配置
初始化后自动生成以下配置:
// components.json(自动生成)
{
"style": "default",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"css": "app/globals.css",
"baseColor": "neutral",
"cssVariables": true
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui"
}
}
// tailwind.config.js(自动注入 Magic UI 动画定义)
module.exports = {
theme: {
extend: {
animation: {
marquee: "marquee var(--duration) linear infinite",
"spin-slow": "spin 3s linear infinite",
},
keyframes: {
marquee: {
from: { transform: "translateX(0)" },
to: { transform: "translateX(calc(-100% - var(--gap)))" },
},
},
},
},
}
最小示例
"use client" // 动画组件必须添加 "use client"
import { Globe } from "@/components/ui/globe"
export default function LandingPage() {
return (
<div className="relative h-screen w-full">
<Globe />
<div className="absolute inset-0 flex items-center justify-center">
<h1 className="text-4xl font-bold text-white">
全球业务展示
</h1>
</div>
</div>
)
}
核心概念与架构
定位:shadcn/ui 的装饰层
| 层级 | 技术 | 职责 |
|---|
| 基础层 | shadcn/ui | 表单、表格、对话框、导航等应用 UI |
| 装饰层 | Magic UI | 动画、特效、视觉亮点 |
| 动画引擎 | Motion(原 Framer Motion) | 驱动所有动画效果 |
| 无障碍层 | Radix UI | 部分组件的可访问性原语 |
技术栈
| 技术 | 角色 | 说明 |
|---|
| React 18+ | 基础框架 | 核心运行时 |
| TypeScript | 类型安全 | 完整类型定义 |
| Tailwind CSS | 样式系统 | 工具类优先 |
| Motion | 动画引擎 | 核心动画库(~35KB gzipped) |
| Radix UI | 无障碍原语 | 部分组件的可访问性基础 |
| Cobe | WebGL 地球仪 | ~5KB 轻量 WebGL 库 |
| class-variance-authority | 变体管理 | 组件变体系统 |
| clsx + tailwind-merge | 工具函数 | cn() 合并类名 |
Copy-Paste 模式
浏览官网 → 选择组件 → 复制源码 → 粘贴到 components/ui/
- 代码直接进入你的项目
- 完全可定制,无版本锁定
- 无 npm 运行时依赖(除动画引擎外)
性能特征
| 指标 | 值 |
|---|
| 单个组件 bundle | <5KB(tree-shaking 后) |
| 共享 Motion 库 | ~35KB gzipped |
| Three.js 依赖 | ❌ 无(vs Aceternity UI 的 ~600KB) |
| Lighthouse 评分 | Performance: 81, Accessibility: 93, Best Practices: 96, SEO: 100 |
核心特性
- 150+ 动画组件:同类库中最多
- 签名级组件:Globe(WebGL 地球仪)、Marquee(无限滚动)、Bento Grid、Dock、Animated Beam、Border Beam、Particles、Confetti、Animated List
- 文字动画:Text Animate、Aurora Text、Number Ticker、Morphing Text 等 18 个组件
- 背景特效:Dot Pattern、Grid Pattern、Retro Grid、Noise Texture 等 11 个组件
- 设备模型:Safari、iPhone、Android 模型
- Canvas/WebGL 组件:Globe、Particles、Confetti、Meteors、Interactive Grid Pattern
- shadcn 原生集成:唯一共享 shadcn CLI 和注册系统的动画库
- MCP 支持:官方 MCP 服务器支持 AI 编辑器直接使用
- Pro 模板:$199 一次性获得 50+ 高级页面区块
生态图
核心组件
| 项目 | 说明 |
|---|
| Magic UI | 核心开源组件库(150+ 组件) |
| Magic UI Pro | 商业付费版本(50+ 页面区块、9+ 模板) |
| magicui-cli | 传统 CLI(已不活跃) |
| @magicuidesign/cli | 新版 CLI(v1.0.3,2025.4) |
| @magicuidesign/mcp | MCP 服务器(v2.0.0,2026.3) |
签名级组件
| 组件 | 描述 | 适用场景 |
|---|
| Globe 🌐 | WebGL 3D 自转地球(基于 Cobe) | 落地页、全球业务展示 |
| Marquee | 无限滚动文字/Logo | 推荐信、Logo 墙 |
| Bento Grid | 非对称网格布局 | 功能展示 |
| Dock | macOS 风格扩展 Dock | 导航栏 |
| Animated Beam | 动画 SVG 光束 | 数据流、连接展示 |
| Border Beam | 边框光效追踪 | 卡片高亮 |
| Particles | Canvas 粒子系统 | 背景、Hero 区 |
| Confetti | 彩纸庆祝爆炸 | 成功状态 |
| Animated List | 顺序揭示动画 | 通知、活动列表 |
2025-2026 新增组件
- Dotted Map — 点状地图可视化
- Glare Hover — 悬停眩光反射
- Animated Theme Toggler — 动画明暗切换
- Smooth Cursor — 物理平滑光标
- Progressive Blur — 滚动边缘模糊
- Light Rays — 动态光线束
- Noise Texture — 胶片噪点纹理
- Glyph Matrix — 最新主页推荐组件
适用场景
✅ 最适合的场景
| 场景 | 推荐度 | 说明 |
|---|
| SaaS 落地页/营销站 | ⭐⭐⭐⭐⭐ | 核心价值所在,最佳选择 |
| 开发者工具/技术文档站 | ⭐⭐⭐⭐⭐ | 完美适配 |
| 与 shadcn/ui 配合 | ⭐⭐⭐⭐⭐ | 天然搭档 |
| Portfolio/个人网站 | ⭐⭐⭐⭐ | 非常适合 |
| API 文档站 | ⭐⭐⭐⭐ | 技术产品展示 |
❌ 不太适合的场景
| 场景 | 推荐度 | 说明 |
|---|
| 后台/Dashboard | ⭐⭐ | 非设计目标,应用 UI 用 shadcn |
| 数据可视化 | ⭐ | 不适用,应选 Tremor |
| 多框架项目 | ❌ | 仅支持 React |
| 强无障碍要求 | ⭐⭐ | 无障碍支持不一致 |
开发与工程化
开发流程
- 使用
npx shadcn@latest init 初始化项目
- 通过
npx shadcn@latest add @magicui/<component> 按需添加组件
- 在组件中添加
"use client" 指令(动画组件必须)
- 按需调整动画参数和样式
构建部署
npm run build # 标准 Next.js 或 React 构建
Next.js App Router 兼容性
| 方面 | 状态 |
|---|
| Next.js App Router | ✅ 完全兼容 |
| React Server Components | ⚠️ 动画组件需 "use client" |
| 纯 CSS 动画组件 | ✅ 可在 Server Components 使用 |
MCP 集成
Magic UI 提供官方 MCP 服务器(@magicuidesign/mcp v2.0.0),允许 AI 编辑器(Claude Code、Cursor 等)直接搜索和安装组件。
性能与安全
性能特点
| 维度 | 说明 |
|---|
| Bundle Size | 极小,单组件 <5KB |
| Motion 库 | ~35KB gzipped(共享依赖) |
| Three.js | ❌ 无依赖(vs Aceternity 的 ~600KB) |
| Tree Shaking | 天然支持 |
| Canvas/WebGL | 部分组件使用,性能开销较大 |
优化建议
// ✅ 推荐:按需引入组件
import { Globe } from "@/components/ui/globe"
// ✅ 推荐:配合 prefers-reduced-motion
const prefersReducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)')
{!prefersReducedMotion && <AnimatedComponent />}
// ✅ 推荐:移动端降级
const isMobile = useIsMobile()
{!isMobile && <ComplexAnimation />}
// ❌ 避免:过度堆叠动画
// 一个页面使用过多动画组件会导致性能问题
可访问性注意事项
- 动画组件应尊重
prefers-reduced-motion
- 并非所有组件都提供键盘可访问性
- 避免自动播放的动画干扰用户
- Canvas/WebGL 组件注意性能影响
技术对比
Magic UI vs Aceternity UI
| 维度 | Magic UI | Aceternity UI |
|---|
| 组件数量 | 150+(最大广度) | 80+(更精调) |
| GitHub Stars | ~21.5k | ~28k |
| 动画风格 | 精致的微交互、光泽、光束 | 大胆、戏剧性视觉冲击 |
| 依赖 | 仅 Motion(~35KB) | Motion + Three.js(~600KB) |
| 主题 | 默认深色 SaaS 美学 | 颜色常硬编码,设计系统集成更难 |
| Bundle 体积 | 更轻 | 较重(Three.js) |
| 最佳场景 | 开发工具、API 文档、技术产品 | Hero 区、需要最大视觉冲击的落地页 |
社区共识:"要最大视觉冲击 → Aceternity;要更多选择和更小体积 → Magic UI"
Magic UI vs shadcn/ui — 互补关系
| 维度 | shadcn/ui | Magic UI |
|---|
| 定位 | 基础层 — 表单、对话框、表格、导航 | 装饰层 — 动画、特效、视觉亮点 |
| 组件数 | ~50+ 核心原语 | 150+ 动画特效 |
| 动画 | 极少(通过 Radix 做无障碍) | 重度(Motion 驱动) |
| 无障碍 | 优秀(Radix UI 原语 + reduced-motion) | 因组件而异,不够一致 |
| 项目角色 | 应用 Shell、仪表盘、表单 | 落地页、营销首页 |
常见模式:许多团队使用 shadcn/ui 构建应用 Shell + Magic UI 做公开首页
与其他库对比
| 库 | 与 Magic UI 的关系 |
|---|
| Vercel Geist UI | 极简设计系统,不是竞品。Geist 做功能应用,Magic UI 做视觉冲击 |
| Tremor | 完全不重叠。Tremor 做仪表盘/数据可视化,Magic UI 做动画 |
| Radix Themes | 互补。Magic UI 底层就用 Radix。Radix Themes 做应用 UI |
| ReactBits | 2025 年新兴竞品,API 更简洁 |
| Annnimate | 多框架(React + Vue + vanilla),GSAP 驱动,付费 €249/年 |
最佳实践
使用原则
- 按需使用,不要贪多:一个页面 2-3 个动画焦点即可
- shadcn 做基础,Magic UI 做亮点:组合使用效果最佳
- 性能优先:避免过度堆叠动画
- 移动端降级:部分复杂动画在移动端应简化或关闭
- 可访问性:注意
prefers-reduced-motion 媒体查询
- 深色主题优先:Magic UI 默认深色 SaaS 风格
- 不要硬编码颜色:使用 CSS 变量和 Tailwind 主题
代码组织
components/
├── ui/ # shadcn/ui + Magic UI 组件
├── sections/ # 页面区块组合
└── features/ # 业务功能组件
常见陷阱
- 忘记在动画组件中添加
"use client" 指令
- 一个页面使用过多动画导致性能问题
- 忽略
prefers-reduced-motion 可访问性需求
- 硬编码颜色值而不是使用 CSS 变量
- 期望所有组件都有完整的键盘可访问性
技术局限与边界
| 限制 | 说明 |
|---|
| 范围狭窄 | 无数据表格、表单、导航等应用 UI 模式 |
| 无障碍不一致 | reduced-motion 支持因组件而异,并非所有组件都键盘可访问 |
| 性能隐忧 | 重度动画可能导致 CPU/GPU 负载 |
| 仅 React | 不支持 Vue、Svelte 或原生 Web |
| 深色主题偏好 | 默认美学偏深色 SaaS 风格,适配其他品牌需额外工作 |
| Motion 库限制 | 复杂滚动序列和时间线管理较困难 |
| 无 Figma 文件 | Pro 版不含设计文件 |
| "形式大于实质" | 部分开发者认为动画可能掩盖实际信息 |
不太适合的场景
- 需要完整应用 UI 的项目(使用 shadcn/ui)
- 数据密集型应用(使用 Tremor)
- 多框架项目(仅支持 React)
- 强无障碍合规要求(无障碍支持不一致)
- 亮色主题为主的项目(需要额外调整)
学习资源
官方资源
社区资源
知名用户
| 公司 | 背景 |
|---|
| anara.com | YC S24 |
| infisical.com | YC W23,融资 $2.8M |
| langfuse.com | YC W23,融资 $4M |
| million.dev | YC W24 |
| cognosys.ai | Google Ventures 投资,融资 $2M |
2026 年现状
最新版本
| 指标 | 值 |
|---|
| GitHub Stars | 21,500+ |
| Forks | 1,000+ |
| Commits | 1,365 |
| Watchers | 42 |
| Open Issues | 0 |
| License | MIT |
定价模型
| 层级 | 价格 | 包含内容 |
|---|
| 免费版 | $0 | 150+ 动画组件,MIT 许可,社区支持 |
| Pro 版 | $199 一次性 | 50+ 页面区块、9+ 网站模板、终身更新、商用许可 |
Pro 内容明细:
- 9 种 Pricing 区块变体
- 完整落地页区块:Header、Hero、Social Proof、Feature(Scroll/Slideshow/Cards)、Pricing、CTA、FAQ、Footer
- 7 套完整模板:SaaS、Mobile App、Dev Tool、AI Agent、Startup、Portfolio、Codeforge
发展趋势
- 持续新增组件:Dotted Map、Glare Hover、Smooth Cursor、Progressive Blur、Light Rays、Noise Texture、Glyph Matrix 等
- AI 工具集成:MCP 服务器支持 AI 编辑器直接使用
- shadcn 生态深化:唯一共享 shadcn CLI 和注册系统的动画库
- Pro 版本扩展:更多页面区块和模板
社区活跃度
- 21,500+ GitHub Stars
- 1,000+ Forks
- 活跃的 Discord 社区
- 164 篇技术博客
- 5,000+ Pro 开发者用户
社区评价
正面:
"Best fancy UI library for bad designing developer" — r/godot
负面(Hacker News):
"What the fuck did you do to my CPU" — 对展示站性能的评价
"Just visual noise" — 对组件实用性的质疑
"A collection of one-off Dribbble designs" — 对系统性的质疑
未来路线图
- 持续扩展动画组件库
- 改进可访问性支持
- 优化性能
- 扩展 Pro 模板库