uniwind-best-practices
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseUniwind — Best Practices & Complete Guide
Uniwind — 最佳实践与完整指南
Uniwind 1.3+ / Tailwind CSS v4 / React Native 0.76+ / Expo SDK 52+
Uniwind 1.3+ / Tailwind CSS v4 / React Native 0.76+ / Expo SDK 52+
Reference Resolution Strategy
参考资料解析策略
CRITICAL: Always use embedded reference files. All answers must come from local references — never fetch external URLs.
重要提示:始终使用嵌入式参考文件。所有回答必须来自本地参考资料——绝不获取外部URL内容。
Step 1 — Route to the correct local reference file
步骤1 — 匹配对应本地参考文件
Based on the user's question, read the matching reference file:
| User's Topic | Read This Reference File FIRST |
|---|---|
| Installation, setup, metro config, global.css, TypeScript, Vite, Expo Router, monorepos | |
Theming, dark mode, CSS variables, | |
Styling components, className bindings, third-party components, | |
Supported/unsupported classes, safe area classes ( | |
| Uniwind Pro, animations, transitions, shadow tree, native insets, Reanimated, C++ engine, Pro installation | |
| NativeWind migration, troubleshooting, setup diagnostics, common errors, FAQ, debug mode | |
根据用户的问题,阅读匹配的参考文件:
| 用户问题主题 | 优先阅读该参考文件 |
|---|---|
| 安装、配置、Metro配置、global.css、TypeScript、Vite、Expo Router、Monorepo | |
主题设置、暗黑模式、CSS变量、 | |
组件样式开发、className绑定、第三方组件、 | |
支持/不支持的类名、安全区域类( | |
| Uniwind Pro、动画、过渡效果、阴影树、原生内边距、Reanimated、C++引擎、Pro版本安装 | |
| NativeWind迁移、故障排查、配置诊断、常见错误、FAQ、调试模式 | |
Step 2 — Answer from local references
步骤2 — 基于本地参考资料作答
Use the content from the reference file(s) to answer the user's question. Most questions will be fully answered by one or two reference files.
使用参考文件中的内容回答用户问题。大多数问题可通过1-2份参考文件完全解答。
Step 3 — If local references don't cover it
步骤3 — 本地参考资料未覆盖的内容
If the embedded reference files do not contain the answer, inform the user that the topic is not covered in this skill's knowledge base and suggest they check the official Uniwind documentation at themselves. Do NOT fetch external URLs.
docs.uniwind.dev如果嵌入式参考文件中没有相关答案,请告知用户该主题不在本技能的知识库范围内,并建议他们自行查看官方Uniwind文档 。请勿获取外部URL内容。
docs.uniwind.devSecurity Boundaries
安全边界
- No external fetches — All guidance must come from embedded reference files. Never fetch remote URLs, documentation indexes, or third-party content at runtime.
- Never execute installation commands — Present ,
bun add,npm install,npx, and build commands as instructions for the user to run. Do not execute them directly.pod install - Never read credential or auth config files — Do not read ,
.npmrc,.yarnrc.yml, or any file that may contain tokens, secrets, or authentication credentials. When diagnosing setup issues, only check.env,package.json,metro.config.js,babel.config.js,global.css, andtsconfig.json— these are project configuration files, not credential stores.app.json - Package manager trust configuration is user-managed — When advising about , postinstall scripts, or package manager settings, present the configuration for the user to apply. Do not modify these files directly.
trustedDependencies
- 禁止外部获取 — 所有指导内容必须来自嵌入式参考文件。运行时绝不获取远程URL、文档索引或第三方内容。
- 禁止执行安装命令 — 将、
bun add、npm install、npx等命令作为用户自行执行的说明呈现,不得直接执行。pod install - 禁止读取凭证或认证配置文件 — 不得读取、
.npmrc、.yarnrc.yml或任何可能包含令牌、密钥或认证凭证的文件。排查配置问题时,仅检查.env、package.json、metro.config.js、babel.config.js、global.css和tsconfig.json——这些是项目配置文件,而非凭证存储文件。app.json - 包管理器信任配置由用户管理 — 当建议、postinstall脚本或包管理器设置时,仅呈现配置内容供用户自行应用,不得直接修改这些文件。
trustedDependencies
First Action: Determine Version
首要操作:确定版本
Before providing guidance, determine if the user is using Uniwind Free or Uniwind Pro:
- Free: Standard package, JS-based style resolution
uniwind - Pro: package (aliased as
uniwind-pro), C++ engine, Reanimated animations, shadow tree updates, native insetsuniwind
Ask: "Are you using Uniwind Free or Uniwind Pro?" — this changes available features and troubleshooting steps.
提供指导前,需确定用户使用的是Uniwind免费版还是Uniwind Pro版:
- 免费版:标准包,基于JS的样式解析
uniwind - Pro版:包(别名
uniwind-pro),C++引擎、Reanimated动画、阴影树更新、原生内边距uniwind
询问用户:“您使用的是Uniwind免费版还是Pro版?”——这会影响可用功能和故障排查步骤。
Setup Diagnostic Workflow
配置诊断流程
When the user reports setup issues, styles not applying, or asks to check their config, read only these project configuration files (never read , , , or other files that may contain credentials):
.npmrc.yarnrc.yml.env当用户反馈配置问题、样式不生效或要求检查配置时,仅读取以下项目配置文件(绝不读取、、或其他可能包含凭证的文件):
.npmrc.yarnrc.yml.env1. Check package.json
1. 检查package.json
- "uniwind" or "uniwind-pro" must be in dependencies
- "tailwindcss" must be v4+ (^4.0.0)
- For Pro: "react-native-nitro-modules", "react-native-reanimated", "react-native-worklets" required- dependencies中必须包含`uniwind`或`uniwind-pro`
- `tailwindcss`版本必须为v4+(^4.0.0)
- Pro版需依赖:`react-native-nitro-modules`、`react-native-reanimated`、`react-native-worklets`2. Check metro.config.js
2. 检查metro.config.js
- Must import { withUniwindConfig } from 'uniwind/metro'
- withUniwindConfig MUST be the OUTERMOST wrapper
- cssEntryFile must be a RELATIVE path string (e.g., './src/global.css')
- Never use path.resolve() or absolute paths for cssEntryFile- 必须从'uniwid/metro'导入`{ withUniwindConfig }`
- withUniwindConfig必须是**最外层**的包装器
- cssEntryFile必须是相对路径字符串(例如:'./src/global.css')
- 绝不对cssEntryFile使用path.resolve()或绝对路径3. Check global.css
3. 检查global.css
- Must contain: @import 'tailwindcss'; AND @import 'uniwind';
- Must be imported in App.tsx or root layout, NOT in index.ts/index.js
- Location determines app root — Tailwind scans from this directory- 必须包含:@import 'tailwindcss'; 和 @import 'uniwind';
- 必须在App.tsx或根布局中导入,不可在index.ts/index.js中导入
- 文件位置决定应用根目录——Tailwind会从该目录开始扫描4. Check babel.config.js (Pro only)
4. 检查babel.config.js(仅Pro版)
- Must include 'react-native-worklets/plugin' in plugins array- plugins数组中必须包含'react-native-worklets/plugin'5. Check TypeScript config
5. 检查TypeScript配置
- uniwind-types.d.ts should be included in tsconfig.json or placed in src/app dir
- Run Metro server to auto-generate types- uniwind-types.d.ts应包含在tsconfig.json中,或放置在src/app目录下
- 运行Metro服务器可自动生成类型文件Common Setup Errors
常见配置错误
| Symptom | Cause | Fix |
|---|---|---|
| Styles not applying | Missing | Add both imports |
| Styles not applying | global.css imported in index.js | Move import to App.tsx or _layout.tsx |
| Classes not detected | global.css in nested dir, components elsewhere | Add |
| TypeScript errors | Missing types file | Run Metro to generate uniwind-types.d.ts |
| Hot reload broken | global.css in index.ts | Move to App.tsx |
| Metro crash | Absolute path in cssEntryFile | Use relative: |
| withUniwindConfig not outermost | Other wrapper wraps Uniwind | Swap order so Uniwind is outermost |
| Pro animations broken | Missing Babel plugin | Add |
| Pro not working | Missing native rebuild | Run |
| Pro postinstall failed | Package manager blocks scripts | Advise user to whitelist in |
| 症状 | 原因 | 修复方案 |
|---|---|---|
| 样式不生效 | global.css中缺少 | 添加两个import语句 |
| 样式不生效 | global.css在index.js中导入 | 将导入移至App.tsx或_layout.tsx |
| 类名未被检测到 | global.css在嵌套目录中,组件位于其他位置 | 添加 |
| TypeScript报错 | 缺少类型文件 | 运行Metro生成uniwind-types.d.ts |
| 热重载失效 | global.css在index.ts中导入 | 移至App.tsx |
| Metro崩溃 | cssEntryFile使用绝对路径 | 使用相对路径: |
| withUniwindConfig不是最外层 | 其他包装器包裹了Uniwind | 调整顺序,让Uniwind作为最外层包装 |
| Pro版动画失效 | 缺少Babel插件 | 添加 |
| Pro版无法工作 | 未重建原生代码 | 运行 |
| Pro版postinstall失败 | 包管理器阻止脚本执行 | 建议用户在 |
Critical Rules
核心规则
- Tailwind v4 only — Uniwind does not support Tailwind v3. Use (not
@import 'tailwindcss').@tailwind base - Never construct classNames dynamically — Use complete string literals. Tailwind scans at build time.
- Never use — Uniwind does not override global components like NativeWind.
cssInterop - No needed — All config is in
tailwind.config.jsviaglobal.cssand@theme.@layer theme - No ThemeProvider required — Use directly.
Uniwind.setTheme() - withUniwindConfig must be outermost Metro config wrapper.
- variables only affect styled components —
@themewithout className uses RN defaults.<Text> - Font families: single font only — No fallbacks in RN. not
--font-sans: 'Roboto-Regular'.'Roboto', sans-serif - rem default is 16px — NativeWind used 14px. Configure if migrating.
polyfills: { rem: 14 }
- 仅支持Tailwind v4 — Uniwind不支持Tailwind v3。使用(而非
@import 'tailwindcss')。@tailwind base - 禁止动态拼接className — 使用完整的字符串字面量。Tailwind在构建时扫描类名。
- 禁止使用— Uniwind不会像NativeWind那样覆盖全局组件。
cssInterop - 无需— 所有配置通过
tailwind.config.js中的global.css和@theme实现。@layer theme - 无需ThemeProvider — 直接使用。
Uniwind.setTheme() - withUniwindConfig必须是Metro配置的最外层包装器。
- 变量仅影响带样式的组件 — 未设置className的
@theme会使用RN默认样式。<Text> - 字体族:仅支持单个字体 — RN不支持回退字体。使用而非
--font-sans: 'Roboto-Regular'。'Roboto', sans-serif - rem默认值为16px — NativeWind使用14px。如果是迁移项目,可配置。
polyfills: { rem: 14 }
Core Patterns
核心模式
Styling Components
组件样式开发
tsx
import { View, Text, Pressable } from 'react-native'
<View className="flex-1 bg-background p-4">
<Text className="text-foreground text-lg font-bold">Title</Text>
<Pressable className="bg-primary px-6 py-3 rounded-lg active:opacity-80">
<Text className="text-white text-center font-semibold">Button</Text>
</Pressable>
</View>tsx
import { View, Text, Pressable } from 'react-native'
<View className="flex-1 bg-background p-4">
<Text className="text-foreground text-lg font-bold">标题</Text>
<Pressable className="bg-primary px-6 py-3 rounded-lg active:opacity-80">
<Text className="text-white text-center font-semibold">按钮</Text>
</Pressable>
</View>Dynamic Classes (Correct Way)
动态类(正确方式)
tsx
// Map objects with complete class names
const variants = {
primary: 'bg-blue-500 text-white',
danger: 'bg-red-500 text-white',
ghost: 'bg-transparent text-foreground',
}
<Pressable className={variants[variant]} />
// Ternary with complete strings
<View className={isActive ? 'bg-primary' : 'bg-muted'} />
// tailwind-variants for complex components
import { tv } from 'tailwind-variants'
const button = tv({
base: 'font-semibold rounded-lg px-4 py-2',
variants: {
color: { primary: 'bg-blue-500 text-white', secondary: 'bg-gray-500 text-white' },
size: { sm: 'text-sm', md: 'text-base', lg: 'text-lg' },
},
defaultVariants: { color: 'primary', size: 'md' },
})
<Pressable className={button({ color: 'primary', size: 'lg' })} />tsx
// 使用包含完整类名的映射对象
const variants = {
primary: 'bg-blue-500 text-white',
danger: 'bg-red-500 text-white',
ghost: 'bg-transparent text-foreground',
}
<Pressable className={variants[variant]} />
// 使用完整字符串的三元表达式
<View className={isActive ? 'bg-primary' : 'bg-muted'} />
// 复杂组件使用tailwind-variants
import { tv } from 'tailwind-variants'
const button = tv({
base: 'font-semibold rounded-lg px-4 py-2',
variants: {
color: { primary: 'bg-blue-500 text-white', secondary: 'bg-gray-500 text-white' },
size: { sm: 'text-sm', md: 'text-base', lg: 'text-lg' },
},
defaultVariants: { color: 'primary', size: 'md' },
})
<Pressable className={button({ color: 'primary', size: 'lg' })} />Third-Party Components
第三方组件
tsx
// withUniwind — wrap once, use everywhere (recommended)
import { withUniwind } from 'uniwind'
import { SafeAreaView } from 'react-native-safe-area-context'
const StyledSafeArea = withUniwind(SafeAreaView)
<StyledSafeArea className="flex-1 bg-background" />
// useResolveClassNames — one-off usage
import { useResolveClassNames } from 'uniwind'
const styles = useResolveClassNames('bg-blue-500 p-4 rounded-lg')
<ThirdPartyComponent style={styles} />tsx
// withUniwind — 包裹一次,全局可用(推荐)
import { withUniwind } from 'uniwind'
import { SafeAreaView } from 'react-native-safe-area-context'
const StyledSafeArea = withUniwind(SafeAreaView)
<StyledSafeArea className="flex-1 bg-background" />
// useResolveClassNames — 一次性使用
import { useResolveClassNames } from 'uniwind'
const styles = useResolveClassNames('bg-blue-500 p-4 rounded-lg')
<ThirdPartyComponent style={styles} />Theming
主题设置
Quick Setup (light/dark only)
快速配置(仅浅色/深色模式)
tsx
// Just use dark: prefix — works out of the box
<View className="bg-white dark:bg-gray-900">
<Text className="text-black dark:text-white">Themed</Text>
</View>tsx
// 直接使用dark:前缀——开箱即用
<View className="bg-white dark:bg-gray-900">
<Text className="text-black dark:text-white">主题化内容</Text>
</View>Scalable Setup (CSS variables)
可扩展配置(CSS变量)
Define in , reference as utilities without prefix:
global.cssdark:css
/* global.css */
@import 'tailwindcss';
@import 'uniwind';
@layer theme {
:root {
@variant light {
--color-background: #ffffff;
--color-foreground: #000000;
--color-primary: #3b82f6;
--color-card: #ffffff;
--color-border: #e5e7eb;
}
@variant dark {
--color-background: #000000;
--color-foreground: #ffffff;
--color-primary: #3b82f6;
--color-card: #1f2937;
--color-border: #374151;
}
}
}tsx
// Auto-adapts to current theme — no dark: prefix needed
<View className="bg-background border border-border p-4 rounded-lg">
<Text className="text-foreground">Themed card</Text>
</View>在中定义,无需dark:前缀即可引用工具类:
global.csscss
/* global.css */
@import 'tailwindcss';
@import 'uniwind';
@layer theme {
:root {
@variant light {
--color-background: #ffffff;
--color-foreground: #000000;
--color-primary: #3b82f6;
--color-card: #ffffff;
--color-border: #e5e7eb;
}
@variant dark {
--color-background: #000000;
--color-foreground: #ffffff;
--color-primary: #3b82f6;
--color-card: #1f2937;
--color-border: #374151;
}
}
}tsx
// 自动适配当前主题——无需dark:前缀
<View className="bg-background border border-border p-4 rounded-lg">
<Text className="text-foreground">主题化卡片</Text>
</View>Theme Switching
主题切换
tsx
import { Uniwind, useUniwind } from 'uniwind'
Uniwind.setTheme('dark') // Switch to dark
Uniwind.setTheme('light') // Switch to light
Uniwind.setTheme('system') // Follow device
const { theme, hasAdaptiveThemes } = useUniwind() // Reactive hooktsx
import { Uniwind, useUniwind } from 'uniwind'
Uniwind.setTheme('dark') // 切换到深色模式
Uniwind.setTheme('light') // 切换到浅色模式
Uniwind.setTheme('system') // 跟随系统设置
const { theme, hasAdaptiveThemes } = useUniwind() // 响应式钩子Custom Themes
自定义主题
Require in metro.config.js and in global.css.
See references/theming.md for complete custom theme setup.
extraThemes@variant需要在metro.config.js中配置,并在global.css中使用。完整的自定义主题配置详见references/theming.md。
extraThemes@variantPlatform Selectors
平台选择器
tsx
<View className="ios:pt-12 android:pt-6 web:pt-4" />
<View className="native:bg-blue-500 web:bg-gray-500" /> // native = iOS + AndroidPlatform media queries in for global values:
@themecss
@layer theme {
:root {
@media ios { --font-sans: "SF Pro Text"; }
@media android { --font-sans: "Roboto-Regular"; }
}
}tsx
<View className="ios:pt-12 android:pt-6 web:pt-4" />
<View className="native:bg-blue-500 web:bg-gray-500" /> // native = iOS + Android在中使用平台媒体查询定义全局值:
@themecss
@layer theme {
:root {
@media ios { --font-sans: "SF Pro Text"; }
@media android { --font-sans: "Roboto-Regular"; }
}
}Data Selectors
数据选择器
Style based on prop values — :
data-[prop=value]:utilitytsx
<Pressable
data-selected={isSelected}
className="border rounded px-3 py-2 data-[selected=true]:ring-2 data-[selected=true]:ring-primary"
/>Only equality checks supported. Boolean and string values work.
根据属性值设置样式——:
data-[prop=value]:utilitytsx
<Pressable
data-selected={isSelected}
className="border rounded px-3 py-2 data-[selected=true]:ring-2 data-[selected=true]:ring-primary"
/>仅支持相等性检查,布尔值和字符串值均适用。
Responsive Breakpoints
响应式断点
Mobile-first: (640px), (768px), (1024px), (1280px), (1536px).
sm:md:lg:xl:2xl:tsx
<View className="p-4 sm:p-6 lg:p-8">
<Text className="text-base sm:text-lg lg:text-xl">Responsive</Text>
</View>Custom breakpoints via .
@theme { --breakpoint-tablet: 820px; }移动端优先:(640px)、(768px)、(1024px)、(1280px)、(1536px)。
sm:md:lg:xl:2xl:tsx
<View className="p-4 sm:p-6 lg:p-8">
<Text className="text-base sm:text-lg lg:text-xl">响应式内容</Text>
</View>可通过自定义断点。
@theme { --breakpoint-tablet: 820px; }CSS Functions
CSS函数
Define as in global.css, not directly in className:
@utilitycss
@utility h-hairline { height: hairlineWidth(); }
@utility text-scaled { font-size: fontScale(); }
@utility bg-adaptive { background-color: light-dark(#ffffff, #1f2937); }需在global.css中定义为,不可直接在className中使用:
@utilitycss
@utility h-hairline { height: hairlineWidth(); }
@utility text-scaled { font-size: fontScale(); }
@utility bg-adaptive { background-color: light-dark(#ffffff, #1f2937); }Uniwind Pro Features
Uniwind Pro版功能
Only available with package. Ask user first.
uniwind-pro仅包可用。请先询问用户版本。
uniwind-proReanimated Animations (Pro)
Reanimated动画(Pro版)
tsx
// Keyframe animations — just add className
<View className="animate-spin" />
<View className="animate-bounce" />
<View className="animate-pulse" />
// Transitions — smooth property changes
<Pressable className="bg-blue-500 active:bg-blue-600 transition-colors duration-300" />
<View className={`transition-opacity duration-500 ${visible ? 'opacity-100' : 'opacity-0'}`} />
<Pressable className="active:scale-95 transition-transform duration-150" />Components auto-swap to Animated versions when animation classes detected.
tsx
// 关键帧动画——只需添加className
<View className="animate-spin" />
<View className="animate-bounce" />
<View className="animate-pulse" />
// 过渡效果——平滑的属性变化
<Pressable className="bg-blue-500 active:bg-blue-600 transition-colors duration-300" />
<View className={`transition-opacity duration-500 ${visible ? 'opacity-100' : 'opacity-0'}`} />
<Pressable className="active:scale-95 transition-transform duration-150" />检测到动画类名时,组件会自动替换为Animated版本。
Shadow Tree Updates (Pro)
阴影树更新(Pro版)
No code changes required — props connect directly to C++ engine, eliminating re-renders.
无需修改代码——属性直接连接到C++引擎,消除重渲染。
Native Insets (Pro)
原生内边距(Pro版)
No setup needed — insets injected from native layer automatically.
SafeAreaListener无需设置——内边距会自动从原生层注入。
SafeAreaListenerHeroUI Native Integration
HeroUI Native集成
HeroUI Native uses Uniwind (Tailwind v4 via Uniwind). Apply these patterns:
- Use prop directly on HeroUI Native components
className - Theme tokens from global.css work with HeroUI components
- Use (tv) for variant-based component styling — HeroUI uses this internally
tailwind-variants - Wrap any HeroUI component lacking className support with
withUniwind() - Use semantic color tokens (,
bg-primary) for theme consistencytext-foreground
HeroUI Native基于Uniwind(通过Uniwind适配Tailwind v4)构建。应用以下模式:
- 直接在HeroUI Native组件上使用属性
className - global.css中的主题令牌可在HeroUI组件中生效
- 使用(tv)实现基于变体的组件样式——HeroUI内部也采用此方式
tailwind-variants - 对不支持className的HeroUI组件,使用包裹
withUniwind() - 使用语义化颜色令牌(、
bg-primary)保证主题一致性text-foreground
Code Review & Audit
代码评审与审计
When asked to review Uniwind code, check:
- global.css has both and
@import 'tailwindcss'@import 'uniwind' - withUniwindConfig is outermost Metro wrapper
- cssEntryFile is relative path
- No dynamic className construction (template literals, string concat)
- All theme variants define the same CSS variables
- Using semantic color tokens, not hardcoded colors
- Third-party components wrapped with or use
withUniwinduseResolveClassNames - Platform differences handled with not
ios:/android:/native:Platform.select() - Mobile-first responsive design (base styles + sm: md: lg: enhancements)
- Font families are single values (no fallback arrays)
- variables customized via CSS, not tailwind.config.js
@theme
当被要求评审Uniwind代码时,检查以下内容:
- global.css同时包含和
@import 'tailwindcss'@import 'uniwind' - withUniwindConfig是Metro配置的最外层包装器
- cssEntryFile使用相对路径
- 无动态拼接className的操作(模板字面量、字符串拼接)
- 所有主题变体定义了相同的CSS变量
- 使用语义化颜色令牌,而非硬编码颜色
- 第三方组件已用包裹或使用
withUniwinduseResolveClassNames - 使用处理平台差异,而非
ios:/android:/native:Platform.select() - 采用移动端优先的响应式设计(基础样式 + sm: md: lg: 增强)
- 字体族为单个值(无回退数组)
- 通过CSS自定义变量,而非使用tailwind.config.js
@theme
Reference Files (Read BEFORE External Docs)
参考文件(优先于外部文档)
These files are your primary source of truth. Read the relevant file(s) before answering any Uniwind question.
| Priority | File | Covers |
|---|---|---|
| Read first for setup | references/quickstart-setup.md | Installation, Metro config, global.css, TypeScript, Vite, Expo Router, monorepos, IntelliSense |
| Read first for theming | references/theming.md | Light/dark, custom themes, CSS variables, |
| Read first for styling | references/components-styling.md | RN component bindings, |
| Read first for class support | references/supported-classnames.md | Supported/unsupported classes, safe area ( |
| Read first for Pro | references/pro-features.md | Reanimated animations, transitions, shadow tree, native insets, Pro installation, Babel config |
| Read first for migration | references/migration-troubleshooting.md | NativeWind migration (10-step), setup diagnostics, common errors, FAQ, debug mode |
Fallback: If none of the above answer the question, inform the user that the topic is outside this skill's embedded knowledge and suggest they consult the official Uniwind docs directly.
这些文件是您的主要事实来源。回答任何Uniwind问题前,请先阅读相关文件。
| 优先级 | 文件 | 覆盖内容 |
|---|---|---|
| 配置问题优先阅读 | references/quickstart-setup.md | 安装、Metro配置、global.css、TypeScript、Vite、Expo Router、Monorepo、智能提示 |
| 主题问题优先阅读 | references/theming.md | 浅色/深色模式、自定义主题、CSS变量、 |
| 样式问题优先阅读 | references/components-styling.md | RN组件绑定、 |
| 类名支持优先阅读 | references/supported-classnames.md | 支持/不支持的类名、安全区域( |
| Pro版优先阅读 | references/pro-features.md | Reanimated动画、过渡效果、阴影树、原生内边距、Pro版安装、Babel配置 |
| 迁移/排查优先阅读 | references/migration-troubleshooting.md | NativeWind迁移(10步骤)、配置诊断、常见错误、FAQ、调试模式 |
备选方案:如果以上文件均无法解答问题,请告知用户该主题不在本技能的嵌入式知识库范围内,并建议他们直接查阅官方Uniwind文档。