Article

Creating Custom SF Symbols

Paul Himes

January 6, 2025

The SF Symbols library is a great way for iOS developers to add icons to their user interfaces. It supports dynamic scaling, tinting, custom colors, animation, and includes more than 6,000 built-in symbols to cover a wide variety of use cases. It’s also the only way to add symbol images to the new Control Center widgets in iOS 18.

But what if your app needs a symbol that can’t be found in the default collection? Maybe your brand already has a set of custom icons. Let’s see how we can extend SF Symbols to get all these benefits with our own custom artwork.

Step 1: Download the SF Symbols App

We’ll start by downloading the SF Symbols app from Apple’s developer website . This app lets you browse the complete library of built-in symbols as well as manage and configure your own collections of custom symbols.

The SF Symbols app displaying a grid of built-in symbols.

Step 2: Export a Template

To start building a custom symbol, we need to export a template from one of the existing symbols. It sometimes helps to choose a symbol that resembles the artwork you wish to create. If you already have complete vector art, any symbol will do.

Select the symbol and choose File > Export Template from the menu bar.

The template export dialog showing a grid of symbols at various weights and sizes. The symbols for ultralight small, regular small, and black small are highlighted.

Notice three of the template symbols are highlighted. We will always design three versions of our artwork for ultralight small, regular small, and black small font weights. The system will use these three images to automatically create the remaining weights and sizes.

Step 3: Edit Your Artwork

Next, we’ll open the exported SVG file in a vector graphics editor such as Sketch or Figma. We’ll use Sketch in this tutorial.

The exported template open in Sketch.

Here we see the template file with copies of the symbol for Ultralight-S, Regular-S, and Black-S font weights. Each copy contains a single shape with one or more paths. We can now edit the paths to produce our custom artwork.

Sketch with updated ultralight artwork centered in the work area.

Here’s our final design for the ultralight font weight. We updated the shape and moved the horizontal layout guides to add appropriate padding to the left and right of our symbol. We’ve also made corresponding edits to the regular and black weight shapes.

Step 4: Import Into SF Symbols

Now we can bring our updated design back to the SF Symbols app.

In the menu bar, select File > Export. If given the choice, select Export Canvas.

The export selection dialog with Export Canvas highlighted.

From the Format dropdown menu, choose SVG.

The format dropdown menu is open and SVG is highlighted.

Then Export Selected… to save the modified SVG file.

The export selected button on the bottom right of the window is highlighted.

Back in the SF Symbols app, drag your saved file into the Custom Symbols library.

An SVG file is being dragged into the custom library collection in SF Symbols.

At this point, the app will check our file for errors. One common issue occurs when SF Symbols is unable to interpolate all the various weights and sizes of our custom symbol based on the artwork we’ve provided.

An import error dialog appears in the center of the window.

This points out a tricky requirement for SF Symbols. To generate the remaining sizes, the three versions of our artwork must be nearly identical. Each weight of our shape should have the same number of paths. Each path should have the same number of control points. Even the ordering and type of each control point should match the corresponding point in each weight of our symbol. It can take time and several round trips between Sketch and SF Symbols to spot and fix the differences.

Once the file is successfully imported into SF Symbols, check the various generated font weights to be sure that the interpolation is happening the way you expect.

The font weight drop down menu is open and medium is highlighted.

Step 5: Configure Your Symbol

Within SF Symbols, we have many options for configuring our custom symbols. A good place to start is to define layers for the paths of your shape. A layer is a collection of subpaths that can be drawn, colored, or animated separately from other subpaths.

Select View > Inspectors > Rendering Inspector from the menu bar.

In the Rendering Inspector, use the add button to add layers. Then expand the layers and choose which subpaths will belong to each one.

The layer editor is open and multiple configured layers are visible.

Use the Rendering drop-down menu to preview and choose default colors for your layers in each of the four rendering modes.

The multicolor rendering mode settings are shown. The custom symbol has applied custom colors to each layer.

Finally, open the Animation Inspector under View > Inspectors > Animation Inspector to preview your symbol with each available animation effect. The settings here are for demonstration purposes only. Your symbol’s actual animations will be determined by the code in your app.

The custom symbol is animating layer-by-layer with a bounce animation.

Step 6: Bring Your Symbol to Xcode

When you’re happy with your settings, it’s time to bring your custom symbol into your Xcode project.

Select the symbol and go to File > Export Symbol.

The symbol export dialog shows a grid of various weights and sizes for the custom symbol. The variants for ultralight small, regular small, and black small are highlighted.

In Xcode, find your app’s asset catalog and drag in your final symbol SVG file to create a new Symbol Image Set.

The Xcode assert catalog is open and a new symbol icon set called Livefront has been imported.

You can now use your symbol in all the locations that support SF Symbols including images, control labels, and inline text.

Sample code for various uses of SF Symbols is shown next to an Xcode preview demonstrating images, control labels, and inline symbols.

Creating custom SF Symbols unlocks new opportunities to integrate unique, branded artwork into your app. Experiment with different designs, layer styles, and animations to craft symbols that make your interface stand out.

Thanks for reading!

Updated for Xcode 16.1 and SF Symbols 6.