heroicons

Hand-crafted MIT-licensed SVG icons from the makers of Tailwind CSS, in outline and solid styles with first-party React and Vue components.

Library
npm
v2.2.0
23,781stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
52/100Fair
Development Activity12
Maintenance32
Community64
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
66/100Good
Architecture68
Code Quality62
Innovation45
Learning Curve90

Heroicons is a free, open-source icon set built by the Tailwind CSS team. It ships as plain SVG source you can copy straight into HTML, plus first-party framework packages (@heroicons/react, @heroicons/vue) so each icon can be dropped in as a component instead of hand-copied markup.

The library covers four icon families - 24x24 outline, 24x24 solid, 20x20 solid (“mini”), and 16x16 solid (“micro”) - so the same glyph set scales cleanly across page headers, inline text, and dense UI like table rows or badges. Every icon inherits color from CSS via currentColor, making them trivial to theme alongside Tailwind’s utility classes or any other styling approach.

The project intentionally keeps its scope narrow: the maintainers only accept bug-fix contributions, not new icons or new framework targets, which keeps the set consistent and the release cadence predictable rather than sprawling into a community-graveyard of half-supported variants.

What You Get

  • Four ready-made icon families - 24x24 outline, 24x24 solid, 20x20 solid, and 16x16 solid - covering headers down to dense inline UI
  • First-party @heroicons/react and @heroicons/vue packages with per-icon named exports (e.g. BeakerIcon) instead of a single monolithic import
  • Plain SVG source for any icon, copy-pasteable directly into HTML with no build step or package install required
  • Icons that inherit color via currentColor, so they restyle automatically with Tailwind utility classes or any CSS color rule
  • A consistent naming and export convention (upper camel case, always suffixed Icon) across every size and framework package
  • Deprecated-icon handling baked into the build so renamed/retired icons keep working with a @deprecated warning instead of breaking silently

Common Use Cases

  • Dropping icons into a Tailwind CSS project’s buttons, nav bars, and form fields with matching visual language
  • Building a React or Vue admin dashboard that needs a consistent, tree-shakeable icon set instead of a full icon-font
  • Using the 16px/20px “micro”/“mini” solid styles for dense UI like table actions, badges, and inline status indicators
  • Copying raw SVG markup into a static site or email template where installing an npm package isn’t practical

Under The Hood

Architecture Heroicons isn’t a runtime library with application logic - it’s a source-to-package build pipeline. Hand-drawn SVGs live under src/{16,20,24}/{solid,outline}/, and scripts/build.js walks that source tree, optimizes each file with SVGO, and emits three parallel outputs: optimized raw SVGs (optimized/, mirrored into the root 16/, 20/, 24/ folders published as the bare heroicons npm package), React components (react/, transformed via @svgr/core and Babel into named exports like BeakerIcon), and Vue single-file components (vue/, compiled via @vue/compiler-dom). Each framework target ships as its own scoped package (@heroicons/react, @heroicons/vue) with its own package.json and exports map, so what breaks if the core abstraction changes is the shared naming convention enforced by scripts/verify-names.js, not any shared runtime code.

Tech Stack The toolchain is pure Node.js build tooling with no runtime dependencies in the published packages themselves: SVGO 3 for SVG optimization/minification (with per-size svgo.*.mjs configs), @svgr/core plus @babel/core and @babel/plugin-transform-react-jsx to turn SVG into React components, @vue/compiler-dom to compile the same SVGs into Vue render functions, camelcase for deriving component names from filenames, and prettier/rimraf for output formatting and cleanup between builds. CI (.github/workflows/CI.yml) runs on GitHub Actions against Node 18, installing dependencies and running npm run build as its only check - there’s no separate lint or test job.

