PodSearch

Under the Radar

232: SF Symbols

 

00:00:00 ◼   ► Welcome to Under the Radar, a show about independent iOS app development.

00:00:04 ◼   ► I'm Marco Arment.

00:00:05 ◼   ► And I'm David Smith.

00:00:06 ◼   ► Under the Radar is never longer than 30 minutes, so let's get started.

00:00:09 ◼   ► So a while back we had an episode, I forget what we titled it, but it was something like, you know,

00:00:14 ◼   ► "designed by programmer" or something like that.

00:00:16 ◼   ► Because, you know, as we all know with our apps, we frequently need some kind of icon to show something,

00:00:25 ◼   ► or to represent something, or the icon for our app even.

00:00:28 ◼   ► And so icons have always been an area where, you know, as a programmer first,

00:00:34 ◼   ► and a very, very, very distant wannabe designer very, very, very far second,

00:00:39 ◼   ► I have always struggled with graphic design in many ways.

00:00:44 ◼   ► I'm not a natural graphic designer.

00:00:47 ◼   ► I have no training in that area.

00:00:50 ◼   ► But making apps, you frequently need some kind of graphic design.

00:00:53 ◼   ► And in particular, icons have always been an area where I've been,

00:00:59 ◼   ► I've never been comfortable designing my own, like, app icon for Springboard.

00:01:04 ◼   ► But in app icons, I have gone through a lot of different phases, levels of capability,

00:01:13 ◼   ► styles of how I design in app icons, or what I even use for them.

00:01:18 ◼   ► And I think it's interesting to talk about this because over time,

00:01:23 ◼   ► we've gotten more and more options for, like, stock design resources.

00:01:27 ◼   ► You know, back in the early days, we had, like, the UI bar button system items,

00:01:33 ◼   ► and whatever, you know, 20, whatever it was, 12, like, it wasn't even that many,

00:01:37 ◼   ► whatever it was that we could choose, we could have, well, you could have, like,

00:01:40 ◼   ► the system share icon or the system refresh.

00:01:42 ◼   ► A few others, you know, cancel maybe.

00:01:44 ◼   ► But actually, that cancel was never one.

00:01:46 ◼   ► But, you know, you had, like, the system buttons that were built in,

00:01:49 ◼   ► and that was about it for stock design that the platform would provide you.

00:01:54 ◼   ► And so we had to go off on our own.

00:01:57 ◼   ► And back then, mostly, you know, everything was bitmap icons back then,

00:02:01 ◼   ► and mostly what you would do is hire a designer or maybe buy an icon set from somebody

00:02:06 ◼   ► and hope that would work for you.

00:02:09 ◼   ► And the world has moved in many different directions since then,

00:02:14 ◼   ► and now we have way more options.

00:02:17 ◼   ► We talked, back when we first covered this topic, we talked about how

00:02:22 ◼   ► I've been doing a lot of programmatic icon drawing.

00:02:25 ◼   ► I've designed a lot of my icons using the app called Paint Code for the Mac,

00:02:30 ◼   ► which is basically a programmer's vector drawing app that outputs, among other formats,

00:02:34 ◼   ► it can output source code that can draw your stuff using the Quartz APIs.

00:02:38 ◼   ► And I have a lot of success with that.

00:02:43 ◼   ► But now, since then, we've had the rise of a lot more stock design stuff built into the OS,

00:02:51 ◼   ► in the forms of system colors and SF symbols.

00:02:57 ◼   ► And I want to talk about that this week, because, you know, this...

00:03:02 ◼   ► I'm kind of in the middle of a pretty significant overcast reskinning and redesign,

00:03:08 ◼   ► and I've decided to lean heavily into SF symbols and some of the system colors.

00:03:14 ◼   ► And what I've found, I think, might be useful to people.

00:03:20 ◼   ► And I'm leaning more towards it as time goes on,

00:03:23 ◼   ► but I'm still kind of holding on to a lot of my dynamic paint code icons as well.

00:03:27 ◼   ► So I wanted to cover that today.

00:03:29 ◼   ► So, Dave, I'm curious, what has your journey been like in this area?

00:03:34 ◼   ► Yeah, I mean, I feel like any iOS developer who's been around a long time

00:03:38 ◼   ► has gone through all these different phases for icons.

00:03:42 ◼   ► And I will say, at first, it is amazing how universal icons are in app design.

00:03:49 ◼   ► That it's like fundamentally... I don't think I've ever shipped an app that didn't include this kind of icon inside of it.

00:03:55 ◼   ► And I think it's just fundamental to the way in which we communicate functionality to our users.

