Overview
Uniwind provides built-in platform selectors that allow you to apply styles conditionally based on the platform your app is running on. This is essential for creating platform-specific user experiences in React Native.Platform selectors are resolved at runtime and automatically apply the correct styles for the current platform.
Basic Usage
Use platform selectors directly in yourclassName prop with the syntax platform:utility:
Why Use Platform Selectors?
Platform selectors are superior to React Native’sPlatform.select() API for several reasons:
❌ Not Recommended: Platform.select()
- Requires importing
PlatformAPI - More verbose syntax
- Cannot combine with other utilities easily
- Less readable when multiple platform conditions are needed
✅ Recommended: Platform Selectors
- Clean, declarative syntax
- No extra imports needed
- Easy to combine with other Tailwind utilities
- Better readability and maintainability
- Works seamlessly with theme variants
Supported Platforms
Targets iOS devices (iPhone, iPad). Styles are applied only when running on iOS.
Targets Android devices. Styles are applied only when running on Android.
Targets web browsers. Styles are applied only when running in a web environment (e.g., React Native Web).
Targets both iOS and Android platforms. Styles are applied on mobile platforms but not on web. This is a convenient shorthand when you want to apply the same styles to both iOS and Android.
Native Selector
Thenative: selector is a convenient shorthand for targeting both iOS and Android platforms simultaneously. Instead of writing duplicate styles for both platforms, you can use native: to apply styles to all mobile platforms at once.
❌ Verbose: Duplicate platform styles
✅ Concise: Using native: selector
Examples
Platform-Specific Colors
Platform-Specific Spacing
Platform Media Queries in @theme
While platform selectors likeios:, android:, native:, and web: are great for component-level styling, Uniwind also supports platform-specific media queries within the @theme directive. This allows you to define platform-specific design tokens and CSS variables that affect your entire theme.
Platform media queries in
@theme are processed at build time and define global theme values, while platform selectors are resolved at runtime for component-specific styles.Theme Configuration
Use@media queries inside @theme to define platform-specific CSS variables in your global.css:
When to Use Each Approach
Understanding when to use platform selectors vs platform media queries helps you build better cross-platform apps:Platform Selectors (ios:, android:, native:, web:)
Platform Selectors (ios:, android:, native:, web:)
Use for component-specific styling
- High flexibility - mix and match on any component
- Best for: Different padding, colors, or layouts for specific UI elements
- Use
native:for shared mobile styles
Platform Media Queries in @theme
Platform Media Queries in @theme
Use for global theme configuration
- Affects entire design system
- Best for: Platform-specific fonts, spacing scales, or brand colors
Platform-Specific Typography
One of the most common use cases is defining platform-appropriate font families:Platform-Specific Spacing
Adjust spacing scales to match platform design guidelines:Combining with Theme Variants
Platform media queries work seamlessly with theme variants likedark: