How to find all available images for ImagesystemName
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.
Introduction
Image(systemName:) in SwiftUI renders symbols from Apple's SF Symbols library. The confusing part is that the valid names do not live in your project as image files, so developers often ask where the full list comes from and how to know whether a symbol is available on the current OS. The practical answer is to browse the catalog in Apple's SF Symbols app and then use code to validate or fall back for the names you actually ship.
Where the Symbol Names Come From
Apple's symbol images are identified by string names such as house.fill, bolt.circle, and wifi.exclamationmark. The authoritative catalog is the SF Symbols app that Apple provides for macOS. Apple's UIImage(systemName:...) documentation explicitly points developers to the SF Symbols app to look up symbol names.
That app is useful because it shows more than the raw name:
- symbol variants such as filled or slashed versions
- rendering support such as monochrome, hierarchical, palette, or multicolor
- platform and OS availability
- categories for browsing instead of memorizing strings
In other words, if you want "all available images," the place to browse them is the SF Symbols app, not a SwiftUI runtime API.
Using Image(systemName:) in SwiftUI
Once you know the symbol name, using it is straightforward:
Because these are symbols rather than bitmap assets, they scale with text, adapt to weights, and work well inside controls such as Label, Button, and ToolbarItem.
Checking Availability and Falling Back
The catalog changes over time, and some symbols are only available on newer OS releases. SwiftUI does not give you a built-in method that enumerates the entire symbol library for you. In practice, you keep a curated set of names and validate them when necessary.
This helper checks whether the current device can load a symbol and falls back if it cannot:
That pattern is especially useful when:
- you support more than one iOS version
- design picked a newer symbol and you need a graceful fallback
- you are building an in-app picker from your own approved list
If you want to show users a searchable symbol palette inside your app, create your own array of allowed names rather than trying to discover the whole system catalog dynamically.
This does not discover every possible SF Symbol. It validates a list you provide, which is the safer pattern for production code.
Choosing the Right Symbol
The technical part is only half the job. You also need to choose symbols that communicate clearly. Prefer familiar symbols for common actions and avoid treating every noun as an icon problem. If users have to guess what the symbol means, pair it with text using Label.
Also pay attention to rendering. A symbol that looks great in monochrome may lose clarity in palette mode or at small sizes. The SF Symbols app is helpful here because it lets you preview weights, scales, and rendering modes before you commit to a name in code.
Common Pitfalls
- Expecting a runtime API to dump the full symbol list. In practice, developers browse the SF Symbols app and store the names they care about.
- Using symbols that are newer than the minimum OS version. Always check availability and keep a fallback.
- Typos in symbol names.
Image(systemName:)fails silently enough that a misspelling can look like a layout bug. - Over-customizing with fixed frames before checking legibility. Symbols are designed to work with text metrics first.
- Assuming all symbols support the same rendering modes. Some look better in palette or multicolor, while others are intended for monochrome use.
Summary
- The complete catalog for
Image(systemName:)comes from Apple's SF Symbols app. - Symbol names are strings such as
house.fillandpaperplane. - Use
Image(systemName:)directly once you know the name. - For production apps, validate preferred names and provide fallbacks for older OS versions.
- If you need an in-app picker, maintain your own curated list instead of trying to enumerate every system symbol dynamically.
Related reading
- How to find index of list item in Swift?
- How to find NSDocumentDirectory in Swift?
- How to find NSDocumentDirectory in Swift?
- How to find out what profile was used for building .ipa file?
- How to find topmost view controller on iOS
- How to fix android.app.RemoteServiceException Bad notification posted from package Couldn't create icon StatusBarIcon
- How to fix App Store Connect Operation ERROR ITMS-90771
- How to fix Capturing 'block' strongly in this block is likely to lead to a retain cycle
.png&w=3840&q=75)
Tackling System Design Interview Problems
A short course that equips you with the skills to approach system design interviews methodically.
Start the free courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.