expo-native-ui
Build native-feeling Expo screens: Apple HIG styling, semantic colors, native controls, SF Symbols, media, visual effects, gradients and responsive layout.
Install
npx skills add https://github.com/expo/skills --skill expo-native-uiNative Controls
Native iOS controls provide built-in haptics, accessibility, and platform-appropriate styling.
Prefer
@expo/uifor these controls. ItsSlider,Switch,DateTimePicker,Menu, and segmented pickers render as real SwiftUI / Jetpack Compose and follow platform design conventions automatically — recommended over the React Native controls below. See theexpo-uiskill; use the React Native controls below as a fallback when you're not using@expo/ui.
Switch
Use for binary on/off settings. Has built-in haptics.
Don't recolor the Switch — native styling adapts to dark mode automatically.
Segmented Control
Use for non-navigational tabs or mode selection. Avoid changing default colors.
Rules
- Maximum 4 options — use a picker for more
- Keep labels short (1-2 words)
- Avoid custom colors — native styling adapts to dark mode
With Icons (iOS 14+)
Slider
Continuous value selection.
Discrete Steps
Date/Time Picker
Compact pickers with popovers. Has built-in haptics.
Modes
date— Date onlytime— Time onlydatetime— Date and time
Display Styles
Time Intervals
Min/Max Dates
TextInput
Native text input with various keyboard types.
Keyboard Types
Multiline
Picker (Wheel)
For selection from many options (5+ items).
Best Practices
- Haptics: Switch and DateTimePicker have built-in haptics — don't add extra
- No native Stepper: React Native has no
Steppercomponent — compose increment/decrement from two Buttons or a numeric TextInput - Accessibility: Native controls have proper accessibility labels by default
- Dark Mode: Avoid custom colors — native styling adapts automatically
- Spacing: Use consistent padding around controls (12-16pt)
- Labels: Place labels above or to the left of controls
- Grouping: Group related controls in sections with headers