Apple ships SFSymbols as hand-typed name strings — no autocomplete, no compiler check, silent blank icons in production. SFSymbolsKit turns every symbol into a typed Swift property. Strictly better, by construction.
Apple's UIImage(systemName:) and SwiftUI's Image(systemName:) take a String. The type system can't tell a real symbol from a typo, so a mistake isn't a build error — it's a blank icon a user finds for you. SFSymbolsKit replaces every string with a compiler-checked property.
UIImage(systemName: "plus.app") — a hand-typed string, no spell-check. Apple renames it? Silent failure. QA might catch it.
UIImage.SFSymbols.plusApp — autocompleted in Xcode, refactor-safe, and physically unable to compile if the symbol is wrong.
Generated from Apple's full catalog. New symbols each OS release arrive as typed properties on a dependency bump — no hand-maintained list.
A typed String for any systemName argument, a UIImage for UIKit, an NSImage for AppKit. All autocompleted. None breakable by a typo.
// SwiftUI — typed, autocompleted, compile-checked Image(systemName: String.SFSymbols.plusApp) // UIKit — a configured UIImage, no systemName: detour let icon = UIImage.SFSymbols.plusApp // AppKit — same ergonomics, accessibility auto-set let ns = NSImage.SFSymbols.plusApp // CaseIterable — every symbol, for pickers and galleries SFSymbol.allCases.forEach { Image(uiImage: $0.image) }
The catalog is sourced once: open Apple's SF Symbols 7.2 app, copy the full name list, paste it into SFSymbols.txt — 7,007 verbatim strings, no retyping. From that file a Python script then generates every String, UIImage, and NSImage extension and the SFSymbol enum, deterministically. A human transcribing 7,007 names would introduce typos in dozens; pasting from the source introduces none, and the generator introduces none. See how it's built →
No setup. No transitive dependencies. The next time you reach for systemName:, reach for a typed property instead.
dependencies: [ .package(url: "https://github.com/WikipediaBrown/SFSymbolsKit.git", from: "0.1.26") ]
Type-safe SFSymbols. Six Apple platforms. Zero dependencies. MIT. Open source on GitHub.