00:04:00 ◼   ► And I guess the alternative would have used all text-based buttons and all text-based descriptions,

00:04:06 ◼   ► but that's problematic in a variety of ways in terms of localization,

00:04:11 ◼   ► in terms of ease of scanning and understanding,

00:04:14 ◼   ► in terms of having consistency between other apps and between users' expectations for what a particular thing does.

00:04:20 ◼   ► And so icons is sort of the natural and logical end point that we've sort of settled on as a community

00:04:26 ◼   ► and as a platform around how to communicate that this thing is going to do something,

00:04:31 ◼   ► or identifying what is this feature, what's going to happen when you push on it.

00:04:37 ◼   ► And some of those, there are a few that Apple in the old days would include inside of iOS,

00:04:43 ◼   ► and those were useful to some degree, but I always found what was complicated there

00:04:47 ◼   ► was they gave you just enough if you did almost nothing.

00:04:51 ◼   ► But as soon as you needed something different, then you're in this weird place of

00:04:54 ◼   ► having some that are system and some that aren't leads to a lot of issues with consistency and graphic appearance.

00:04:59 ◼   ► And so inevitably what happened is I then went on, I guess, the icon set buying spree

00:05:07 ◼   ► that I feel like any early app developers probably went on

00:05:14 ◼   ► where everybody kept coming out with these icon packs that you could buy and you could use in your app.

00:05:18 ◼   ► And there was Symbolicons was one I used for a long time.

00:05:21 ◼   ► That's a good one.

00:05:26 ◼   ► It's like Parakeet primaries, which is like Louis Mantilla.

00:05:27 ◼   ► He did an icon set that I used for a while.

00:05:31 ◼   ► And there was, was it Glyphish?

00:05:35 ◼   ► There were so many.

00:05:37 ◼   ► Somewhere I have a folder that's just full of these icons,

00:05:40 ◼   ► in a folder on my computer.

00:05:44 ◼   ► And they sort of help, but they also ran into all kinds of other problems

00:05:46 ◼   ► where I had icon sets and then Apple added 2x displays.

00:05:51 ◼   ► And now I need to either rebuy or hope that the designer is going to update those icon sets

00:05:56 ◼   ► to have 2x icons.

00:06:01 ◼   ► Then there was 3x, which was the same problem again.

00:06:03 ◼   ► Then some icon designers started to go down the road of doing,

00:06:07 ◼   ► giving you SVG or something that's more flexible, which sort of works,

00:06:10 ◼   ► but is also complicated in other ways because if you,

00:06:13 ◼   ► the nature of rendering something is ideally you don't want weird image artifacts

00:06:18 ◼   ► or problems if you are rendering it slightly off size.

00:06:24 ◼   ► And so you end up with these kind of,

00:06:28 ◼   ► there's a lot of complexity in things that I would always run into.

00:06:29 ◼   ► And if you were using statically rendered icon sets,

00:06:32 ◼   ► then you always have, you're like,

00:06:35 ◼   ► "Well, it's limited to whatever size it came in to some degree."

00:06:37 ◼   ► Or you're resizing it yourself.

00:06:39 ◼   ► And it was always a bit complicated.

00:06:38 ◼   ► And then I went very briefly down the road you're talking about with PaintCode,

00:06:43 ◼   ► where I think I've made two or three icons that way.

00:06:47 ◼   ► And for me, it was always the last resort.

00:06:50 ◼   ► There's something in it in an icon that I need or I need to change.

00:06:53 ◼   ► It's just something that I can't quite manage, and so I would do it in PaintCode.

00:06:57 ◼   ► But I, just from a graphic and design perspective, really struggle there.

00:07:02 ◼   ► And so it was never something that I went down very far.

00:07:05 ◼   ► And then Apple added SF Symbols.

00:07:10 ◼   ► I guess this was three releases ago?

00:07:13 ◼   ► I think it sounds about right.

00:07:15 ◼   ► And it's been really interesting to see this evolve,

00:07:16 ◼   ► both in terms of Apple has added a tremendous variety of icon sets to this.

00:07:21 ◼   ► I think there are still things that I run into where they don't have an option for,

00:07:26 ◼   ► but the number of those is getting smaller and smaller.

00:07:30 ◼   ► And that's always just one of these problems with all these icon sets.

00:07:33 ◼   ► If there's some very specific thing that you want,

00:07:38 ◼   ► and your icon set doesn't have it,

00:07:41 ◼   ► or if SF Symbols doesn't have it,

00:07:42 ◼   ► you very quickly run into this wall where it's like, "What do I do?"

00:07:44 ◼   ► But they've done a great job of expanding it out.

