
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
ultimate-icons
Advanced tools
A comprehensive React icon library with 3000+ high-quality SVG icons in three variants: regular, bold, and color
A comprehensive React icon library with 3000+ high-quality SVG icons in three variants: regular, bold, and color.
View all icons in our interactive showcase →
Browse, search, and copy icon names with our beautiful showcase website.
npm install ultimate-icons
import React from 'react';
import { Icon } from 'ultimate-icons';
function MyComponent() {
return (
<div>
<Icon name="ArrowButtonCircleLeft" />
<Icon name="ArrowButtonCircleLeft" type="bold" />
<Icon name="ArrowButtonCircleLeft" type="color" />
</div>
);
}
| Prop | Type | Default | Description |
|---|---|---|---|
name | IconName | required | Name of the icon (PascalCase, e.g., "ArrowButtonCircleLeft") |
type | 'regular' | 'bold' | 'color' | 'regular' | Type/variant of the icon |
color | string | 'currentColor' | Color of the icon (applied to fill and stroke) |
size | number | 24 | Size in pixels (sets both width and height) |
width | number | - | Width in pixels (overrides size) |
height | number | - | Height in pixels (overrides size) |
className | string | - | Additional CSS class |
style | React.CSSProperties | - | Additional inline styles |
onClick | () => void | - | Click handler |
You can control the icon size in three ways:
size prop - Sets both width and height to the same value:<Icon name="ArrowButtonCircleLeft" size={32} />
width and height props - Allows different width and height:<Icon name="ArrowButtonCircleLeft" width={40} height={20} />
width or height, the size prop is ignored:<Icon name="ArrowButtonCircleLeft" size={24} width={40} /> {/* height will be 24, width will be 40 */}
For regular and bold types, you can customize the color:
<Icon name="ArrowButtonCircleLeft" color="red" />
<Icon name="ArrowButtonCircleLeft" color="#3498db" />
<Icon name="ArrowButtonCircleLeft" color="rgb(255, 0, 0)" />
Note: Color customization doesn't apply to color type icons as they have predefined colors.
All icon names use PascalCase format for consistency with React component naming, and trailing numbers are removed for cleaner names:
Arrow Button Circle Left.svg → ArrowButtonCircleLeftArrow Button Right 1.svg → ArrowButtonRight (number removed)Settings Slider Desktop Horizontal.svg → SettingsSliderDesktopHorizontalMusic On Off 1.svg → MusicOnOff (number removed)The TypeScript IconName type provides full auto-completion support, so you'll get suggestions for all available icon names in your IDE.
<Icon
name="ArrowButtonCircleLeft"
onClick={() => console.log('Icon clicked!')}
style={{ cursor: 'pointer' }}
/>
The library provides several utility functions to help you work with icons:
import {
getIconNames,
hasIcon,
getIconVariants,
getIconsByCategory,
getCategories,
searchIcons,
type IconName
} from 'ultimate-icons';
// Get all available icon names
const allIcons = getIconNames(); // IconName[]
// Check if an icon exists
const exists = hasIcon('ArrowButtonCircleLeft'); // boolean
// Get available variants for an icon
const variants = getIconVariants('ArrowButtonCircleLeft'); // ('regular' | 'bold' | 'color')[]
// Get all icons in a specific category
const arrowIcons = getIconsByCategory('Arrows Diagrams'); // IconName[]
// Get all available categories
const categories = getCategories(); // string[]
// Search for icons
const searchResults = searchIcons('arrow'); // IconName[]
The library includes icons from various categories:
Each icon may be available in up to three variants:
The library is fully typed and provides excellent TypeScript support with auto-completion for icon names:
import { Icon, IconProps, IconType, type IconName } from 'ultimate-icons';
// TypeScript will auto-complete icon names
const MyIcon: React.FC<{ variant: IconType }> = ({ variant }) => {
return <Icon name="ArrowButtonCircleLeft" type={variant} />; // Full autocomplete support
};
// Type-safe icon name handling
function renderIcon(iconName: IconName) {
return <Icon name={iconName} />; // iconName is guaranteed to be valid
}
import { Icon, getIconNames } from 'ultimate-icons';
function IconGallery() {
const iconNames = getIconNames();
return (
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))', gap: '16px' }}>
{iconNames.map(name => (
<div key={name} style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
<Icon name={name} size={24} />
<span>{name}</span>
</div>
))}
</div>
);
}
import { Icon, searchIcons } from 'ultimate-icons';
import { useState } from 'react';
function IconPicker() {
const [search, setSearch] = useState('');
const results = searchIcons(search);
return (
<div>
<input
type="text"
placeholder="Search icons..."
value={search}
onChange={(e) => setSearch(e.target.value)}
/>
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(150px, 1fr))', gap: '8px' }}>
{results.slice(0, 50).map(name => (
<div key={name} style={{ padding: '8px', border: '1px solid #ccc', textAlign: 'center' }}>
<Icon name={name} size={32} />
<div style={{ fontSize: '12px', marginTop: '4px' }}>{name}</div>
</div>
))}
</div>
</div>
);
}
MIT License
Contributions are welcome! Please feel free to submit a Pull Request.
FAQs
A comprehensive React icon library with 3000+ high-quality SVG icons in three variants: regular, bold, and color
The npm package ultimate-icons receives a total of 6 weekly downloads. As such, ultimate-icons popularity was classified as not popular.
We found that ultimate-icons demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.