react-icons vs @tabler/icons-react vs feather-icons-react
React Icon Libraries Comparison
1 Year
react-icons@tabler/icons-reactfeather-icons-reactSimilar Packages:
What's React Icon Libraries?

Icon libraries provide a collection of scalable vector icons that can be easily integrated into web applications. They enhance user interfaces by adding visual elements that improve usability and aesthetic appeal. Each of the libraries mentioned offers unique features, design styles, and integration methods, catering to different development needs and preferences.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
react-icons3,181,72711,89586.2 MB20010 days agoMIT
@tabler/icons-react408,38318,83147.8 MB29622 days agoMIT
feather-icons-react18,893481.16 MB56 days agoISC
Feature Comparison: react-icons vs @tabler/icons-react vs feather-icons-react

Design Style

  • react-icons:

    React-icons provides a diverse range of icon styles by aggregating various libraries, including Font Awesome, Material Icons, and more. This allows developers to choose from a wide array of designs, catering to different project requirements and personal preferences.

  • @tabler/icons-react:

    @tabler/icons-react features a modern and flat design aesthetic, which is perfect for contemporary web applications. The icons are designed with a consistent style that enhances the overall user interface, making it visually appealing and easy to integrate into various layouts.

  • feather-icons-react:

    Feather-icons-react offers a minimalist design approach, focusing on simplicity and clarity. The icons are outlined and lightweight, making them suitable for applications that prioritize a clean and unobtrusive user experience.

Customization

  • react-icons:

    React-icons offers a straightforward way to customize icons by providing a unified API for all included libraries. Developers can easily change sizes and colors, making it a flexible choice for projects needing various icon styles.

  • @tabler/icons-react:

    @tabler/icons-react allows for easy customization of icons, enabling developers to modify colors, sizes, and other properties directly through props. This flexibility makes it suitable for projects that require a tailored visual identity.

  • feather-icons-react:

    Feather-icons-react supports customization by allowing developers to adjust the stroke width and color of the icons, making it easy to fit the icons into different design contexts without compromising their minimalist style.

Performance

  • react-icons:

    React-icons can introduce some overhead due to its aggregation of multiple libraries, but it is still optimized for performance. Developers should be mindful of the specific icons used to avoid unnecessary bloat.

  • @tabler/icons-react:

    @tabler/icons-react is optimized for performance, ensuring that icons are rendered efficiently without impacting the load time of the application. The SVG format used allows for scalability without loss of quality, making it suitable for responsive designs.

  • feather-icons-react:

    Feather-icons-react is lightweight and designed to minimize the impact on application performance. The minimalist design ensures that the icons do not bloat the application size, which is crucial for maintaining fast load times.

Ease of Use

  • react-icons:

    React-icons is highly accessible, providing a familiar interface for developers who have used various icon libraries. Its ability to integrate multiple libraries into one package simplifies the process of selecting and using icons.

  • @tabler/icons-react:

    @tabler/icons-react is user-friendly, with a straightforward API that allows for quick integration into React applications. The documentation is clear, making it easy for developers to get started and find the icons they need.

  • feather-icons-react:

    Feather-icons-react is designed for simplicity, with an intuitive API that makes it easy to implement icons in projects. The minimalistic approach means less complexity, which is beneficial for developers looking for quick solutions.

Community and Support

  • react-icons:

    React-icons enjoys widespread popularity and community support, making it easy to find tutorials, examples, and help from other developers. Its extensive use in the React ecosystem ensures ongoing maintenance and updates.

  • @tabler/icons-react:

    @tabler/icons-react has a growing community and is actively maintained, ensuring that developers can find support and updates. The library's popularity is increasing, which is beneficial for long-term projects.

  • feather-icons-react:

    Feather-icons-react is part of the Feather icon set, which has a strong following and community support. This ensures that developers can access resources and assistance when needed.

How to Choose: react-icons vs @tabler/icons-react vs feather-icons-react
  • react-icons:

    Opt for react-icons if you want a versatile solution that aggregates multiple icon libraries into one package. This is beneficial for projects that may require icons from various styles or sources, allowing for greater flexibility in design.

  • @tabler/icons-react:

    Choose @tabler/icons-react if you prefer a modern, clean design with a wide variety of icons that fit well in contemporary web applications. It is particularly suited for projects that prioritize a cohesive visual style and require a large icon set.

  • feather-icons-react:

    Select feather-icons-react if you are looking for a minimalist design with a focus on simplicity and ease of use. This library is ideal for projects where lightweight icons are essential, and you want to maintain a clean and uncluttered UI.

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.