Design Systems • Open-Source Iconography • 2026 Edition

Iconoir Icons Complete Guide: Setup, React, Vue, CSS & Figma

Iconoir Open Source Vector Icon Library Architecture
Iconoir: 2,000+ pure vector outline icons engineered for modern web apps, mobile interfaces, and Figma design systems.

1. Introduction to Iconoir

In modern web and mobile product design, consistency is paramount. A user interface that combines heavy 2px strokes from one library with delicate 1px lines from another feels fragmented and unpolished. Furthermore, developers are often frustrated by commercial icon libraries that offer a modest free tier but gate the most critical glyphs (cloud storage, AI sparkles, battery states, enterprise integrations) behind recurring subscription paywalls.

Iconoir was created to solve both problems. It is an open-source, community-driven icon library created by Luca Burgio featuring over 2,020 meticulously crafted vector icons. Every single icon in Iconoir is drawn on the exact same 24x24 pixel grid using a consistent 1.5px stroke weight, rounded terminals, and balanced negative space.

There are no "Pro" tiers, no locked SVGs, no email signups, and no artificial restrictions. The entire collection is licensed under the permissive MIT License and fully indexed on IconStash's Iconoir Library Hub.

2. Design Philosophy: The 24x24 & 1.5px Stroke Standard

Iconoir stands out for its visual balance. Many icon libraries adopt either a chunky 2px stroke (like Lucide and Feather) which can feel heavy in minimal, typography-forward interfaces, or an ultra-fine 1px stroke which loses clarity on standard DPI monitors. Iconoir selected 1.5px on a 24x24 canvas as the ideal golden ratio.

Geometric Attribute Iconoir Specification Visual Effect & Technical Advantage
Canvas Grid 24 x 24 px Standard modern viewport canvas matching iOS and Android touch targets and desktop SaaS menus.
Optical Padding 2px bounding margin Prevents edge clipping when strokes are thickened or when drop-shadow filters are applied.
Default Stroke Caliper 1.5px Provides crisp definition on 1x displays while looking refined and sophisticated on Retina screens.
Cap & Join Style stroke-linecap: round
stroke-linejoin: round
Eliminates sharp needle corners; delivers a friendly, modern visual rhythm across all glyphs.
Live Iconoir Stroke & Framework Sandbox
Stroke: Framework:
Calendar
stroke: 1.5px
Check Circle
stroke: 1.5px
Search
stroke: 1.5px
Shield
stroke: 1.5px
import { Calendar, CheckCircle, Search, Shield } from 'iconoir-react';

3. React & React Native Setup

Iconoir provides first-class support for React through iconoir-react and for mobile apps through iconoir-react-native. Both libraries export tree-shakeable SVG components with full TypeScript support.

React Installation

npm install iconoir-react

Basic Component Usage in React

import React from 'react';
import { Calendar, CheckCircle, Search, Shield } from 'iconoir-react';

export function NavigationToolbar() {
  return (
    <nav className="flex items-center gap-4">
      <button type="button" className="btn-icon" aria-label="Search">
        <Search width={20} height={20} strokeWidth={1.5} />
      </button>
      <button type="button" className="btn-icon" aria-label="Calendar events">
        <Calendar width={20} height={20} strokeWidth={1.5} />
      </button>
    </nav>
  );
}

Global Theming with IconoirProvider

If you prefer not to pass strokeWidth, color, or width props to every individual icon in your application, you can wrap your root component with IconoirProvider:

import { IconoirProvider, Bell, Settings, User } from 'iconoir-react';

export function App() {
  return (
    <IconoirProvider
      iconProps={{
        color: 'currentColor',
        strokeWidth: 1.75,
        width: '1.25em',
        height: '1.25em'
      }}
    >
      <header>
        <Bell />
        <Settings />
        <User />
      </header>
    </IconoirProvider>
  );
}

React Native Integration

For cross-platform mobile apps built with Expo or React Native CLI, install iconoir-react-native alongside react-native-svg:

npm install iconoir-react-native react-native-svg
import React from 'react';
import { View, StyleSheet } from 'react-native';
import { Shield, CheckCircle } from 'iconoir-react-native';

export function SecurityBadge() {
  return (
    <View style={styles.container}>
      <Shield width={24} height={24} color="#C1DD2D" strokeWidth={1.5} />
    </View>
  );
}

4. Vue 3 & Svelte 5 Integration

Iconoir avoids framework favoritism by providing official, independently published packages for Vue 3 and Svelte 5.

Vue 3 Setup (iconoir-vue)

npm install iconoir-vue
<script setup>
import { Calendar, Search, Shield } from 'iconoir-vue';
</script>

<template>
  <div class="toolbar">
    <Search :stroke-width="1.5" width="20" height="20" />
    <Calendar :stroke-width="1.5" width="20" height="20" />
    <Shield :stroke-width="1.5" width="20" height="20" />
  </div>
</template>

Svelte 5 Setup

npm install iconoir-svelte
<script>
  import { CheckCircle, ArrowRight } from 'iconoir-svelte';