00:07:47 ◼   ► And the thing that I've been so impressed with SF Symbols

00:07:50 ◼   ► and why I now,

00:07:53 ◼   ► it's like sometimes I feel like I'm changing my design

00:07:54 ◼   ► to accommodate the SF Symbol offerings.

00:07:58 ◼   ► Where I will move things or change things or structure things

00:07:59 ◼   ► such that I can use SF Symbols

00:08:04 ◼   ► rather than having to come up with my own icon.

00:08:06 ◼   ► Because it just works so well in the system.

00:08:08 ◼   ► And especially with SwiftUI,

00:08:12 ◼   ► which is almost all of what I'm building with now.

00:08:13 ◼   ► If you use SF Symbols,

00:08:16 ◼   ► they fit in perfectly in terms of the line weights

00:08:17 ◼   ► and the aesthetics of them,

00:08:21 ◼   ► in terms of getting the baseline right.

00:08:23 ◼   ► If you have a button that has an image and some text,

00:08:24 ◼   ► it's always been a slightly complicated thing

00:08:24 ◼   ► to get the baseline of the text

00:08:29 ◼   ► and the placement of the icon to look good.

00:08:31 ◼   ► Apple just sort of has taken care of that.

00:08:35 ◼   ► It looks really good with obviously the SF fonts.

00:08:38 ◼   ► And so that part works.

00:08:42 ◼   ► And so now that's just sort of where I am.

00:08:44 ◼   ► And it's just been kind of amazing

00:08:46 ◼   ► to see this development to a place that,

00:08:47 ◼   ► I mean I feel like in some ways bad for the icon set designers

00:08:50 ◼   ► who previously would make some money

00:08:51 ◼   ► from selling icon sets to people like me.

00:08:56 ◼   ► But increasingly it's like Apple does a good enough job

00:08:58 ◼   ► that I don't even really, you know,

00:09:01 ◼   ► I'm not on the lookout for any more icon sets I don't think.

00:09:03 ◼   ► We are brought to you this week

00:09:07 ◼   ► by the Best in Class iOS App Book Series.

00:09:08 ◼   ► This book series is here to help take your apps

00:09:12 ◼   ► from good to great.

00:09:14 ◼   ► It's written by indie developer Jordan Morgan,

00:09:15 ◼   ► and he's covering all he knows about what he believes

00:09:17 ◼   ► are the four most critical topics

00:09:16 ◼   ► to develop quality software in iOS,

00:09:21 ◼   ► including accessibility, design, user experience, and iOS APIs.

00:09:23 ◼   ► Accessibility helps you learn how to make sure your apps

00:09:28 ◼   ► are designed for everyone,

00:09:30 ◼   ► from deep dives into the APIs like the rotor control

00:09:32 ◼   ► or how to best support voiceover.

00:09:35 ◼   ► And every accessible app eventually wins with design,

00:09:37 ◼   ► but design looks different for each app.

00:09:40 ◼   ► Here you'll figure out how to find your apps voice

00:09:42 ◼   ► and then use that to make it look and feel

00:09:41 ◼   ► like you're at home in the iOS platform.

00:09:47 ◼   ► And the user experience section is very important, obviously.

00:09:49 ◼   ► If an app is pretty to look at but unusable, it gets deleted.

00:09:51 ◼   ► So learn how to not make that happen.

00:09:54 ◼   ► And the last section is an exhaustive look

00:09:56 ◼   ► at all the major iOS frameworks and APIs,

00:09:58 ◼   ► things like WidgetKit or how to leverage Siri APIs

00:10:02 ◼   ► to make sure your app is tightly integrated across the system.

00:10:05 ◼   ► We've personally seen parts of this book so far already,

00:10:08 ◼   ► because it's coming out, you know, as he writes it.

00:10:08 ◼   ► The book is currently in early access,

00:10:14 ◼   ► and new content updates come out every two weeks.

00:10:16 ◼   ► The first book on accessibility is done,

00:10:19 ◼   ► including over 300 pages of SwiftUI and UIKit techniques.

00:10:21 ◼   ► The next book currently in the works is about design.

00:10:25 ◼   ► It is fantastic so far.

00:10:28 ◼   ► I strongly recommend you check this out.

00:10:31 ◼   ► The book series will be $160 when it's out of early access,

00:10:33 ◼   ► but our listeners can enjoy a 50% early access discount

00:10:34 ◼   ► and get all the books in the series as they come out,

00:10:40 ◼   ► a comprehensive Xcode project with all the code samples,

00:10:43 ◼   ► access to a private Discord to chat with the author and other developers,

