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 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:
- Create a new React Native project
- Install the Dependency (react-native-vector-icons)
- Install CocoaPods
- Importing Icon Files in Android
- Importing Icon Files in iOS
- 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" />
Prop | Description | Default |
---|---|---|
size | Size of the icon can also be passed as fontSize in the style object. | 12 |
name | What icon to show, see Icon Explorer app or one of the links above. | None |
color | The 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>
Prop | Description | Default |
---|---|---|
color | Text and icon color, use iconStyle or nest a Text component if you need different colors. | white |
size | Icon size. | 20 |
iconStyle | Styles applied to the icon only, good for setting margins or a different color. Note: use iconStyle for margins or expect unstable behavior. | {marginRight: 10} |
backgroundColor | Background color of the button. | #007AFF |
borderRadius | Border radius of the button, set to 0 to disable. | 5 |
onPress | A 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"
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.
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”
4. Select the fonts directory which you have created. Remember to select Create Folder references from below and click Add
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.
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
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
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:
- Example to Use Ionicons in React Native
- Example of Social Icons using React Native Elements
- React Native Card View
- Vector icon in Navigation Drawer / Sidebar
- Vector Icon in Bottom Navigation
Hope you liked it. 🙂
Updated for the latest updates
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.
Not Sure if it works on Expo, You can see ≤a hreaf=”https://icons.expo.fyi”≥@expo/vector-icon
not working on cli as well
Can you please share the Error?
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 🙂