</script>

<button class="cta-button">
  <span>Get Started</span>
  <ArrowRight strokeWidth={1.5} size={20} />
</button>

5. Zero-JS CSS Mask Icons (iconoir.css)

One of Iconoir's most powerful yet underutilized features is its pure CSS package: iconoir.css. This approach uses the modern CSS property mask-image to display icons with zero client-side JavaScript execution.

Installation

npm install iconoir

Or import via CDN directly into your HTML document:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/iconoir-icons/iconoir@main/css/iconoir.css">

How CSS Mask Icons Work

Instead of injecting heavy inline SVGs or managing font glyphs, the CSS mask pattern loads the SVG as an alpha stencil. The browser paints whatever background-color is active through the visible stencil lines:

/* Inside iconoir.css */
.iconoir-calendar {
  display: inline-block;
  width: 24px;
  height: 24px;
  background-color: currentColor;
  -webkit-mask-image: url('data:image/svg+xml;utf8,...');
  mask-image: url('data:image/svg+xml;utf8,...');
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

Because background-color is set to currentColor, you can recolor the icon instantly with any typography utility in Tailwind CSS or standard CSS:

<!-- Instant recoloring via text color -->
<i class="iconoir-calendar text-emerald-500 hover:text-emerald-400"></i>
<i class="iconoir-shield text-rose-500"></i>

6. Dynamic Stroke Customization & Accessibility

Because all Iconoir assets use native vector stroke paths rather than pre-baked filled outlines, you can alter the line weight dynamically across responsive breakpoints or interaction states.

Hover Micro-Interactions

You can create playful micro-interactions where an icon thickens from 1.5px to 2.25px when hovered:

.interactive-icon {
  stroke-width: 1.5;
  transition: stroke-width 150ms cubic-bezier(0.4, 0, 0.2, 1);
}

.interactive-icon:hover {
  stroke-width: 2.25;
}
Accessibility Notice

When thickening stroke on hover, ensure the icon element includes vector-effect: non-scaling-stroke if parent containers are subject to CSS scale transforms. This prevents strokes from blowing out on high-DPI displays.

7. Iconoir vs. Other Popular Icon Libraries

Here is how Iconoir compares to Lucide, Feather, Tabler, and Phosphor in 2026:

Feature Iconoir Lucide Icons Feather Icons Tabler Icons
Icon Count 2,020+ icons 1,979 icons 286 icons 6,324 icons
Default Stroke 1.5px 2.0px 2.0px 2.0px
Grid Dimensions 24 x 24 24 x 24 24 x 24 24 x 24
CSS Mask Support Official (iconoir.css) Unofficial plugins No Unofficial plugins
License MIT (100% Free) ISC (100% Free) MIT MIT
Maintenance Status Actively updated (2026) Actively updated Deprecated / Archived Actively updated

8. Frequently Asked Questions

What is Iconoir, and why is it considered one of the purest open-source icon libraries?

Iconoir is an open-source SVG icon library featuring over 2,020 icons drawn on a 24x24 grid with a consistent 1.5px stroke weight. Unlike many commercial sets that gate essential glyphs behind 'Pro' paywalls, Iconoir is 100% free under the MIT License with no premium tiers, logins, or restricted assets.

What grid and default stroke specifications does Iconoir use?

Iconoir is built on a 24x24 pixel grid with an optical 2px internal padding and a baseline stroke-width of 1.5px. Its stroke-linecap and stroke-linejoin are round by default, creating a warm, modern aesthetic that fits minimalist SaaS and consumer mobile applications.

How do I install and use Iconoir in React and Next.js with tree-shaking?

Install the package with npm install iconoir-react. Import icons as named components, for example: import { Calendar, CheckCircle, Search } from 'iconoir-react'. Modern bundlers (Vite, Webpack, Next.js 15) automatically tree-shake unused icons, keeping your final JavaScript bundle lean.

Does Iconoir support zero-JS CSS mask-image implementation?

Yes. Iconoir provides an official CSS package via npm install iconoir. It maps icons as CSS mask-image stencils. You can render icons purely through CSS classes (e.g., <i class='iconoir-calendar'></i>) and tint them dynamically using the CSS background-color property.

Can I dynamically customize the stroke-width of Iconoir components in React?

Yes. All iconoir-react components accept standard SVG presentation attributes. You can override the default 1.5px stroke weight by passing strokeWidth={2} or strokeWidth={1} directly to the component, or by wrapping your app in the IconoirProvider context.

Where can I search, recolor, and download Iconoir icons?

You can search, filter, and inspect all 2,020 Iconoir icons directly on IconStash at https://iconstash.io/library/iconoir/. IconStash provides instant keyword search, live dark/light canvas preview, and one-click export to clean SVG, PNG, and React JSX components.

Explore All 2,020 Iconoir Icons on IconStash

Search, preview, stroke customize, and export any Iconoir icon directly into clean SVG, PNG, or React components with zero friction.

Browse Iconoir Library