TrademarkTrademark
Docs
Ctrl k
Search docs...
Components

Icon

Updated: October 18, 2026
View on GitHub
Soon
Not released yet. This is on main and is not in any published version yet. It will not install today.

Icon draws one icon by name. The native package ships the same icon data as the web package and draws it with react-native-svg, so the names match and no icon font or extra icon library is needed. react-native-svg 15 is a peer dependency, and Expo includes it. See the web Icon page.

Sizes and colours

size takes xs to xl: 16, 20, 24, 32 or 40 points. m is the default. The colour is neutral-strong unless you set onBackground or onSolid.

Built-in names

name is typed as IconName, so a misspelled name is a type error. The built-in names include arrowLeft, arrowRight, bell, calendar, check, chevronDown, chevronLeft, chevronRight, chevronUp, close, copy, danger, edit, eye, eyeOff, heart, home, info, link, lock, mail, minus, person, plus, refresh, search, settings, star, trash and warning. Your editor's autocomplete on name lists all of them.

Components that take prefixIcon or suffixIcon, such as Button, take the same names.

Accessibility

Icons are decorative by default and hidden from screen readers. When an icon carries meaning on its own, pass decorative={false} and an ariaLabel.

Adding icons with IconProvider

IconProvider adds icons by name, or replaces built-in ones. An icon is either core's SVG data ({ tag, attr, child }) or a component that takes size in points and color. That makes a set like @expo/vector-icons easy to plug in. Declare the new names on IconLibraryOverrides so name accepts them.

useIcons() returns the merged set of icons in scope, for your own components.

Differences from the web

  • No tooltip. There is no hover on a touch screen, so tooltip and tooltipPosition are not supported. Use ariaLabel for the name.
  • color. Native Icon also takes a plain colour string in color, which wins over onBackground. Components use it to colour icons inside their labels.
  • Custom icons. The web's IconProvider takes React components. The native one also takes core's SVG data, and its components receive size and color instead of styling through CSS.

Props

Prop
Type
Default
Description
nameIconNameA built-in name, or one added with IconProvider. Required.
size"xs" | "s" | "m" | "l" | "xl""m"16, 20, 24, 32 or 40 points.
onBackground"<scheme>-<weight>""neutral-strong"Icon colour on a background.
onSolid"<scheme>-<weight>"Icon colour on a solid surface. Wins over onBackground.
colorstringA plain colour. Wins over onBackground and onSolid.
decorativebooleantrueHidden from screen readers unless false.
ariaLabelstringthe nameThe accessible name when decorative is false.
styleViewStyleApplied to the view around the icon.

IconProvider

Prop
Type
Default
Description
iconsRecord<string, NativeIcon>Icons to add or replace, by name. A NativeIcon is core's SVG data or a component taking size and color.
childrenReactNodeThe part of the app that uses these icons.
Edit this page on GitHub
TrademarkTrademark
Built with curiosity by Lorant One and the Design Engineers Club