Skip to content
CAI
Software that uses CAICheck a score

tailwindlabs/heroicons

47.9

Weak · 1 October 2026

515

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.