
@web-portfolio/icons
A React icon component backed by 629 bundled SVG icons — programming languages, frameworks, dev tools, social platforms, and everyday UI icons — all through one <Icon /> component instead of a separate import per icon.
It started as the icon set for a personal portfolio site, and grew into something worth publishing on its own: no icon font, no CDN requests at runtime, nothing to load asynchronously. Everything ships inside the package and renders instantly.
Browse the full icon set at icons.getresume.dev — search by name or category, try the color/stroke/size controls on any icon, and copy the exact <Icon /> snippet or the raw SVG straight from the page.
Why this exists
Building a portfolio or dashboard usually means one of two things: pulling in an icon font for a handful of glyphs, or scattering <img src="..."> tags across the codebase pointing at some CDN that may or may not be up when it matters. Neither felt right for something as small as "show the React logo next to the word React." This package is the alternative — <Icon name="react" />, done, and the same component works whether you need a tech-stack badge, a social link icon, or a plain arrow for a carousel button.
A few things it does deliberately
- One component, not 629 imports.
registry[name]does a lookup at render time, so you never end up with import { ReactIcon, DockerIcon, PostgresIcon } from '...'cluttering the top of a file. - Nothing fetched at runtime. The whole registry is bundled at build time and optimized with SVGO, so there is no loading state, no layout shift while an image loads, and it works offline.
- Themeable where it makes sense.
color, stroke, and strokeWidthprops recolor monochrome icons to match your palette; brand marks that are supposed to stay a specific color (the React logo's blue, for instance) are left alone on purpose. - Typed out of the box. No separate
@types/package to remember to install.
Installation
npm install @web-portfolio/icons
pnpm add @web-portfolio/icons
yarn add @web-portfolio/icons
Requires React 18 or later.

