How to use React Native Vector Icons

Vector Icons

React Native Vector Icons are very popular icons in React Native. In this post, we will see an Example to Use Vector Icons in React Native using react-native-vector-icons. Vector Icons are perfect for buttons, logos and nav/tab bars. Vector Icons are easy to extend, style and integrate into your project.

Vector icons can be easily used anywhere. You can visit the react-native-vector-icons directory to find a variety of icons.

Vector Icons

Vector Icons list

Here is the list of icon categories available in React Native Vector Icons:

  • AntDesign by AntFinance (297 icons)
  • Entypo by Daniel Bruce (411 icons)
  • EvilIcons by Alexander Madyankin & Roman Shamin (v1.10.1, 70 icons)
  • Feather by Cole Bemis & Contributors (v4.21.0, 279 icons)
  • FontAwesome by Dave Gandy (v4.7.0, 675 icons)
  • FontAwesome 5 by Fonticons, Inc. (v5.7.0, 1500 (free) 5082 (pro) icons)
  • Fontisto by Kenan (v3.0.4, 615 icons)
  • Foundation by ZURB, Inc. (v3.0, 283 icons)
  • Ionicons by Ben Sperry (v4.2.4, 696 icons)
  • MaterialIcons by Google, Inc. (v3.0.1, 932 icons)
  • MaterialCommunityIcons by MaterialDesignIcons.com (v3.6.95, 3695 icons)
  • Octicons by Github, Inc. (v8.4.1, 184 icons)
  • Zocial by Sam Collins (v1.0, 100 icons)
  • SimpleLineIcons by Sabbir & Contributors (v2.4.1, 189 icons)

How to use Vector Icons in React Native?

To use Vector Icons you have to follow the below steps:

  1. Create a new React Native project
  2. Install the Dependency (react-native-vector-icons)
  3. Install CocoaPods
  4. Importing Icon Files in Android
  5. Importing Icon Files in iOS
  6. Import icon components into your project and start using it.

How to use Icon Component?

For the Vector Icons, we have to import react-native-vector-icons dependency, which will provide two components:

1. Icon Component

You can use this Icon component to create Icons. Prop “name” will render the icon in Android and IOS.

<Icon name="rocket" size={30} color="#900" />
PropDescriptionDefault
sizeSize of the icon can also be passed as fontSize in the style object.12
nameWhat icon to show, see Icon Explorer app or one of the links above.None
colorThe color of the icon.Inherited

2. Icon.Button Component

A convenience component for creating buttons with an icon on the left side.

<Icon.Button
  name="facebook"
  backgroundColor="#3b5998"
  onPress={this.loginWithFacebook}>
  Login with Facebook
</Icon.Button>
PropDescriptionDefault
colorText and icon color, use iconStyle or nest a Text component if you need different colors.white
sizeIcon size.20
iconStyleStyles applied to the icon only, good for setting margins or a different color. Note: use iconStyle for margins or expect unstable behavior.{marginRight: 10}
backgroundColorBackground color of the button.#007AFF
borderRadiusBorder radius of the button, set to 0 to disable.5
onPressA function called when the button is pressed.None

We are also going to use these components in our example.

I think this is enough now let’s get started with the example. In this example, we will create a simple screen with different icons and will run it in Android and IOS.

To Make a React Native App

Getting started with React Native will help you to know more about the way you can make a React Native project. We are going to use react native command line interface to make our React Native App.

If you have previously installed a global react-native-cli package, please remove it as it may cause unexpected issues:

npm uninstall -g react-native-cli @react-native-community/cli

Run the following commands to create a new React Native project

npx react-native init ProjectName

If you want to start a new project with a specific React Native version, you can use the --version argument:

npx react-native init ProjectName --version X.XX.X

Note If the above command is failing, you may have old version of react-native or react-native-cli installed globally on your pc. Try uninstalling the cli and run the cli using npx.

This will make a project structure with an index file named App.js in your project directory.

Installation of Dependency

To use Icon component you need to install react-native-vector-icons dependency.

To install this, open the terminal and jump into your project.

cd ProjectName

Run the following command:

npm install react-native-vector-icons --save

CocoaPods Installation

Please use the following command to install CocoaPods

npx pod-install

Once we installed the dependency we need to do some additional changes for both Android and iOS. Please follow the below instructions.

Changes required for Android

To use react-native-vector-icons in Android we need edit android/app/build.gradle (NOT android/build.gradle ) and add the following:

apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
react-native-vector-icons changes for Android

This method will copy fonts from react-native-vector-icons module at build time. If you want to customize the files being copied, add the required icon TTF:

project.ext.vectoricons = [
    iconFontNames: [ 'MaterialIcons.ttf', 'EvilIcons.ttf' ] // Name of the font files you want to copy
]
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"

Importing Icon Files in iOS

