This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
Expo Symbols
A library that allows access to native symbols.
This library is currently in beta and subject to breaking changes.
expo-symbols provides access to native symbol libraries across platforms. On iOS and tvOS, it uses SF Symbols. On Android and web, it uses Material Symbols.
Installation
If you are installing this in an existing React Native app, make sure to install expo in your project.
Usage
Cross-platform symbols
Pass an object with per-platform symbol names to render symbols on all platforms. Browse available iOS symbols in the Apple SF Symbols app and Android/web symbols at Google Material Symbols.
If you only pass a string, it is treated as an SF Symbol name and renders only on iOS. On Android and web, nothing will be rendered unless you provide a fallback:
{ /* iOS-only: pass an SF Symbol name directly */ } <SymbolView name="airpods.chargingcase" style={styles.symbol} type="hierarchical" />; { /* Use fallback for platforms where the symbol is not defined */ } <SymbolView name={{}} fallback={<Text>?</Text>} />;
Weights
On iOS, pass a weight string directly. On Android, import a weight object from expo-symbols/androidWeights:
import bold from 'expo-symbols/androidWeights/bold'; <SymbolView name={{ ios: 'star.fill', android: 'star', web: 'star' }} weight={{ ios: 'bold', android: bold }} tintColor="gold" size={35} />;
Available weight imports: bold, semiBold, medium, regular, light, extraLight, thin.
API
import { SymbolView } from 'expo-symbols';
Component
Type: React.Element<SymbolViewProps>
unionAn array of colors to use when the SymbolType is palette.
Acceptable values are: ColorValue | ColorValue[]
React.ReactNodeFallback to render when a symbol for the given platform is not defined.
unionThe name of the symbol. iOS Symbols can be viewed in the Apple SF Symbols app.
Acceptable values are: SFSymbol | {
android: AndroidSymbol,
ios: SFSymbol,
web: AndroidSymbol
}
ContentMode • Default: 'scaleAspectFit'Determines how the image should be resized to fit its container.
union • Default: 'unspecified'The weight of the symbol to render. On Android and web import from expo-symbols/androidWeights/{weight}.
Acceptable values are: SymbolWeight | {
android: AndroidSymbolWeight,
ios: SymbolWeight
}
Methods
Types
Literal type: string
The type of animation to apply to the symbol.
Acceptable values are: 'bounce' | 'pulse' | 'scale'
Literal type: string
Determines how the image should be resized to fit its container.
Acceptable values are: 'scaleToFill' | 'scaleAspectFit' | 'scaleAspectFill' | 'redraw' | 'center' | 'top' | 'bottom' | 'left' | 'right' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'
Literal type: string
The scale of the symbol to render.
Acceptable values are: 'default' | 'unspecified' | 'small' | 'medium' | 'large'
Literal type: string
Determines the symbol variant to use.
-
'monochrome'- Creates a color configuration that specifies that the symbol image uses its monochrome variant. -
'hierarchical'- Creates a color configuration with a color scheme that originates from one color. -
'palette'- Creates a color configuration with a color scheme from a palette of multiple colors. -
'multicolor'- Creates a color configuration that specifies that the symbol image uses its multicolor variant, if one exists.
Acceptable values are: 'monochrome' | 'hierarchical' | 'palette' | 'multicolor'
Literal type: string
The weight of the symbol to render.
Acceptable values are: 'unspecified' | 'ultraLight' | 'thin' | 'light' | 'regular' | 'medium' | 'semibold' | 'bold' | 'heavy' | 'black'
A variable color animation draws attention to a symbol by changing the opacity of the symbol’s layers.
You can choose to apply the effect to layers either cumulatively or iteratively.
For cumulative animations, each layer’s opacity remains changed until the end of the animation cycle.
For iterative animations, each layer’s opacity changes briefly before returning to its original state.
These effects are compounding, each value set to true will add an additional effect.