react-icons vs @ant-design/icons vs @fortawesome/react-fontawesome vs react-feather vs react-bootstrap-icons
Icon Libraries for React Comparison
1 Year
react-icons@ant-design/icons@fortawesome/react-fontawesomereact-featherreact-bootstrap-iconsSimilar Packages:
What's Icon Libraries for React?

Icon libraries for React provide a collection of scalable vector icons that can be easily integrated into React applications. These libraries offer customizable icons that enhance the visual appeal of web applications, improve user experience, and provide intuitive visual cues. They often come with features like customizable sizes, colors, and styles, making them versatile for various design needs. Popular icon libraries include Font Awesome, Material Icons, and Ant Design Icons, each offering a unique set of icons and design philosophies.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
react-icons3,590,51112,13886.2 MB2124 months agoMIT
@ant-design/icons2,028,5791,0109.67 MB1243 months agoMIT
@fortawesome/react-fontawesome1,295,0353,69737.8 kB117a year agoMIT
react-feather299,2551,9431 MB38-MIT
react-bootstrap-icons80,9301918.94 MB9a month agoMIT
Feature Comparison: react-icons vs @ant-design/icons vs @fortawesome/react-fontawesome vs react-feather vs react-bootstrap-icons

Design Consistency

  • react-icons:

    react-icons aggregates icons from multiple libraries, so design consistency varies depending on the chosen icon set.

  • @ant-design/icons:

    @ant-design/icons provides a consistent design language that aligns with the Ant Design system, making it ideal for applications that use Ant Design components.

  • @fortawesome/react-fontawesome:

    @fortawesome/react-fontawesome offers a wide range of icons with varying styles, but consistency depends on the selected icon set (e.g., solid, regular, light, duotone).

  • react-feather:

    react-feather icons are designed with a consistent stroke width and minimalist style, ensuring uniformity across the entire set.

  • react-bootstrap-icons:

    react-bootstrap-icons features a simple and consistent design that complements Bootstrap’s aesthetic, making it suitable for Bootstrap-based projects.

Customization

  • react-icons:

    react-icons allows customization of icons from various libraries, but the level of customization depends on the specific icon set being used.

  • @ant-design/icons:

    @ant-design/icons allows for basic customization such as size and color, but the icons are primarily designed to be used as-is within the Ant Design framework.

  • @fortawesome/react-fontawesome:

    @fortawesome/react-fontawesome provides extensive customization options, including size, color, rotation, and the ability to layer multiple icons for more complex designs.

  • react-feather:

    react-feather icons are fully customizable since they are built with SVGs. You can easily adjust their size, color, and stroke width directly in your code.

  • react-bootstrap-icons:

    react-bootstrap-icons supports simple customization through CSS, allowing you to easily change the size and color of the icons as needed.

Bundle Size

  • react-icons:

    react-icons allows you to import only the icons you need from various libraries, which helps keep the bundle size manageable, but it can still add up if many icons are used.

  • @ant-design/icons:

    @ant-design/icons has a moderate bundle size, but it is optimized for use with Ant Design, making it efficient for projects that already use the framework.

  • @fortawesome/react-fontawesome:

    @fortawesome/react-fontawesome can increase bundle size, especially if multiple icon styles are used. However, it offers tree-shaking capabilities to help reduce the size by importing only the icons you need.

  • react-feather:

    react-feather is known for its small bundle size, as it provides a limited set of lightweight icons that are easy to integrate without adding significant overhead.

  • react-bootstrap-icons:

    react-bootstrap-icons is lightweight and has a small bundle size, making it a great choice for projects that prioritize performance.

Ease of Use: Code Examples

  • react-icons:

    React Icons Example

    import { FaBeer } from 'react-icons/fa';
    
    const App = () => <FaBeer style={{ color: 'brown', fontSize: '24px' }} />;
    
  • @ant-design/icons:

    Ant Design Icons Example

    import { SmileOutlined } from '@ant-design/icons';
    
    const App = () => <SmileOutlined style={{ fontSize: '24px', color: 'blue' }} />;
    
  • @fortawesome/react-fontawesome:

    Font Awesome Example

    import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
    import { faCoffee } from '@fortawesome/free-solid-svg-icons';
    
    const App = () => <FontAwesomeIcon icon={faCoffee} style={{ color: 'gold', fontSize: '24px' }} />;
    
  • react-feather:

    Feather Icons Example

    import { Camera } from 'react-feather';
    
    const App = () => <Camera size={24} color="purple" />;
    
  • react-bootstrap-icons:

    Bootstrap Icons Example

    import { BootstrapIcon } from 'react-bootstrap-icons';
    
    const App = () => <BootstrapIcon name="alarm" style={{ color: 'red', fontSize: '24px' }} />;
    