Please follow the below steps to use vector icons in iOS.

1. Create a fonts directory in iOS and copy all the font files from node_modules/react-native-vector-icons/Fonts into it.

vector_icon_ios_font_import1

2. Now open the project YourProject -> ios -> YourProject.xcworkspace in Xcode.

3. After opening the project in Xcode, click on the project from the left sidebar to open the options and select Add Files to “YourProjectName”

vector_icon_ios_font_import2

4. Select the fonts directory which you have created. Remember to select Create Folder references from below and click Add

vector_icon_ios_font_import3

5. Now click the project name on the left top, and select the project name on TARGETS. Click the Info tab on the top menu to see Info.plist and add Fonts provided by application and font files under it.

Here we are adding a few, but you can add or remove according to your need. You can also add all font files which we have copied in the above step.

vector_icon_ios_font_import4

If you are an iOS developer or have knowledge about info.plist then you can add the following lines directly into info.plist but if you have already performed the above action then you don’t worry about this as this has been already added by XCode.

<key>UIAppFonts</key>
<array>
    <string>fonts/FontAwesome.ttf</string>
    <string>fonts/Ionicons.ttf</string>
    <string>fonts/Foundation.ttf</string>
    <string>fonts/MaterialCommunityIcons.ttf</string>
    <string>fonts/MaterialIcons.ttf</string>
</array>

6. After completion, it will look like this

vector_icon_ios_font_import5

Code to Use Vector Icon in React Native

Now Open App.js in any code editor and replace the code with the following code

App.js

// Example to Use React Native Vector Icons
// https://aboutreact.com/react-native-vector-icons/

// Import React
import React from 'react';

// Import required component
import {SafeAreaView, StyleSheet, Text, View} from 'react-native';

// Import vector icons
import Icon from 'react-native-vector-icons/FontAwesome';

const App = () => {
  return (
    <SafeAreaView style={{flex: 1}}>
      <View style={{flex: 1, padding: 16}}>
        <View style={styles.container}>
          <Text style={styles.heading}>
            Example to Use React Native Vector Icons
          </Text>
          <View style={styles.iconContainer}>
            <Text>
              <Icon name="rocket" size={30} color="#900" />
            </Text>
            {/* Icon Component */}
            <Icon name="rocket" size={30} color="#900" />
          </View>
          <View style={{marginTop: 16, marginBottom: 16}}>
            {/* Icon.Button Component */}
            <Icon.Button
              name="facebook"
              backgroundColor="#3b5998"
              onPress={() => alert('Login with Facebook')}>
              Login with Facebook
            </Icon.Button>
          </View>
        </View>
        <Text style={styles.footerTitle}>Vector Icons</Text>
        <Text style={styles.footerText}>www.aboutreact.com</Text>
      </View>
    </SafeAreaView>
  );
};
const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  heading: {
    fontSize: 20,
    textAlign: 'center',
    marginBottom: 20,
  },
  iconContainer: {
    marginTop: 16,
    marginBottom: 16,
    justifyContent: 'center',
    alignItems: 'center',
    textAlign: 'center',
  },
  footerTitle: {
    fontSize: 18,
    textAlign: 'center',
    color: 'grey',
  },
  footerText: {
    fontSize: 16,
    textAlign: 'center',
    color: 'grey',
  },
});

export default App;

To Run the React Native App

Open the terminal again and jump into your project using.

cd ProjectName

1. Start Metro Bundler

First, you will need to start Metro, the JavaScript bundler that ships with React Native. To start Metro bundler, run the following command.

npx react-native start

Once you start Metro Bundler, it will run forever on your terminal until you close it. Let Metro Bundler run in its own terminal. Open a new terminal and run the application.

2. Start React Native Application

To run the project on an Android Virtual Device or on a real debugging device

npx react-native run-android

or on the iOS Simulator by running (macOS only)

npx react-native run-ios

Output Screenshots

vector_icon_aboutreact.png

This is how you can use Vector Icons in React Native. If you have any doubts, or you want to share something about the topic, you can comment below or contact us here. There will be more posts coming soon. Stay tuned!

Recommendations

You can also see the following post related to Vector Icons:

  1. Example to Use Ionicons in React Native
  2. Example of Social Icons using React Native Elements
  3. React Native Card View
  4. Vector icon in Navigation Drawer / Sidebar
  5. Vector Icon in Bottom Navigation

Hope you liked it. 🙂

6 thoughts on “How to use React Native Vector Icons”

  1. i’ve no success. When i run expo build:ios and run the file on simulator the link do not appear. An when i run react-native run-ios nothing happness.

    Reply
  2. This is the only tutorial that worked for me. I’ll admit, I’m a complete beginner with React Native. So it’s entirely possible I’ve missed steps in other tutorials. I’m just glad to see something on screen. Thank you About React 🙂

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.