SF Symbols is a library of over 7,000 symbols provided by Apple for use in our Mac and iOS apps. It is also a framework for creating and using your own symbols, so your custom symbols can be used in the same way as Apple’s.
An SF Symbol is a vector glyph, with various attached annotations that let it take advantage of the features of SF Symbols. These features include:
Most of Apple’s provided symbols support most of these features, at least where they make sense. For custom symbols, you don’t have to support all of these, although you can if you want!
Apple provides a Mac app (also called SF Symbols) for adding the annotations that support these features.
The SF Symbols app is not a vector editor. So the usual workflow for making a symbol is:


There are some real friction points with Apple’s workflow. Having to export and import back-and-forth between SF Symbols and your vector editor. Converting all your strokes to outlined paths, and then being stuck if you want to tweak a line width somewhere. Doing your vector editing without seeing the composited symbol, so having to ‘predict’ how different parts will erase and stack. Having to manually ensure the different weights match up in a way that supports interpolation.
McKinley is designed to make this easier. McKinley combines vector editing and SF Symbol annotation in the same app. In particular, the editable symbol weights are not completely separate vectors in McKinley, but rather they’re different views on the same objects. The idea is that they cannot diverge in structure! (Or, to be fair, they typically cannot. There are a few situations in which McKinley cannot keep things interpolatable. But if that happens, you get a nice warning icon, rather than finding out later when you try to use the symbol.)
In McKinley, your strokes stay as strokes, and you can give them a different width per symbol weight. I’m calling attention to this one because it was my main annoyance with Apple’s workflow.
McKinley is a self-contained way of making and editing SF Symbols. Unless you need one of the few functions we don’t support yet, you can build and preview your symbol in McKinley and export or sync it straight into your Xcode project.