00:10:46 ◼   ► a bonus section just for early buyers,

00:10:49 ◼   ► and free updates for all the books.

00:10:51 ◼   ► Visit bestinclassiosapp.com/radar to get started today.

00:10:53 ◼   ► Whether you're an experienced developer who wants a reference guide,

00:10:58 ◼   ► or need to brush up on design, or just new to the world of iOS,

00:11:01 ◼   ► this book series has you covered.

00:11:00 ◼   ► It's like Apple's Human Interface guidelines,

00:11:06 ◼   ► combined with in-depth documentation and code samples.

00:11:08 ◼   ► Once again, that's bestinclassiosapp.com/radar

00:11:11 ◼   ► to get the series for 50% off.

00:11:15 ◼   ► Our thanks to bestinclassiosapp for their support of this show and Relay FM.

00:11:18 ◼   ► Yeah, I wanted to talk a little bit about,

00:11:24 ◼   ► as I'm also leaning more heavily into both the San Francisco font,

00:11:26 ◼   ► and the font family, and SF Symbols,

00:11:32 ◼   ► I've always, ever since Visual Basic,

00:11:35 ◼   ► my very first GUI programming tool,

00:11:39 ◼   ► back forever ago when I was a teenager,

00:11:42 ◼   ► I started with Visual Basic 1.0.

00:11:44 ◼   ► And back for that, it always came with a set of Microsoft built-in icons.

00:11:47 ◼   ► And there was always, not that many,

00:11:53 ◼   ► but I too would always find myself adjusting my design

00:11:53 ◼   ► to try to use as many of the stock icons as possible.

00:11:59 ◼   ► Because if you think my design skills are bad now,

00:12:03 ◼   ► you should have seen me when I was a teenager.

00:12:05 ◼   ► But, you know, and I find myself,

00:12:08 ◼   ► you mentioned that you're doing that with SF Symbols,

00:12:11 ◼   ► where you'll actually bend your design

00:12:13 ◼   ► to accommodate what they offer.

00:12:15 ◼   ► And I'm finding myself doing that exact same thing now.

00:12:17 ◼   ► Because as I lean more heavily into SF Symbols,

00:12:18 ◼   ► I still have some custom icons lingering around in the redesign,

00:12:24 ◼   ► but that's mostly because I need some kind of dynamic functionality.

00:12:30 ◼   ► Like, the overcast sleep timer icon on the Now Playing screen,

00:12:33 ◼   ► first of all, it actually shows the correct time,

00:12:37 ◼   ► because it's a clock,

00:12:39 ◼   ► and I'm not going to have a clock in my app that shows the wrong time.

00:12:40 ◼   ► So it always shows the right time,

00:12:43 ◼   ► and when you have a sleep timer set,

00:12:45 ◼   ► it turns the hands into a little bit of a pie graph

00:12:44 ◼   ► to show you what time the timer will end.

00:12:50 ◼   ► And that kind of dynamic functionality is not yet possible with SF Symbols.

00:12:52 ◼   ► And honestly, that's unfortunate.

00:12:57 ◼   ► I wish there was a way to have parameterized SF Symbols,

00:12:59 ◼   ► where some input parameter could either toggle certain shapes on and off within the icon,

00:13:04 ◼   ► or could be applied as a rotation or a scaling metric.

00:13:10 ◼   ► That obviously broadens the scope of them tremendously,

00:13:16 ◼   ► but they already support so many cool things through the symbol configuration API.

00:13:19 ◼   ► Things like different palette controls and palette colors and weights and everything.

00:13:23 ◼   ► So the precedent and the beginnings of API support are there for dynamic icons, basically.

00:13:28 ◼   ► They would just have to add certain arbitrary parameters that you could input,

00:13:36 ◼   ► and then have the symbols be able to interpret those in certain ways, optionally.

00:13:37 ◼   ► And I would love to see that.

00:13:43 ◼   ► But other than that, other than dynamic needs,

00:13:44 ◼   ► what I'm seeing really is that almost every icon in Overcast can be replaced with an SF Symbols icon,

00:13:47 ◼   ► and in most cases it ends up looking better.

00:13:55 ◼   ► Because while my design skills have gotten significantly better since 2014 when I started this app,

00:13:58 ◼   ► they're still not as good as Apple's most of the time.

00:14:02 ◼   ► And so, you know, Apple has, in many ways,

00:14:08 ◼   ► they're a very big company now,

00:14:12 ◼   ► and in many ways that's inconvenient for developers in the sense that we now,

00:14:14 ◼   ► it's such a broad company and the platform is so broad that it's hard for us to keep up in certain ways.

