Untitled UI Icons as SF Symbols for Swift — 1173 stroke-based icons converted via SwiftDraw.
All icons are available as type-safe Swift properties with full support for SwiftUI, UIKit, and AppKit.
| Platform | Minimum Version |
|---|---|
| iOS | 14.0 |
| macOS | 11.0 |
| watchOS | 7.0 |
| tvOS | 14.0 |
| visionOS | 1.0 |
Add the package to your project in Xcode:
- Go to File → Add Package Dependencies...
- Enter the repository URL:
https://github.com/lcandy2/UntitledUIIcons.git
Or add it to your Package.swift:
dependencies: [
.package(url: "https://github.com/lcandy2/UntitledUIIcons.git", from: "1.0.0")
]Then add "UntitledUIIcons" to the dependencies of your target.
If you use Claude Code, you can install the icon discovery skill:
npx skills add lcandy2/UntitledUIIconsThis helps Claude find and suggest the right icons when you describe what you need.
import UntitledUIIcons
// Image
Image(untitledUI: .heart)
Image(untitledUI: .alarm_clock)
// Label (iOS 17+ / macOS 14+)
Label("Search", untitledUI: .search_lg)
Label("Favorites", untitledUI: .heart)import UntitledUIIcons
let heartImage = UIImage(untitledUI: .heart)
let searchImage = UIImage(untitledUI: .search_lg)import UntitledUIIcons
let heartImage = NSImage(untitledUI: .heart)
let searchImage = NSImage(untitledUI: .search_lg)Icons use snake_case Swift property names mapped from the original PascalCase Untitled UI names:
| Untitled UI Name | Swift Property | SF Symbol Identifier |
|---|---|---|
Heart |
.heart |
heart |
AlarmClock |
.alarm_clock |
alarm-clock |
SearchLg |
.search_lg |
search-lg |
BarChart01 |
.bar_chart01 |
bar-chart01 |
The library includes 1173 icons across a wide range of categories:
| Category | Examples | Count |
|---|---|---|
| Arrows & Navigation | arrow_up, chevron_down, corner_up_right |
100+ |
| Communication | mail01, message_chat_circle, phone_call01 |
60+ |
| Media | play, pause_circle, volume_max, music_note01 |
40+ |
| Files & Folders | file01, folder, clipboard_check |
70+ |
| Users | user01, users_plus, face_smile |
50+ |
| Charts & Data | bar_chart01, line_chart_up01, pie_chart01 |
50+ |
| Alerts & Status | alert_circle, check_circle, info_square |
30+ |
| Weather | cloud01, sun, moon01, snowflake01 |
30+ |
| Finance | bank, coins01, credit_card01, currency_dollar |
50+ |
| Shapes | circle, square, triangle, hexagon01, star01 |
30+ |
| Editor | bold01, italic01, underline01, strikethrough01 |
40+ |
| Development | code01, terminal, git_branch01, brackets |
20+ |
| General | heart, home01, settings01, search_lg, bell01 |
500+ |
For the complete list of all 1173 icons, see UntitledUIIcon+All.swift.
Importing UntitledUIIcons includes all 1173 symbols in your app bundle (Xcode does not tree-shake asset catalogs). The compiled asset catalog is estimated at 3–5 MB — comparable to other icon libraries like PhosphorSymbols and Iconoir-Swift.
If you only need a few icons and want to minimize bundle size, you can copy individual .symbolset folders from Symbols/ directly into your project's .xcassets catalog — no need to add the full package.
The conversion pipeline extracts SVG paths from the @untitledui/icons React components and converts them to SF Symbol format:
- Extract — Parse SVG markup from the npm package's compiled React components
- Convert — Transform each SVG to SF Symbol format via SwiftDraw (
--format sfsymbol) - Catalog — Generate an
.xcassetsasset catalog with.symbolsetentries - Codegen — Generate
UntitledUIIcon+All.swiftwith type-safe static properties
To re-run the conversion (e.g., after an upstream update):
# Install dependencies
brew install swiftdraw
# Run conversion
./update_symbols.shOr with options:
# Point to a local copy of the npm package
node Scripts/convert.mjs --package-dir /path/to/untitledui-icons
# Custom output paths
node Scripts/convert.mjs --output Sources/UntitledUIIcons --symbols SymbolsA GitHub Actions workflow (.github/workflows/convert.yml) automates updates:
- Runs weekly (Monday) and on manual dispatch
- Downloads the latest
@untitledui/iconsfrom npm - Converts all icons and runs
swift build+swift test - Creates a tagged release if changes are detected
- Untitled UI — Original icon design
- SwiftDraw — SVG to SF Symbol conversion
- PhosphorSymbols — Inspiration for the conversion pipeline
The conversion tooling is MIT licensed. Untitled UI Icons are subject to their own license.