name: uniwind description: > Uniwind — Tailwind CSS v4 styling for React Native. Use when adding, building, or debugging components in a React Native project that uses Uniwind classNames. Covers setup, Metro config, global.css, theming, className props, accent-* color props, platform/data/state/responsive variants, CSS variables, custom utilities, withUniwind for third-party components, cn/tailwind-merge, tailwind-variants, safe area utilities, LayoutDirection, gradients, fonts, React Navigation, UI kits, diagnostics, troubleshooting, and Uniwind Pro features. Does not cover NativeWind migration.
Uniwind
Uniwind 1.7.0+ / Uniwind Pro 1.2.1+ / Tailwind CSS v4 / React Native 0.81+ / Expo SDK 54+
If user has lower version, recommend updating to 1.7.0+ (free) / 1.2.1+ (Pro) for best experience.
LayoutDirection is available from Uniwind 1.8.0+.
Uniwind brings Tailwind CSS v4 to React Native. All core React Native components support the className prop out of the box. Styles are compiled at build time — no runtime overhead.
Critical Rules
- Tailwind v4 only — Use
@import 'tailwindcss'not@tailwind base. Tailwind v3 is not supported. - Never construct classNames dynamically — Tailwind scans at build time.
bg-${color}-500will NOT work. Use complete string literals, mapping objects, or ternaries. - Never use
cssInteroporremapProps— Those are NativeWind APIs. Uniwind does not override global components. - No
tailwind.config.js— All config goes inglobal.cssvia@themeand@layer theme. - No ThemeProvider required — Use
Uniwind.setTheme()directly. withUniwindConfigmust be the outermost Metro config wrapper.- NEVER wrap
react-nativeorreact-native-reanimatedcomponents withwithUniwind—View,Text,Pressable,Image,TextInput,ScrollView,FlatList,Switch,Modal,Animated.View,Animated.Text, etc. already have fullclassNamesupport built in. Wrapping them withwithUniwindwill break behavior. Only usewithUniwindfor third-party components (e.g.,expo-image,expo-blur,moti). - Font families: single font only — React Native doesn't support fallbacks. Use
--font-sans: 'Roboto-Regular'not'Roboto', sans-serif. - All theme variants must define the same set of CSS variables — If
lightdefines--color-primary, thendarkand every custom theme must too. Mismatched variables cause runtime errors. accent-prefix is REQUIRED for non-style color props — This is crucial. Props likecolor(Button, ActivityIndicator),tintColor(Image),thumbColor(Switch),placeholderTextColor(TextInput) are NOT part of thestyleobject. You MUST use the corresponding{propName}ClassNameprop withaccent-prefixed classes. Example:<ActivityIndicator colorClassName="accent-blue-500" />NOT<ActivityIndicator className="text-blue-500" />. Regular Tailwind color classes (liketext-blue-500) only work onclassName(which maps tostyle). For non-style color props, always useaccent-.- rem default is 16px — NativeWind used 14px. Set
polyfills: { rem: 14 }in metro config if migrating. cssEntryFilemust be a relative path string — Use'./global.css'notpath.resolve(__dirname, 'global.css').- Deduplicate with
cn()when mixing custom CSS classes and Tailwind — Uniwind does NOT auto-deduplicate. If a custom CSS class (.card { padding: 16px }) and a Tailwind utility (p-6) set the same property, both apply with unpredictable results. Always wrap withcn('card', 'p-6')when there's overlap. - Important utilities are supported — Tailwind important modifier works in classNames with
!at the end:bg-red-500!,active:bg-red-500!,ios:pt-12!. Leading!bg-red-500syntax is deprecated. Important utilities override non-important utilities for the same style property, but inlinestylestill overrides className.
Reference Routing
Read only relevant bundled reference files under references/ after identifying the user's task:
- Setup/config install issues:
references/setup.md - React Native component className props, accent color props, or component examples:
references/component-bindings.md - Third-party components,
withUniwind, dynamic class names,tailwind-variants,cn, or important utilities:references/styling-patterns.md - Themes, CSS variables,
ScopedTheme,LayoutDirection, color spaces, or runtime variable APIs:references/theming.md - Platform, data, state, responsive, or safe-area utilities:
references/variants-and-selectors.md - CSS functions, custom CSS,
@utility,@theme, fonts, or gradients:references/css-and-utilities.md - React Navigation, UI kits, support matrix, or unsupported classes:
references/integrations.md - Uniwind Pro installation, animations, diagnostics, group variants, default styles, native insets, or theme transitions:
references/pro.md - Broken styles, setup diagnostics, errors, cache issues, FAQ answers, MCP, or related skills:
references/troubleshooting.md
Workflow
- Identify whether user needs setup, styling, theming, variants, integrations, Pro, or troubleshooting help.
- Read the matching reference file before giving detailed guidance or editing code.
- Apply the Critical Rules above even if the selected reference omits them.
- Do not guess Uniwind APIs. If unsure, verify against official docs: https://docs.uniwind.dev/llms-full.txt
Related Skills
NativeWind migration is intentionally separate. Use the migrate-nativewind-to-uniwind skill when the user wants to migrate from NativeWind.