00:14:18 ◼   ► But because the company is so massive and sprawling and huge now,

00:14:24 ◼   ► and they have so many things going,

00:14:28 ◼   ► that also means that we get occasional things like this that just make our jobs so much easier.

00:14:29 ◼   ► A smaller Apple that was making iOS 2.0 back 12 years ago,

00:14:35 ◼   ► whenever that was, would never have done something like SF Symbols.

00:14:39 ◼   ► But now they have teams of people who are dedicated to things like this,

00:14:43 ◼   ► to making hundreds of new icons every year,

00:14:49 ◼   ► and updating the old ones to get new capabilities,

00:14:53 ◼   ► or tweaking the styles slightly to keep up with the modern UI fashion and stuff,

00:14:55 ◼   ► and adding new capabilities like the palette colors and things like that.

00:15:01 ◼   ► And you go into the fonts as well, and the fonts get new capabilities,

00:15:05 ◼   ► and some of them integrate with SF Symbols,

00:15:08 ◼   ► or they work together in harmonious ways.

00:15:10 ◼   ► And so to have this giant resource available to us,

00:15:14 ◼   ► I think it would be, it's almost stupid not to use it.

00:15:18 ◼   ► I think it's really nice that, obviously,

00:15:20 ◼   ► as I mentioned, there's still room for custom icons,

00:15:26 ◼   ► and as I said, I'm still using some custom icons myself in my new design,

00:15:29 ◼   ► but way fewer than before.

00:15:33 ◼   ► And what this results in is, first of all, a smaller app, which is great.

00:15:36 ◼   ► In the same way that less code, it tends to be better code,

00:15:41 ◼   ► it's always nice when you don't have to write something yourself,

00:15:46 ◼   ► when you can just use a system API to do something.

00:15:46 ◼   ► That also applies to design resources.

00:15:52 ◼   ► It's really nice to have fewer design resources being on your plate,

00:15:54 ◼   ► not only as an indie developer, but as any developer.

00:16:00 ◼   ► Now, the good thing is, this is an area where we can have an advantage as indies,

00:16:02 ◼   ► because the big companies will never use SF Symbols.

00:16:07 ◼   ► They have their own internal design teams,

00:16:11 ◼   ► and they want everything to look the same across all platforms,

00:16:13 ◼   ► and their own branding, and blah, blah, blah.

00:16:11 ◼   ► So they're never going to do this.

00:16:17 ◼   ► We can take advantage of this as indies,

00:16:19 ◼   ► because we don't care about all that stuff,

00:16:21 ◼   ► or we are more flexible on some of those areas than they are,

00:16:23 ◼   ► or we have a smaller problem set.

00:16:26 ◼   ► If our app doesn't look the same between iOS and Android,

00:16:28 ◼   ► well, most of us don't have iOS and Android apps, so that's fine.

00:16:32 ◼   ► So this is an area where indies can really take advantage of the fact that we are indie,

00:16:38 ◼   ► and use the system stuff, and there's massive amounts of effort and updating over time.

00:16:44 ◼   ► You mentioned when the screen sizes change, or when retina happen.

00:16:51 ◼   ► Whenever anything on the platform changes like that,

00:16:54 ◼   ► Apple will make sure that their design resources are updated,

00:16:56 ◼   ► and so we don't have to do that.

00:17:02 ◼   ► And so our apps get smaller, we have fewer design resources to maintain at all,

00:17:04 ◼   ► fewer things to have to draw or get drawn in the first place,

00:17:10 ◼   ► and so it's just a huge savings for us all around.

00:17:14 ◼   ► Not to mention the fact that then code gets simpler.

00:17:17 ◼   ► You can just call this stock "System Named API",

00:17:20 ◼   ► you mentioned SwiftUI, it's easier there, which is true.

00:17:23 ◼   ► So many things become easier when we can rely on the built-in stuff,

00:17:26 ◼   ► and the built-in stuff has just gotten so much more broad in recent years,

00:17:29 ◼   ► ever since they introduced SF Symbols and system colors and stuff like that.

00:17:35 ◼   ► So this is just a fantastic way for indies to have really nice, professional-looking apps,

00:17:39 ◼   ► without almost any effort at all.

00:17:46 ◼   ► And that's just fantastic.

00:17:50 ◼   ► And if there was any concern, one concern I would have would be,

00:17:51 ◼   ► as you're using these, is like, "Am I going to make my app just look like every other app?"

00:17:55 ◼   ► And the good thing is, as I mentioned a minute ago,

00:18:01 ◼   ► because almost no apps will even use SF Symbols at all,

