tailwindlabs/heroicons
47.9
Weak · 1 October 2026
515
lines of production code
JavaScript
primary language
2
measurements over time
What this system is
This system is a library of SVG icon components designed for React and Vue applications, offering standardized 16x16, 20x20, and 24x24 icons in solid and outline styles. It provides framework-specific packages that enforce explicit import paths to ensure consistent usage and better tree-shaking. The build pipeline automates the generation of optimized assets and TypeScript declarations, while also managing migration guidance and release processes.
Features
New @heroicons/react package with size-specific imports
A new React package (@heroicons/react) is introduced, allowing users to import icons as React components. The package enforces importing from specific subpaths (e.g., @heroicons/react/24/solid, @heroicons/react/24/outline, @heroicons/react/20/solid, or @heroicons/react/16/solid) rather than the root, providing a clear error message if the root import is used. This structure supports 16x16, 20x20, and 24x24 icon sets in both solid and outline styles.
react · high confidence
New Vue package with explicit import paths
A new \@heroicons/vue\ package has been added, providing Vue components for Heroicons. Users must now import icons from specific subpaths (e.g., \@heroicons/vue/24/solid\, \@heroicons/vue/24/outline\, \@heroicons/vue/20/solid\, or \@heroicons/vue/16/solid\) rather than from the root package; attempting to import directly from the root will throw an error. The package includes an MIT license and documentation explaining the usage of 16x16, 20x20, and 24x24 icon sets.
vue · high confidence
New build and release automation scripts
The project introduces a suite of new scripts to automate the build, release, and verification processes. The new \scripts/build.js\ handles the generation of React and Vue icon components, including TypeScript declarations, ESM/CommonJS formatting, and deprecation warnings. \scripts/release-channel.js\ and \scripts/release-notes.js\ automate npm channel detection and GitHub release note generation based on version strings. Additionally, \scripts/verify-names.js\ ensures consistency of icon files across different style packages (micro, mini, solid, outline), while \scripts/deprecated.js\ maintains the list of deprecated icons.
scripts · high confidence
Behavioural changes
Build system migration to SVGO 3 and standardized icon attributes
The project has upgraded its SVG optimization pipeline to SVGO 3, replacing the previous YAML-based configuration files with new JavaScript module configs for 16, 20, and 24-size outline and solid icon sets. This change standardizes the output of all generated icons by automatically applying \fill="currentColor"\ (or \stroke="currentColor"\ for outline variants), setting \aria-hidden="true"\ for accessibility, and adding a \data-slot="icon"\ attribute to the root SVG element. Additionally, the build process now outputs optimized assets to a dedicated folder, which is reflected in the updated \.gitignore\ rules.
(repo-wide) · high confidence
Improved error messaging for Heroicons v1 to v2 migration
The package now provides clearer guidance when users attempt to import icons using the old v1 path structure. If a user tries to import from \@heroicons/vue/outline/...\ or \@heroicons/vue/solid/...\ while having Heroicons v2 installed, they will receive a specific error message instructing them to install \@heroicons/vue@v1\ to resolve the issue, rather than encountering a generic or confusing failure.
react/solid, vue/solid · high confidence
Dependencies
Heroicons v2.2.0 release with React 19 and Vue 3 support
The Heroicons package has been updated to version 2.2.0, introducing official support for React 19 (via peer dependency \\>= 16 \|\| ^19.0.0-rc\) and Vue 3 (via peer dependency \\>= 3\). This release also upgrades the build tooling, specifically bumping SVGO from version 1.x to 3.0.2, and migrates the lockfile from Yarn to npm (replacing \yarn.lock\ with \package-lock.json\). The \@heroicons/react\ and \@heroicons/vue\ packages now include explicit ESM/CommonJS export maps and are marked as side-effect free to improve tree-shaking and module resolution.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 46 → 48 (+2.0)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 61 → 61 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 57 → 57 (+0.0)
- Readiness 29 → 30 (+1.0)
- Security 73 → 78 (+5.4)
- Performance 100 (new)
Resolved (3)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
New (1)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (the committed lockfile resolved no direct production dependency)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
tailwindlabs/heroicons was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 616b7a4dbbf3d011760af8066262cd5c6b3868f3 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.