Ship an icon in 60 seconds.
One install, the same names across React, Vue, SVG and the webfont. Everything inherits currentColor and respects the weight and corner you pick.
Install
Add the package with your favourite manager. It ships ESM, is fully typed, and has zero runtime dependencies.
# npm npm i stroke-icons # pnpm pnpm add stroke-icons # yarn yarn add stroke-icons
React
Import only the icons you use — the package is tree-shakeable, so your bundle stays tiny. Every icon accepts size, weight, corner and color.
import { Rocket, Heart, Compass } from 'stroke-icons/react' export default function Toolbar() { return ( <div className="toolbar"> <Rocket size={24} weight={1.75} /> <Heart size={24} color="#FF7A6B" /> <Compass corner="sharp" /> </div> ) }
Vue
The Vue 3 build mirrors the React API exactly, with the same names and props.
<script setup> import { Rocket, Heart } from 'stroke-icons/vue' </script> <template> <Rocket :size="24" :weight="1.75" /> <Heart color="currentColor" /> </template>
Raw SVG
Prefer no dependency at all? Copy the SVG straight from the library. What you copy is byte-for-byte what the packages output at the same settings.
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"> <path d="M14.5 4.5C18 5 19 9 18.5 12.5..." /> </svg>
Webfont
For legacy stacks or email-safe markup, import the font once and reference icons by class name.
/* import once */ @import 'stroke-icons/font.css'; <!-- then use anywhere --> <i class="si si-rocket"></i> <i class="si si-heart" style="font-size:24px;color:#38E0D6"></i>
Props
Every component icon supports the same four props.
| Prop | Type | Default | Description |
|---|---|---|---|
| size | number | string | 24 | Width and height in pixels. |
| weight | number | 1.75 | Stroke width, from 1.0 (hairline) to 2.5 (bold). |
| corner | 'round' | 'sharp' | 'round' | Sets stroke linecap and linejoin. |
| color | string | 'currentColor' | Any CSS color; inherits text color by default. |
Theming
Because every icon defaults to currentColor, theming is just CSS — set the text color on a parent and the icons follow. Dark mode needs no extra work.
/* icons inherit text color via currentColor */ .toolbar { color: var(--text); } /* dark mode just works */ @media (prefers-color-scheme: dark) { :root { --text: #F2EFE9; } }
Changelog
A new release ships most weeks. Pro and Team licenses include every future update.
| Version | Date | Notes |
|---|---|---|
| v1.4.0 | June 2026 | Added 24 nature icons and a sharp-corner variant across the whole set. |
| v1.3.0 | May 2026 | New Vue 3 package, typed props, and an icon webfont build. |
| v1.2.0 | April 2026 | Variable stroke weight (1.0–2.5) shipped to React and SVG exports. |
| v1.1.0 | March 2026 | Figma library published with names matched to the code packages. |
| v1.0.0 | February 2026 | First public release — 400 core icons on a 24px grid. |