00:18:03 ◼   ► let alone use them extensively,

00:18:08 ◼   ► that's not really going to be a problem in practice as far as I can guess.

00:18:11 ◼   ► It certainly isn't today.

00:18:15 ◼   ► And any cross-platform app from a big company, they're not going to use any of them.

00:18:17 ◼   ► Many of the indie apps on the App Store are designed by people who have design opinions

00:18:21 ◼   ► or design teams, and so they're not going to use them.

00:18:27 ◼   ► Many of the smaller apps or apps that don't have dedicated design teams

00:18:30 ◼   ► are already made and already designed for previous versions of iOS

00:18:34 ◼   ► and will never be updated to the new style,

00:18:38 ◼   ► or will not be updated for a very long time.

00:18:40 ◼   ► So when Overcast comes out and it shows all these icons,

00:18:42 ◼   ► I bet a lot of people are not going to know these are SF Symbols.

00:18:46 ◼   ► You might recognize a couple of them here and there from Apple's built-in apps,

00:18:48 ◼   ► but SF Symbols has over a thousand icons, I think.

00:18:54 ◼   ► It has a lot of icons, and most people are not seeing them on a regular basis.

00:18:57 ◼   ► And even if they did, is that so bad?

00:19:03 ◼   ► Like if your meatball icon, I just learned this name,

00:19:06 ◼   ► I'm so happy that this is the name of the three dots,

00:19:08 ◼   ► like the ellipsis to show a more icon,

00:19:11 ◼   ► it's apparently called a meatball.

00:19:13 ◼   ► That makes me so happy.

00:19:12 ◼   ► But if your meatball icon or your share icon looks like the system ones, that's fine.

00:19:18 ◼   ► That's good. People recognize them.

00:19:24 ◼   ► It shows that your app fits into the platform. It looks native.

00:19:26 ◼   ► Those are all good qualities.

00:19:29 ◼   ► So all around, I just see this as a win.

00:19:31 ◼   ► And I think too, it's a good thing that it fits in.

00:19:36 ◼   ► Regardless of whether or not anyone else will use it,

00:19:42 ◼   ► maybe this isn't a point of differentiation between your app and between other apps.

00:19:45 ◼   ► But I'm not sure if that's a particularly helpful differentiation,

00:19:50 ◼   ► if that's something that's actually doing you any favors or is important.

00:19:52 ◼   ► The more I use SF Symbols, the more I understand how difficult doing icons inside applications well is.

00:20:03 ◼   ► And getting a sense of how many choices and differentiations and points of design

00:20:08 ◼   ► that if you actually are going to do this, you'd have to do to do it well.

00:20:15 ◼   ► And it's way better for your app to look good and sharp and clean

00:20:19 ◼   ► than it is to be different for not looking clean, sharp and clean.

00:20:23 ◼   ► And I think the biggest way of proving this is

00:20:28 ◼   ► if you've ever watched the W2C session

00:20:29 ◼   ► where they talk about how to make your own custom SF Symbols.

00:20:34 ◼   ► Oh yeah, I tried that for about one hour.

00:20:38 ◼   ► And it's like, Apple, fair enough, they've built the infrastructure that there is a way to do this.

00:20:43 ◼   ► And I believe this last year it got a little bit better.

00:20:47 ◼   ► They improved the tooling for it slightly.

00:20:50 ◼   ► But it was one of these things where I'm like, "Okay."

00:20:52 ◼   ► The first step, it's like, "Okay, open this template. All right. Now take your icon, put it in here."

00:20:54 ◼   ► And it's like, "Now tweak your icon 36 times to make it so that it looks good in this context, in this context,

00:20:59 ◼   ► if it's expanded out here, if they're using the accessibility type sizes

00:21:05 ◼   ► where it gets really small or really big, if they want bold or unbold text for accessibility reasons."

00:21:11 ◼   ► And it very quickly was like, "Oh, right."

00:21:17 ◼   ► So someone at Apple has, I feel for that person slightly,

00:21:20 ◼   ► but someone at Apple has gone through for all of these hundreds of symbols,

00:21:25 ◼   ► and they've made sure that it looks good and is appropriate in all of those contexts.

00:21:30 ◼   ► That if a user has dynamic text turned way up and bold text turned on,

00:21:35 ◼   ► the symbol is going to look good and appropriate next to the text that it is next to.

00:21:41 ◼   ► And I didn't have to do anything to do that.

00:21:45 ◼   ► And I very quickly, as soon as I opened up that template and watched the W3C video,

00:21:47 ◼   ► I was like, "Nope, I'm just going to let someone else worry about this,

