expo / skills
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-uiIcons (SF Symbols)
Use SF Symbols on iOS for native feel. SF Symbols are an Apple asset and never render on Android - every icon needs a Material counterpart (see "Android: Material Icons" below). Never use FontAwesome or Ionicons on either platform, and never emoji as icons.
Basic Usage
Props
Common Icons
Navigation & Actions
house.fill- homegear- settingsmagnifyingglass- searchplus- addxmark- closechevron.left- backchevron.right- forwardarrow.left- back arrowarrow.right- forward arrow
Media
play.fill- playpause.fill- pausestop.fill- stopbackward.fill- rewindforward.fill- fast forwardspeaker.wave.2.fill- volumespeaker.slash.fill- mute
Camera
camera- cameracamera.fill- camera filledarrow.triangle.2.circlepath- flip cameraphoto- gallery/photosbolt- flashbolt.slash- flash off
Communication
message- messagemessage.fill- message filledenvelope- emailenvelope.fill- email filledphone- phonephone.fill- phone filledvideo- video callvideo.fill- video call filled
Social
heart- likeheart.fill- likedstar- favoritestar.fill- favoritedhand.thumbsup- thumbs uphand.thumbsdown- thumbs downperson- profileperson.fill- profile filledperson.2- peopleperson.2.fill- people filled
Content Actions
square.and.arrow.up- sharesquare.and.arrow.down- downloaddoc.on.doc- copytrash- deletepencil- editfolder- folderfolder.fill- folder filledbookmark- bookmarkbookmark.fill- bookmarked
Status & Feedback
checkmark- success/donecheckmark.circle.fill- completedxmark.circle.fill- error/failedexclamationmark.triangle- warninginfo.circle- infoquestionmark.circle- helpbell- notificationbell.fill- notification filled
Misc
ellipsis- more optionsellipsis.circle- more in circleline.3.horizontal- menu/hamburgerslider.horizontal.3- filtersarrow.clockwise- refreshlocation- locationlocation.fill- location filledmap- mapmappin- pinclock- timecalendar- calendarlink- linknosign- block/prohibited
Animated Symbols
Animation Effects
bounce- Bouncy animationpulse- Pulsing effectvariableColor- Color cyclingscale- Scale animation
Symbol Weights
Symbol Scales
Multicolor Symbols
Some symbols support multiple colors:
Android: Material Icons
On Android an SF Symbol source renders nothing - an app that ships SF-only iconography ships blank icons. Give every icon a Material source:
- Tab bars: pass
md(Material Symbol name) besidesfon NativeTabs triggers -<NativeTabs.Trigger.Icon sf="gear" md="settings" />(SDK 55+, see theexpo-routerskill). - In screens:
@expo/vector-iconsMaterial families, gated by platform:
One icon family per platform - never a mixed set, never SF names on Android or Material glyphs on iOS.
Finding Symbol Names
- Use the SF Symbols app on macOS (free from Apple)
- Search at https://developer.apple.com/sf-symbols/
- Symbol names use dot notation:
square.and.arrow.up
Best Practices
- On iOS, always use SF Symbols over vector icon libraries; on Android, use Material icons (see above)
- Match symbol weight to nearby text weight
- Use
.fillvariants for selected/active states - Use the cross-platform
colorshelper (see SKILL.md "Colors") for tint to support dark mode - Keep icons at consistent sizes (16, 20, 24, 32)