Code Quality There is no conventional unit test suite; correctness is instead enforced structurally by scripts/verify-names.js, which diffs icon filenames across all four style directories (micro, mini, solid, outline) and fails the build if any style is missing an icon the others have, with an explicit allowance for icons deprecated out of the micro set. Generated framework code is auto-formatted (Prettier config in prettier.config.js) rather than hand-styled, and the packages ship hand-maintained .d.ts type declarations per icon/size via the exports map in each framework’s package.json. Contribution scope is deliberately narrow - the maintainers state they only accept bug-fix PRs, not new icons or new framework targets - which keeps the codebase small and consistent rather than sprawling.

What Makes It Unique Heroicons’ distinguishing choice isn’t a novel rendering technique - SVG-to-component generation is a well-trodden pattern - but its four-tier size/style system (16px and 20px solid “micro”/“mini” variants alongside the standard 24px outline/solid pair) purpose-built for dense UI contexts like table rows and inline badges, plus being maintained by the Tailwind CSS team itself, which keeps its currentColor theming and naming conventions tightly aligned with how Tailwind projects already style things.

Used by 35 apps in this directory

Python
62%
MIT

AutoGen

AI Development · Automation

60,839

Build autonomous and human-in-the-loop multi-agent AI systems with a layered, event-driven Python and .NET framework pioneered at Microsoft Research.

View details
56
Repo Health
78
Technical
73
Dependency
Built with
Python62%
C#25%
TypeScript12%
Updated 4 months ago
TypeScript
99%
Apache 2.0

Bubble Lab

Automation · AI Development

1,094

Open-core workflow engine for building AI-powered automations in TypeScript that run natively inside Slack — no context switching required.

View details
36
Repo Health
78
Technical
71
Dependency
Built with
TypeScript99%
Updated 4 months ago
TypeScript
84%
Apache 2.0

Continue

Developer Tools · AI Development · AI Code Assistants

35,808

Open-source coding agent for VS Code, JetBrains, and CLI with support for 30+ LLM providers.

View details
81
Repo Health
88
Technical
62
Dependency
Built with
TypeScript84%
Updated yesterday
TypeScript
45%
Other

Convex Backend

Developer Tools · Databases

12,494

Open-source reactive database that lets developers build live-updating apps with pure TypeScript, strong consistency, and real-time subscriptions—no separate API layer required.

View details
87
Repo Health
82
Technical
68
Dependency
Built with
TypeScript45%
Rust43%
Updated 2 days ago
TypeScript
45%
Other

Convex Backend

Developer Tools · Databases

12,494

Open-source reactive database that lets developers build live-updating apps with pure TypeScript, strong consistency, and real-time subscriptions—no separate API layer required.

View details
87
Repo Health
82
Technical
68
Dependency
Built with
TypeScript45%
Rust43%
Updated 2 days ago
PHP
48%
AGPL 3.0

Crater

Invoicing Finance

8,344

Open source invoicing and billing platform for freelancers and small businesses — create estimates, track expenses, accept Stripe payments, and run recurring invoices from your own server.

View details
54
Repo Health
68
Technical
68
Dependency
Built with
PHP48%
Vue40%
Updated 2 years ago
TypeScript
50%
Other

Dify

No Code Platforms · AI Development · Developer Tools

154,649

Visual LLM workflow platform with RAG pipelines, agent capabilities, and model management for building production AI applications.

View details
92
Repo Health
85
Technical
67
Dependency
Built with
TypeScript50%
Python46%
Updated yesterday
Rust
87%
MIT

fabro

Developer Tools · Devops

1,571

Define AI agent workflows as code graphs, route tasks across any LLM, and intervene only where it matters.

View details
81
Repo Health
83
Technical
70
Dependency
Built with
Rust87%
Updated yesterday
Vue
54%
GPL 3.0

Financial Freedom

Invoicing Finance

2,923

Own your financial data with a self-hosted, privacy-first budgeting app that replaces Mint and YNAB.

View details
48
Repo Health
67
Technical
74
Dependency
Built with
Vue54%
PHP44%
Updated 4 months ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search