00:21:52 ◼   ► because there is no way that I have the time, energy, effort, ability, skill,

00:21:55 ◼   ► whatever attributes it would take to actually do that to make my app icons rise to that level."

00:21:59 ◼   ► And so whether or not anyone else is using it,

00:22:07 ◼   ► in some ways it would be a wonderful world if lots of people are using them,

00:22:09 ◼   ► and it's just like, it's not a point of differentiation, so fair enough.

00:22:12 ◼   ► You have to differentiate your app in other ways.

00:22:13 ◼   ► But seeing how much effort and care goes into these very quickly makes me think,

00:22:18 ◼   ► "I don't want to get anywhere near trying to do this myself,

00:22:23 ◼   ► because there's no way that I'm going to end up with a result.

00:22:26 ◼   ► I'm not willing to put in the effort it would take to get to the results that they've already gotten to."

00:22:29 ◼   ► And I hope there are a few areas in SF Symbols that I wish they would expand.

00:22:34 ◼   ► For one, for me, it's like workout modes.

00:22:38 ◼   ► It's something that there isn't SF Symbols for all the different kind of,

00:22:40 ◼   ► if you imagine all the workout types you could have with running, walking, biking, etc.

00:22:45 ◼   ► There's just not a good set of them.

00:22:50 ◼   ► But other than that, that's the only area that I've ever run into where I'm like,

00:22:52 ◼   ► "I wish they'd expanded it."

00:22:54 ◼   ► But it's like, "Otherwise, just use it and don't worry about it."

00:22:55 ◼   ► And understand that you're getting not just the icon as part of starting to use it,

00:23:00 ◼   ► but you're getting all of the other work and the dynamism that is inside of these icons,

00:23:07 ◼   ► which is essentially for free by going down this road yourself.

00:23:12 ◼   ► Yeah, it's just such a great feeling to know that you can just, with one line of code,

00:23:16 ◼   ► you can have this incredible resource available in your app, and it makes your app look good.

00:23:25 ◼   ► And I like what you said about how you shouldn't necessarily rely on custom icon work as a point of differentiation.

00:23:33 ◼   ► I think this, as the system is maturing over time, as things are getting more broad,

00:23:38 ◼   ► we have not necessarily cross-platform in the sense of iOS and Android,

00:23:46 ◼   ► but we have cross-platform in the sense of iPhone, iPad, Mac, watch.

00:23:50 ◼   ► As everything's getting more broad, I think the value of using stock design resources is going up over time.

00:23:55 ◼   ► Because this is one of the reasons why also in my redesign I have dropped the custom font.

00:24:02 ◼   ► I'm only supporting San Francisco, and I'm designing the whole app around San Francisco now.

00:24:07 ◼   ► And it's not because the custom font was bad, I love the custom font,

00:24:10 ◼   ► but if you look at, mature platforms over time tend to go towards the system font being universal.

00:24:19 ◼   ► When PC and Mac stuff was really young, a lot of stuff had custom fonts,

00:24:24 ◼   ► and as the systems matured now, it would be weird if you opened up a Mac app,

00:24:30 ◼   ► and it was just a pretty normal type of app, a common app type,

00:24:34 ◼   ► and it used a different font in the system. That's not a common thing anymore.

00:24:39 ◼   ► And I think iOS is moving in that direction as well.

00:24:43 ◼   ► I think you have to have a really good rationale for not using the system font,

00:24:47 ◼   ► and if you don't, you probably should use system font.

00:24:51 ◼   ► And there are certain exceptions, like games, obviously, that's an immersive experience,

00:24:56 ◼   ► that's a different thing, that always has been a different thing.

00:24:58 ◼   ► But for most apps, you should be using the system font,

00:25:01 ◼   ► and making your own font from scratch is such a daunting task that most developers shouldn't do that either.

00:25:09 ◼   ► Occasionally a really big company might make their own entirely custom font,

00:25:13 ◼   ► but that's not a common thing either.

00:25:15 ◼   ► I think icons kind of fall between those two.

00:25:17 ◼   ► Most people, it's easier obviously to make an icon than it is to make an entire custom font,

00:25:22 ◼   ► since the font is basically hundreds of custom icons.

00:25:26 ◼   ► But I think most apps should probably use the system icons most or all of the time,

00:25:34 ◼   ► unless there is some area where they don't cover.

00:25:37 ◼   ► And over time, hopefully those areas will shrink.

00:25:41 ◼   ► Because if you look at SF Symbols over time, every new release of iOS,

00:25:46 ◼   ► Apple adds more SF Symbols, and that's probably going to continue for some time.