How to Choose: react-icons vs @ant-design/icons vs @fortawesome/react-fontawesome vs react-feather vs react-bootstrap-icons
  • react-icons:

    Choose react-icons if you want a versatile library that provides access to multiple icon sets, including Font Awesome, Material Icons, and more, all in one package. It is great for projects that need flexibility and want to use icons from different libraries without adding multiple dependencies.

  • @ant-design/icons:

    Choose @ant-design/icons if you are building a project with Ant Design or need a comprehensive set of high-quality icons that follow a consistent design language. It is ideal for applications that prioritize a modern and clean aesthetic.

  • @fortawesome/react-fontawesome:

    Choose @fortawesome/react-fontawesome if you need a wide variety of icons, including brand logos, and require advanced features like icon layering, animation, and customization. It is suitable for projects that need a versatile and well-established icon solution.

  • react-feather:

    Choose react-feather if you prefer a collection of open-source, lightweight, and customizable icons with a minimalist design. It is ideal for projects that value simplicity and want to keep their bundle size small while still having visually appealing icons.

  • react-bootstrap-icons:

    Choose react-bootstrap-icons if you are looking for a simple and lightweight icon set that integrates seamlessly with Bootstrap. It is perfect for projects that use Bootstrap and need a straightforward set of icons without any additional dependencies.

README for react-icons
React Icons

React Icons

npm

Include popular icons in your React projects easily with react-icons, which utilizes ES6 imports that allows you to include only the icons that your project is using.

Installation (for standard modern project)

yarn add react-icons
# or
npm install react-icons --save

example usage

import { FaBeer } from "react-icons/fa";

function Question() {
  return (
    <h3>
      Lets go for a <FaBeer />?
    </h3>
  );
}

View the documentation for further usage examples and how to use icons from other packages. NOTE: each Icon package has it's own subfolder under react-icons you import from.

For example, to use an icon from Material Design, your import would be: import { ICON_NAME } from 'react-icons/md';

Installation (for meteorjs, gatsbyjs, etc)

Note This option has not had a new release for some time. More info https://github.com/react-icons/react-icons/issues/593

If your project grows in size, this option is available. This method has the trade-off that it takes a long time to install the package.

yarn add @react-icons/all-files
# or
npm install @react-icons/all-files --save

example usage

import { FaBeer } from "@react-icons/all-files/fa/FaBeer";

function Question() {
  return (
    <h3>
      Lets go for a <FaBeer />?
    </h3>
  );
}

Icons

