
uniwind
热门Uniwind —— 专为 React Native 打造的 Tailwind CSS v4 样式解决方案。当在使用了 Uniwind classNames 的 React Native 项目中新建、构建或调试组件时使用此 Skill。内容涵盖项目配置、Metro 配置、global.css、主题化、className 属性、accent-* 颜色属性、平台/数据/状态/响应式变体、CSS 变量、自定义工具类、用于第三方组件的 withUniwind、cn/tailwind-merge、tailwind-variants、安全区域工具类、LayoutDirection、渐变、字体、React Navigation、UI 组件库、诊断、疑难解答以及 Uniwind Pro 特性。不包含从 NativeWind 迁移的相关内容。
Uniwind —— 专为 React Native 打造的 Tailwind CSS v4 样式解决方案。当在使用了 Uniwind classNames 的 React Native 项目中新建、构建或调试组件时使用此 Skill。内容涵盖项目配置、Metro 配置、global.css、主题化、className 属性、accent-* 颜色属性、平台/数据/状态/响应式变体、CSS 变量、自定义工具类、用于第三方组件的 withUniwind、cn/tailwind-merge、tailwind-variants、安全区域工具类、LayoutDirection、渐变、字体、React Navigation、UI 组件库、诊断、疑难解答以及 Uniwind Pro 特性。不包含从 NativeWind 迁移的相关内容。
Uniwind
Uniwind 1.7.0+ / Uniwind Pro 1.2.1+ / Tailwind CSS v4 / React Native 0.81+ / Expo SDK 54+
如果用户的版本较低,建议升级至 1.7.0+(免费版)/ 1.2.1+(Pro 版)以获得最佳体验。
LayoutDirection 仅在 Uniwind 1.8.0+ 及更高版本中可用。
Uniwind 为 React Native 带来 Tailwind CSS v4 体验。所有 React Native 核心组件开箱即用支持 className 属性。样式在构建阶段进行编译,零运行时开销。
关键规则(踩坑指南)
- 仅支持 Tailwind v4 — 请使用
@import 'tailwindcss',不要用@tailwind base。不支持 Tailwind v3。 - 严禁动态拼接 classNames — Tailwind 在构建阶段进行静态扫描。像
bg-${color}-500这种写法是无法生效的。请使用完整的字符串字面量、对象映射表或三元表达式。 - 切勿使用
cssInterop或remapProps— 这些是 NativeWind 的 API。Uniwind 不会改写全局基础组件。 - 无需
tailwind.config.js— 所有配置统一在global.css中通过@theme和@layer theme声明。 - 无需 ThemeProvider 包裹 — 直接使用
Uniwind.setTheme()即可。 withUniwindConfig必须放在 Metro 配置包裹层的最外层。- 绝对不要给
react-native或react-native-reanimated的组件套withUniwind— 如View、Text、Pressable、Image、TextInput、ScrollView、FlatList、Switch、Modal、Animated.View、Animated.Text等已内置完整的className支持。重复包裹withUniwind会破坏组件行为。withUniwind仅适用于第三方组件(如expo-image、expo-blur、moti)。 - 字体配置:仅支持单一字体 — React Native 不支持字体回退机制(fallback)。请使用
--font-sans: 'Roboto-Regular',而不能写成'Roboto', sans-serif。 - 所有主题变体必须定义完全一致的 CSS 变量集 — 如果
light主题定义了--color-primary,那么dark及每个自定义主题也必须定义该变量。变量不匹配会导致运行时报错。 - 非 style 类的颜色属性必须加
accent-前缀 — 这一点至关重要!像color(Button, ActivityIndicator)、tintColor(Image)、thumbColor(Switch)、placeholderTextColor(TextInput)这类属性都不属于style对象。你必须使用对应的{propName}ClassName属性并结合accent-前缀类名。例如:<ActivityIndicator colorClassName="accent-blue-500" />,不要写成<ActivityIndicator className="text-blue-500" />。常规的 Tailwind 颜色类(如text-blue-500)只对className(映射到style)生效。对于非 style 的颜色属性,务必使用accent-。 - rem 默认基准值为 16px — NativeWind 使用的是 14px。如果是从 NativeWind 迁移过来的,请在 Metro 配置中设置
polyfills: { rem: 14 }。 cssEntryFile必须是相对路径字符串 — 请使用'./global.css',不要用path.resolve(__dirname, 'global.css')。- 混合使用自定义 CSS 类与 Tailwind 时,务必用
cn()去重 — Uniwind 不会自动去重。如果自定义 CSS 类(如.card { padding: 16px })与 Tailwind 工具类(p-6)作用于同一属性,两者都会生效且顺序不可控。存在样式重叠时,务必使用cn('card', 'p-6')进行包裹去重。 - 支持 Important 修饰符 — Tailwind 的重要修饰符支持在 classNames 末尾加上
!,例如:bg-red-500!、active:bg-red-500!、ios:pt-12!。前置!bg-red-500语法已被废弃。Important 类的优先级高于同一样式属性的普通类,但内联style的优先级仍然高于 className。
参考路由(文档指南)
在明确用户的具体任务后,请仅阅读 references/ 目录下对应的参考文件:
- 环境搭建 / 配置安装问题:
references/setup.md - React Native 组件的 className 属性、accent 颜色属性或组件示例:
references/component-bindings.md - 第三方组件、
withUniwind、动态类名、tailwind-variants、cn或 important 修饰符:references/styling-patterns.md - 主题、CSS 变量、
ScopedTheme、LayoutDirection、色彩空间或运行时变量 API:references/theming.md - 平台、数据、状态、响应式或安全区域工具类:
references/variants-and-selectors.md - CSS 函数、自定义 CSS、
@utility、@theme、字体或渐变:references/css-and-utilities.md - React Navigation、UI 组件库、支持矩阵或不支持的类名:
references/integrations.md - Uniwind Pro 安装、动画、诊断、group 变体、默认样式、原生安全边距(native insets)或主题过渡:
references/pro.md - 样式失效、配置诊断、报错、缓存问题、FAQ、MCP 或相关 Skills:
references/troubleshooting.md
工作流
- 确认用户是需要环境搭建、样式编写、主题化、变体、集成、Pro 特性还是疑难解答方面的帮助。
- 在给出具体指导或修改代码前,先阅读对应的参考文件。
- 即使选定的参考文件未提及,也必须严格遵守上述【关键规则】。
- 切勿凭空猜测 Uniwind API。如果不确定,请查阅官方文档校验:https://docs.uniwind.dev/llms-full.txt
相关 Skill
从 NativeWind 迁移是独立拆分出来的。当用户想要从 NativeWind 迁移到 Uniwind 时,请使用 migrate-nativewind-to-uniwind Skill。