00:25:50 ◼   ► I mean, it's probably going to slow down at some point, because all the low-hanging fruit will be gone.

00:25:55 ◼   ► But they keep adding more and more.

00:25:57 ◼   ► And as I mentioned, take advantage of Apple's ridiculous scale,

00:26:01 ◼   ► and let them do all that work, and you use it in your app.

00:26:04 ◼   ► But over time, I think there's going to be less and less reason for most apps to deviate from the stock designs,

00:26:11 ◼   ► both controls and fonts and icons.

00:26:16 ◼   ► So if you jump on board now, I think you'll be ahead of the curve,

00:26:19 ◼   ► and I think you'll be saving yourself a whole lot of time.

00:26:21 ◼   ► And your app will look more modern and better.

00:26:24 ◼   ► Yeah, and I think too, don't underestimate the value of helping your customer, your user,

00:26:32 ◼   ► know what something is going to do by being consistent with the system.

00:26:37 ◼   ► One of the advantages of SF Symbols is that it isn't a point of differentiation.

00:26:42 ◼   ► In some ways, that is a feature, not a bug.

00:26:44 ◼   ► It is good that if they see a button that has a particular symbol,

00:26:49 ◼   ► and you're using it in the way in which that symbol was intended to be used,

00:26:54 ◼   ► which you should be, like don't be using symbols in confusing ways,

00:26:57 ◼   ► but if you're using it as like, this is for favoriting something,

00:27:00 ◼   ► this is for sharing something, this is for rotating something.

00:27:05 ◼   ► If you're using those symbols in a way that they're intended to be used,

00:27:10 ◼   ► then you're getting this built-in help, like onboarding training with your customers,

00:27:16 ◼   ► that you didn't have to do any work there.

00:27:19 ◼   ► You didn't have to work hard to expect that they're going to know what to do with that symbol,

00:27:24 ◼   ► because if it's the same symbol that they see in Apple's, say like the crop or rotate tool,

00:27:31 ◼   ► it's like if they've seen it in the Photos app and they know what it did there,

00:27:34 ◼   ► and they see it in your app and it does the same thing, they didn't have to learn anything.

00:27:38 ◼   ► They don't have to think, oh, in the system one it looks this way, but in your app,

00:27:42 ◼   ► oh, when I want to use crop, I'm using this other tool or this other concept or this other glyph.

00:27:47 ◼   ► It becomes very, your customers can develop a vocabulary for what the icons on a platform do,

00:27:56 ◼   ► and then you can just take advantage of that in your own app.

00:27:59 ◼   ► And I think that's something that I've undervalued when I was first going down this road

00:28:03 ◼   ► of standardizing on SF symbols in my apps, is the advantage that that is conferring

00:28:08 ◼   ► rather than the sort of detraction.

00:28:10 ◼   ► The advantage that I can use something that is very familiar is transferable between my apps,

00:28:15 ◼   ► and I'm gaining this sort of level of comfort for my customers that I didn't have to really even do much work for.

00:28:22 ◼   ► Exactly, and as iOS's icons and system designs get richer,

00:28:28 ◼   ► that raises the bar for what you have to do if you want to use custom stuff.

00:28:33 ◼   ► Like the SF symbols have this concept of hierarchical rendering,

00:28:36 ◼   ► which is basically different levels of transparency based on a certain root color.

00:28:40 ◼   ► So if that becomes the norm, that people get accustomed to seeing hierarchical icons across the system,

00:28:46 ◼   ► that means if you're going to replace them with your own custom icons,

00:28:49 ◼   ► people are going to expect your icons to have that same look, and that's even more work for you.

00:28:53 ◼   ► So I think as things get more mature, again, the bar is being raised for having custom stuff,

00:29:00 ◼   ► and so that increases the value of indies like us using system stuff.

00:29:04 ◼   ► Yeah, I think you said it well when you said it,

00:29:09 ◼   ► it's like you'd just be foolish not to. And I think we've both sort of settled on this,

00:29:13 ◼   ► and I think that's for good reasons, that this is a good thing.

00:29:16 ◼   ► I think I've been using it, especially in Widgetsmith, extensively,

00:29:20 ◼   ► and it's used widely and with lots of customers, and it works really well,

00:29:24 ◼   ► and I would encourage anyone who's been reluctant or hesitant to adopt it,

00:29:29 ◼   ► try it out and see if it can work for you.

00:29:32 ◼   ► Thanks for listening, everybody, and we'll talk to you in two weeks.

00:29:35 ◼   ► Bye.

00:29:37 ◼   ► Stop dot circle.