| Icon Library | License | Version | Count | | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ---------------------------------------- | ----: | | Circum Icons | MPL-2.0 license | 1.0.0 | 288 | | Font Awesome 5 | CC BY 4.0 License | 5.15.4-3-gafecf2a | 1612 | | Font Awesome 6 | CC BY 4.0 License | 6.5.2 | 2045 | | Ionicons 4 | MIT | 4.6.3 | 696 | | Ionicons 5 | MIT | 5.5.4 | 1332 | | Material Design icons | Apache License Version 2.0 | 4.0.0-98-g9beae745bb | 4341 | | Typicons | CC BY-SA 3.0 | 2.1.2 | 336 | | Github Octicons icons | MIT | 18.3.0 | 264 | | Feather | MIT | 4.29.1 | 287 | | Lucide | ISC | v5.1.0-6-g438f572e | 1215 | | Game Icons | CC BY 3.0 | 12920d6565588f0512542a3cb0cdfd36a497f910 | 4040 | | Weather Icons | SIL OFL 1.1 | 2.0.12 | 219 | | Devicons | MIT | 1.8.0 | 192 | | Ant Design Icons | MIT | 4.4.2 | 831 | | Bootstrap Icons | MIT | 1.11.3 | 2716 | | Remix Icon | Apache License Version 2.0 | 4.2.0 | 2860 | | Flat Color Icons | MIT | 1.0.2 | 329 | | Grommet-Icons | Apache License Version 2.0 | 4.12.1 | 635 | | Heroicons | MIT | 1.0.6 | 460 | | Heroicons 2 | MIT | 2.1.3 | 888 | | Simple Icons | CC0 1.0 Universal | 12.14.0 | 3209 | | Simple Line Icons | MIT | 2.5.5 | 189 | | IcoMoon Free | CC BY 4.0 License | d006795ede82361e1bac1ee76f215cf1dc51e4ca | 491 | | BoxIcons | MIT | 2.1.4 | 1634 | | css.gg | MIT | 2.1.1 | 704 | | VS Code Icons | CC BY 4.0 | 0.0.35 | 461 | | Tabler Icons | MIT | 3.2.0 | 5237 | | Themify Icons | MIT | v0.1.2-2-g9600186 | 352 | | Radix Icons | MIT | @radix-ui/react-icons@1.3.0-1-g94b3fcf | 318 | | Phosphor Icons | MIT | 2.1.1 | 9072 | | Icons8 Line Awesome | MIT | 1.3.1 | 1544 |

You can add more icons by submitting pull requests or creating issues.

Configuration

You can configure react-icons props using React Context API.

Requires React 16.3 or higher.

import { IconContext } from "react-icons";

<IconContext.Provider value={{ color: "blue", className: "global-class-name" }}>
  <div>
    <FaFolder />
  </div>
</IconContext.Provider>;

| Key | Default | Notes | | ----------- | --------------------- | ---------------------------------- | | color | undefined (inherit) | | | size | 1em | | | className | undefined | | | style | undefined | Can overwrite size and color | | attr | undefined | Overwritten by other attributes | | title | undefined | Icon description for accessibility |

Migrating from version 2 -> 3

Change import style

Import path has changed. You need to rewrite from the old style.

// OLD IMPORT STYLE
import FaBeer from "react-icons/lib/fa/beer";

function Question() {
  return (
    <h3>
      Lets go for a <FaBeer />?
    </h3>
  );
}
// NEW IMPORT STYLE
import { FaBeer } from "react-icons/fa";

function Question() {
  return (
    <h3>
      Lets go for a <FaBeer />?
    </h3>
  );
}

Ending up with a large JS bundle? Check out this issue.

Adjustment CSS

From version 3, vertical-align: middle is not automatically given. Please use IconContext to specify className or specify an inline style.

Global Inline Styling

<IconContext.Provider value={{ style: { verticalAlign: 'middle' } }}>

Global className Styling

Component

<IconContext.Provider value={{ className: 'react-icons' }}>

CSS

.react-icons {
  vertical-align: middle;
}

TypeScript native support

Dependencies on @types/react-icons can be deleted.

Yarn

yarn remove @types/react-icons

NPM

npm remove @types/react-icons

Contributing

./build-script.sh will build the whole project. See also CI scripts for more information.

Development

yarn
cd packages/react-icons
yarn fetch  # fetch icon sources
yarn build

Add/Update icon set

First, check the discussion to see if anyone would like to add an icon set.

https://github.com/react-icons/react-icons/discussions/categories/new-icon-set

The SVG files to be fetched are managed in this file. Edit this file and run yarn fetch && yarn check && yarn build.

https://github.com/react-icons/react-icons/blob/master/packages/react-icons/src/icons/index.ts

Preview

Note The project is not actively accepting PR for the preview site at this time.

The preview site is the react-icons website, built in Astro+React.

cd packages/react-icons
yarn fetch
yarn build

cd ../preview-astro
yarn start

Demo

The demo is a Create React App boilerplate with react-icons added as a dependency for easy testing.

cd packages/react-icons
yarn fetch
yarn build

cd ../demo
yarn start

Why React SVG components instead of fonts?

SVG is supported by all major browsers. With react-icons, you can serve only the needed icons instead of one big font file to the users, helping you to recognize which icons are used in your project.

Related Projects

Licence

MIT

  • Icons are taken from the other projects so please check each project licences accordingly.