Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Official Expo team skill for building native UI in Expo apps, fine-tuned for Opus models and usable with Claude Code or Cursor.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/icons.md
1# Icons (SF Symbols)23Use SF Symbols for native feel. Never use FontAwesome or Ionicons.45## Basic Usage67```tsx8import { SymbolView } from "expo-symbols";9import { PlatformColor } from "react-native";1011<SymbolView12tintColor={PlatformColor("label")}13resizeMode="scaleAspectFit"14name="square.and.arrow.down"15style={{ width: 16, height: 16 }}16/>;17```1819## Props2021```tsx22<SymbolView23name="star.fill" // SF Symbol name (required)24tintColor={PlatformColor("label")} // Icon color25size={24} // Shorthand for width/height26resizeMode="scaleAspectFit" // How to scale27weight="regular" // thin | ultraLight | light | regular | medium | semibold | bold | heavy | black28scale="medium" // small | medium | large29style={{ width: 16, height: 16 }} // Standard style props30/>31```3233## Common Icons3435### Navigation & Actions36- `house.fill` - home37- `gear` - settings38- `magnifyingglass` - search39- `plus` - add40- `xmark` - close41- `chevron.left` - back42- `chevron.right` - forward43- `arrow.left` - back arrow44- `arrow.right` - forward arrow4546### Media47- `play.fill` - play48- `pause.fill` - pause49- `stop.fill` - stop50- `backward.fill` - rewind51- `forward.fill` - fast forward52- `speaker.wave.2.fill` - volume53- `speaker.slash.fill` - mute5455### Camera56- `camera` - camera57- `camera.fill` - camera filled58- `arrow.triangle.2.circlepath` - flip camera59- `photo` - gallery/photos60- `bolt` - flash61- `bolt.slash` - flash off6263### Communication64- `message` - message65- `message.fill` - message filled66- `envelope` - email67- `envelope.fill` - email filled68- `phone` - phone69- `phone.fill` - phone filled70- `video` - video call71- `video.fill` - video call filled7273### Social74- `heart` - like75- `heart.fill` - liked76- `star` - favorite77- `star.fill` - favorited78- `hand.thumbsup` - thumbs up79- `hand.thumbsdown` - thumbs down80- `person` - profile81- `person.fill` - profile filled82- `person.2` - people83- `person.2.fill` - people filled8485### Content Actions86- `square.and.arrow.up` - share87- `square.and.arrow.down` - download88- `doc.on.doc` - copy89- `trash` - delete90- `pencil` - edit91- `folder` - folder92- `folder.fill` - folder filled93- `bookmark` - bookmark94- `bookmark.fill` - bookmarked9596### Status & Feedback97- `checkmark` - success/done98- `checkmark.circle.fill` - completed99- `xmark.circle.fill` - error/failed100- `exclamationmark.triangle` - warning101- `info.circle` - info102- `questionmark.circle` - help103- `bell` - notification104- `bell.fill` - notification filled105106### Misc107- `ellipsis` - more options108- `ellipsis.circle` - more in circle109- `line.3.horizontal` - menu/hamburger110- `slider.horizontal.3` - filters111- `arrow.clockwise` - refresh112- `location` - location113- `location.fill` - location filled114- `map` - map115- `mappin` - pin116- `clock` - time117- `calendar` - calendar118- `link` - link119- `nosign` - block/prohibited120121## Animated Symbols122123```tsx124<SymbolView125name="checkmark.circle"126animationSpec={{127effect: {128type: "bounce",129direction: "up",130},131}}132/>133```134135### Animation Effects136137- `bounce` - Bouncy animation138- `pulse` - Pulsing effect139- `variableColor` - Color cycling140- `scale` - Scale animation141142```tsx143// Bounce with direction144animationSpec={{145effect: { type: "bounce", direction: "up" } // up | down146}}147148// Pulse149animationSpec={{150effect: { type: "pulse" }151}}152153// Variable color (multicolor symbols)154animationSpec={{155effect: {156type: "variableColor",157cumulative: true,158reversing: true159}160}}161```162163## Symbol Weights164165```tsx166// Lighter weights167<SymbolView name="star" weight="ultraLight" />168<SymbolView name="star" weight="thin" />169<SymbolView name="star" weight="light" />170171// Default172<SymbolView name="star" weight="regular" />173174// Heavier weights175<SymbolView name="star" weight="medium" />176<SymbolView name="star" weight="semibold" />177<SymbolView name="star" weight="bold" />178<SymbolView name="star" weight="heavy" />179<SymbolView name="star" weight="black" />180```181182## Symbol Scales183184```tsx185<SymbolView name="star" scale="small" />186<SymbolView name="star" scale="medium" /> // default187<SymbolView name="star" scale="large" />188```189190## Multicolor Symbols191192Some symbols support multiple colors:193194```tsx195<SymbolView196name="cloud.sun.rain.fill"197type="multicolor"198/>199```200201## Finding Symbol Names2022031. Use the SF Symbols app on macOS (free from Apple)2042. Search at https://developer.apple.com/sf-symbols/2053. Symbol names use dot notation: `square.and.arrow.up`206207## Best Practices208209- Always use SF Symbols over vector icon libraries210- Match symbol weight to nearby text weight211- Use `.fill` variants for selected/active states212- Use PlatformColor for tint to support dark mode213- Keep icons at consistent sizes (16, 20, 24, 32)214