Under the Radar

200: Time Flies


00:00:00   Welcome to Under the Radar, a show about independent iOS app development. I'm Marco Arment.

00:00:06   And I'm David Smith. Under the Radar is never longer than 30 minutes, so let's get started.

00:00:10   So, Apple Event Week, one of possibly two or three this fall.

00:00:15   Who knows?

00:00:16   This one I think might be most relevant to us, though.

00:00:19   Probably. It was definitely a pretty substantial change in my plans, or was it a pretty significant turnaround?

00:00:28   And I mean, it's weird that we don't really know what else is going to be coming, and it was strange that the first event wasn't an iPhone event.

00:00:36   If you're not listening to this in real time, this was the Time Flies event, where Apple introduced the new Apple Watches, their fitness system, and the new iPads.

00:00:48   Apple won, I suppose, with the four main things they announced.

00:00:52   Yeah, it was kind of a weird event. It was a video just like WWDC was, and we got a whole lot of new stuff, and a whole lot of, I suppose, as on theme for 2020, some unprecedented changes in the way Apple rolls things out.

00:01:10   Yeah, this is, so, in addition to just it being an event where there's no actual in-person event and all those changes, the biggest difference for developers is that we got a lot less time than we usually do with the GM SDK and GM OS before release.

00:01:28   They announced it during the event yesterday that iOS 14 and watchOS 14 will be coming out tomorrow, which is today, so we had about 24 hours of notice, and 24 hours with the official SDK, and 24 hours roughly to build, test, and submit to the App Store anything that uses the new SDK.

00:01:50   So it's been quite a rush. That certainly is not the ideal schedule for anything. I don't know why they did it this way, but, well, I do know it's hardware, you know, but I'm disappointed they did it this way, but, you know, for me, honestly, this doesn't affect me at all because of where I am in my development, and I'll get to that in a little bit.

00:02:13   How much, I know you had a very different story here. How much did it affect you?

00:02:18   So going into the event yesterday, when I sort of like sat down to watch it, in my mind, what was going to happen is that they were going to announce the new Apple Watches, they were going to announce that they were going to sort of be available for, you know, ordering or pre-ordering sometime this week, and then they would probably ship late next week.

00:02:38   And then iOS 14 and watchOS 7 would then sort of traditionally launch sometime in the middle of next week, so typically like about a week after the announcement, iOS launches, and then the hardware launches like maybe a day or two after that.

00:02:53   And so that was what I was kind of going into the event expecting, and to then sort of like vary, you know, about halfway through the event, see that it's like, no, no, it's coming out tomorrow.

00:03:08   And then at the particular launch cycle, I have four different, sort of four updates that I was expecting and planning to try and launch roughly coincident with the update, and so I have sort of smallish updates to pedometer++ and sleep++, medium-sized update to WatchSmith, and then I'm launching WidgetSmith with iOS 14.

00:03:31   And so I'd gotten those apps sort of, it's the tricky place of like, they were roughly in the place that I was expecting them to be around launch, because the reality is, whenever, like in a typical cycle, when Apple releases the GM after the event, and we have about a week before launch,

00:03:51   usually I try and submit my updates around the time that the GM comes out, and you know, maybe it's not the day that it comes out, but it's within a day or two, because I want them to go through app review if there's any rejections or things that I need to deal with.

00:04:06   So I was sort of ready, but it was definitely a little bit chaotic to then have this feeling of like, I have no idea how fast app review is going to be able to turn these things around, I'm going to need to sort of just like really just frantically sort of buckle down and get, you know, sort of download the GM, which was a very strange process in this time, because apparently there's two GMs.

00:04:26   Yeah, they very quickly issued a revision. The one that ends in 09 is the newest one.

00:04:36   Yeah, which I still have never yet been able to actually download. I keep getting the old one for some probably cash reason. But anyway, it seems like the 08 one worked fine for what I was working on. It seems like it's a tvOS issue that you might need to have one or the other, but it's like I got that down and did all my rebuild.

00:04:48   I just verified that I don't have the newest one. I have the 08 one, even though the link said 09 when I downloaded it. So that should be interesting.

00:04:55   I mean, who knows what's going on there. I think the reality is that seems like kind of a minor point, because the reality is we had our GM, and then it's just like, you know, had a few hours of install the GMs on my actual test devices, start playing with it, make sure that things seem to work.

00:05:11   On the plus side, it seems like the GM didn't change anything developer focused, as far as I can tell. I mean, there's bug fixes and things in it that I certainly need to verify and make sure my apps worked. But it wasn't one of these years where here is this major change that is coincident with new hardware that we now need to sort of adapt.

00:05:29   Or like, you know, if they say they added a whole new complication family for the new Apple Watch or something like that, like when they launched the Series 4 Apple Watch, suddenly there was all of the graphic, like the infograph complication families that were just like appeared.

00:05:45   And while I didn't strictly need to have them on, like, for launch day, there was a substantial change that I needed to adapt to. So at least there weren't any of that. But then turned around, got my update submitted, and it seems like App Review was definitely working overtime last night.

00:06:00   Yesterday evening, and they were all approved within, the existing apps were all approved within a couple of hours, and then WidgetSmith, which was like a brand new app with recurring in-app purchase subscriptions and things that usually take a longer time, was approved within maybe like five or six hours.

00:06:17   So it's like a bit crazy and hectic, but fine.

00:06:31   So I think that's the whole point of the app.

00:06:41   I know that either as a developer or as a podcaster or both, I'm going to have work to do. And so it's just going to be a thing. Like, I block out that entire day, it's going to be a thing, and on the rare occasions where it isn't, like if they announce some boring thing that doesn't really affect the things I do, or that I don't even have much to say about on podcasts, then great, I get some free time back that I didn't expect.

00:07:07   Normally that's not the common case. Normally Apple event days form busy days and busy weeks for me. So it's important for me to block that time out and make sure I have it.

00:07:17   That being said, if I was super into the iOS 14 feature set as a developer yet, this would be concerning for me.

00:07:25   At least, I mean, to give them credit, at least they didn't also release Mac OS on the same day. But who knows what their release schedule for that will be when that comes out, when Big Sur comes out and the R Max presumably will dictate that release schedule.

00:07:39   So that's going to be challenging whenever that happens. But I've actually spent this morning, how do I put this, not one of my favorite tasks of the year. Up there with doing my taxes, today is actually something I enjoy even less than doing my taxes.

00:08:00   Today has been certificate renewal day for me.

00:08:04   Oh perfect, just what you need.

00:08:10   Yeah, isn't that great?

00:08:12   All of these certificates and provisioning profiles, they all last one year typically. And so you've got to renew them once a year. And my renewal date is mid September every year. I don't know why I did this.

00:08:21   It does seem like something you should fix. Like, you set a calendar reminder for like in six months to just re-invalidate and reissue all of them again so that you can get off cycle. This is not the time you want to be doing that.

00:08:37   Yeah, do it in like February when there's not much else going on. But nope, I do mine in mid September. And every year I face the same battles. You know, these days we have a reasonable app that is full featured, probably has multiple extensions.

00:08:50   In the case of Overcast, I have the Watch app, which is two extensions of course, plus the notification content, the today widget which is about to change, and the intense extension. And critically, the Overcast app requires the CarPlay entitlement. And because of that, still, I just verified this an hour ago, still to this day, you still can't use any automatic provisioning profile features in Xcode.

00:09:18   All the automatic signing, automatically managing my stuff, that does not work when your app uses CarPlay. So, I have to do it all manually. And this year I had the bright idea, you know, I haven't actually started my Catalyst app yet. Why don't I also include Catalyst and whatever the ARM Mac, you know, native Mac running version of this looks like in this year's signing bundle.

00:09:44   You know, like, have that as part of the list of things I'm doing. And that had just sent me down this rabbit hole of just trying to get all these things done, trying to get Xcode to recognize them. By the way, I have multiple computers. So trying to export them in a useful way and import them into another computer in a way that works.

00:10:02   And while I know there are features built into Xcode and Keychain and things like that to do all this for you, in practice, they work about 85% of the time. And that's just enough. Like, I always will hit snags where something just mysteriously doesn't work. And I have no clue why it doesn't tell you why much of the time.

00:10:24   And so that's what I've been doing this morning. So I'm not in the greatest mood towards the App Developer Center right now. But more broadly than that, I have not submitted any iOS 14 updates yet.

00:10:39   And my main reasoning why, you know, earlier this summer, I said, I believe on this show, if not on ATP, I said that I was really jumping in headfirst into Swift and Swift UI and really making all my stuff new and jumping into all the new stuff.

00:10:56   And kind of like a New Year's resolution that you make on December 31st, I'm going to totally change the kind of person I am tomorrow. And I had about the same amount of success with that.

00:11:10   But I have made changes and they are better. But I'm not quite ready yet. Like in the sober light of the morning, what I realized with that proclamation, you know, a few over the over the few weeks following is two critical things.

00:11:27   Number one, that Swift UI, while I'm still planning on using it for my watch app rewrite, whenever I get to that, I'm kind of in the process of doing the data layer below that now. So I haven't gotten to the UI stage yet.

00:11:40   So the watch, a big watch rewrite, I'm on board. Yeah, I'll try Swift UI.

00:11:45   But for everything else, it still seems like Swift UI is really early. And people who adopt it early are having very mixed experiences with it. Some people love it. Some people love it with a bunch of asterisks. Some people don't love it at all.

00:11:59   And I think for the rest of my app, for the iOS and eventual Mac interface elements, I'm not quite ready to jump into that quite yet.

00:12:09   I am, however, jumping into Swift. So Swift I have been using significantly more this summer than I have before. I am writing most of my new code in it.

00:12:18   The only new code I'm not writing in it is code where I'm just kind of like modifying existing classes or adding to existing classes where it would be kind of cumbersome to have to either bolt on a Swift module or rewrite that entire class for no apparent reason in a different language.

00:12:33   But anything where I'm writing new classes, I'm doing that in Swift. And so I actually have finally crossed that boundary. It's been a slow progress so far, but that's where I am on that.

00:12:45   But the other major factor for me that's kind of dictated my calming down for my initial proclamation is that iOS 14, I realized I was looking around the competitive landscape. I was looking at my analytics as well. And I realized that it's going to be a long time before most of my customers use iOS 14.

00:13:07   And it's going to be a long time before I can require it. My initial plan was I was going to require 14 aggressively, which not on day one, but I was saying probably this winter. Maybe December, January, February, something like that.

00:13:21   And I took a look, you know, it's important for me that Overcast has a very wide audience. This is a mass-market targeted app. I'm not targeting Overcast at just power users and nerds like me. And I'm targeting it at the biggest audience I can get. That's why it's free. That's why I make it so easy to use, ideally.

00:13:39   This is my target for this app, is a broad audience. And over the last few years, I can see in my analytics that OS uptake among my audience is slow. Not as slow as the total average across the whole industry, but it's not that much faster.

00:13:56   And so right now, today, I still have like 5% of people on iOS 12. And if I'm going to require a new OS, I should go to 13, not 14. Because it took a long time before iOS 12 was even as low as 5%.

00:14:14   And that being said, I don't want to throw away 5% of my market either. When you're a brand new app, you can afford to do that because it's 5% of not a very big number and you get more growth later. But Overcast's growth is not like super strong now. It's like slow and steady. That's the kind of growth I get, slow and steady.

00:14:34   So I don't think I want to just throw away 5% of my audience. And it's probably 5% that's never going to update because that's almost certainly people stuck on devices that don't support 13 or 14. So they're never coming.

00:14:51   Exactly. Or at least, I wouldn't say never, but not for a long time. They're certainly not just jumping on the update. They're updating when they get a new phone, not when they hit update in settings. Right. At this point, a year into iOS 13, anybody who can run it most likely is running it.

00:15:07   Except for the handful of holdouts. They heard how bad it was and so they're holding on to 12. But that's not a huge population. The majority of the population who has devices that can run 13, they are running 13. So I realize that my thinking has evolved over time. I've talked about it on this show.

00:15:25   But I really have substantially pulled back on my desire to jump to the latest thing and require the latest things. I started realizing, like right now I'm in the process of doing a massive code migration that is bringing over my entire iPhone app sync engine and data engine.

00:15:44   The entire data layer bringing that same thing over to the Apple Watch so I can have direct sync on the Apple Watch and fix a bunch of stuff there. And so I'm doing tons of code migration, tons of refactoring, a small amount of new code authoring as well.

00:15:59   And for me to do all that, it would be so easy for me to say, all right, I'm going to go 14 only because this is new code and then I'll require 14 as soon as I want to release this, which will probably be this winter. But now I'm thinking about it a different way. Now I'm thinking how hard would it be to also support 12 and 13?

00:16:19   And the stuff I'm doing, the answer to that is not very hard. As I learned last fall when I initially too aggressively required 13 and then backed it off and went back to 12, it was embarrassing almost because going back and supporting 12 and watchOS 5 was really easy actually.

00:16:36   It didn't take very much work at all and I felt kind of foolish that I had jumped the gun on that so much. And that's how I'm feeling about 14 now. There's a bunch of new stuff in 14 but it's easy for me to conditionally include it.

00:16:49   And the only thing it might cost me is I might lose my old today widget when I deploy the iOS 14 widgets but I don't honestly care because that's a very, very, very narrowly used feature that basically nobody uses.

00:16:59   So that's not a big deal to lose that. But other than that, I'm now prioritizing compatibility to maximize my audience because that's what I want the app to be. I want it to be this broad market thing.

00:17:12   And so I'm really doing what most people need to do at their jobs. It's like requiring older OSs. And I looked around the competition and every other podcast app requires iOS 10, 11, or 12. Almost none even require 13 yet.

00:17:27   So I think this is the right move for me. And so it's going to make me adopt all the new stuff much more gradually and do it conditionally with backwards compatibility rather than diving in and requiring everything from the beginning.

00:17:39   And I think at this point in iOS's life cycle, it's such a mature platform and stuff is not changing that much that all that will basically cost me is I basically can't use Swift UI. And for now, in its current state, that's okay with me.

00:17:55   We are sponsored this week by AppFigures. Among app publishers and developers, AppFigures is already well known for their universal analytics dashboard. I've actually used AppFigures for years. I mean, I think since day one. I've been using it a long, long time.

00:18:11   And there's actually a lot more you can do with AppFigures today. They provide a complete set of App Store optimization tools, which is becoming more of a necessity. Again, personally, I just started using all these recently. I never pay attention to stuff like my keywords and everything until recently because I want this to be broad market, right?

00:18:27   So for those of us who know we should be doing more but aren't sure about next steps, AppFigures has a lot of great guides and resources to help with that. They recently also added the ability to see how your competitors are performing. This is how I actually started looking at this myself.

00:18:43   So you can always know where you stand and what your competitors are doing to improve their bottom line. Plus, you get access to complementary guides and learning materials to take advantage of those tools. All of this comes at a reasonable price, so there's never been a better time to check out AppFigures.

00:19:01   So go to AppFigures.com to try AppFigures for free. If you like it, use our special code Radar3030 to get 30% off for the next three months. I wonder if I used that code. I might not have used it. That's AppFigures.com code Radar3030 for a 30% discount for the next three months. Our thanks to AppFigures for their support of this show.

00:19:24   So it sounds like Overcast has finally grown up. What you're describing is essentially that this is what I expect and have seen in broad corporate general market applications.

00:19:40   What you're describing is that slow, meandering process of updating, not worrying too much about latest and greatest or being on the cutting edge. Instead, it's trying to be a bit more staid, a bit more conservative.

00:19:59   Because you're trying to be that broad, inclusive application rather than something that is, in some ways, like many of the apps that I work on, are exclusive in the sense that they are intended and geared towards people who care about the latest and greatest and are going to update on day one and are excited about adding widgets to their home screen or whatever that might be.

00:20:25   It sounds like, in many ways, Overcast is growing up and now that's not where you are. In some ways, it's great. It makes things like yesterday when they suddenly announced that, "Hey, we're going to release iOS 14 tomorrow."

00:20:40   It's like, "Oh, okay. That's fine." It doesn't really affect your plans because you'll just update it whenever it makes sense to update it. In some ways, I kind of envy that position.

00:20:50   Yeah, it's a different way of doing business. There are certainly downsides. When Apple releases a bunch of cool new APIs, I do often want to use them. Not every time. I'm still myself and I'm therefore conservative with things like that.

00:21:04   There's going to be new stuff that I want to use that I can't use. What will probably push me to 13 at some point soon are things like some of the collection view changes and some of the way that modals work with the iOS 13.

00:21:21   They have these sheets by default with modals. As I go into a UI redesign, I'm going to want to use that kind of stuff in all likelihood. As I attack that, probably this winter, I'm going to bump up to 13 almost certainly.

00:21:37   But for now, as I'm doing other data layer stuff and features that don't require new APIs to develop, I'm realizing too, my users aren't really asking for a UI redesign that uses iOS 13 style stuff.

00:21:52   My users aren't asking for me to adopt SwiftUI. My users aren't asking for this stuff. They're asking for features and changes and making certain things easier. That kind of stuff I can almost entirely do without requiring anything new.

00:22:07   So if I can bring a bunch of feature releases to iOS 12 forward, that's a better use of my time even though I want to do the new shiny stuff sometimes.

00:22:17   I would love to have a cool new UI design that uses all the latest stuff. What might be the more pragmatic approach is to have a smaller UI redesign that still uses all the old stuff.

00:22:27   But maybe I could put a fresh coat of paint on it. That is an easy way to be more pragmatic and that I think is what my users actually want me to do if I'm honest with myself.

00:22:36   Doing a lot of the more modern stuff is to some degree an indulgence for us. It's fun for us to use new cool APIs. It's fun for us to have cleaner versions of what we used to do in more dirty ways in the past.

00:22:51   That's wonderful. It feels good as a developer to use the new stuff. And it's easier to test. It's way easier to support and test when you only have whatever OS you use on your phone. That's all your support. It's easier, no question.

00:23:06   But I have different priorities now. And I'm looking at it more from the perspective not of what can I do to jump to iOS 14, but what can I do to continue to support what I support now and not lose any customers but still push something forward.

00:23:22   And I think it makes sense. I think it will make this fall and winter much more straightforward for you. Essentially in many ways you're taking control of your schedule back from Apple.

00:23:37   Whatever they're doing in some ways, it informs what you do, but it doesn't drive what you do. I imagine it's a little bit freeing in some ways. You're just doing your thing and you'll be plodding along forward.

00:23:53   You're interested when Apple announces new hardware, new software, whatever that might be. But if you can be a bit more just like, you're just doing whatever makes sense for you right now, there's certainly a wisdom to that. It's the opposite of what I'm doing.

00:24:08   It's interesting to have that contrast where I am the complete extreme of, I mean this is just always the way I've always worked. And it's not across all my apps, but I always have something that is using the latest and greatest and the newest stuff and being driven so strongly by that.

00:24:23   And having to deal with and navigate the complexities around adoption. Like for WidgetSmith and WatchSmith, they're both iOS 14, WatchOS 7 only from day one because the complexity around not doing that is just too much to be worth it.

00:24:38   And that's not who they're marketed at. And so I'm very much driven and controlled by what Apple says and does with their schedule. And so when we have surprise announcements, it's like, "Alright, here we go. I'm going to bed late tonight and hoping for the best."

00:24:58   So that makes a lot of sense and hopefully it meant that you had a much more pleasant last evening than I did.

00:25:04   Well, I think there are markets for both and there's reasons for both. Like right now, there's going to be a whole lot of early adopters who really, really want all the new iOS 14 stuff. They're going to start putting widgets on their home screen and they're going to push like crazy into that.

00:25:19   And for my app not to have one yet, because I just haven't gotten to that yet, that's going to hurt me for sure. But I don't think I'm going to lose 5% of my audience by it. Like I think in general, and these things aren't mutually exclusive, I should have widgets.

00:25:35   If I was more on the ball, I would have had that ready with a build that also still supports iOS 12 but has widgets for 14. I should have had that ready by now and I don't and that's on me. But there are a lot of people who want that.

00:25:49   And so no question, it will hurt me in the market not to have that. I'm going to start getting a large number of requests today from a lot of customers saying, "Hey, why don't you have a widget?" And people have incredibly high expectations of what my widget should be even though I still don't.

00:26:07   Because as someone who's been using iOS 14 all summer, I think widgets have a place but I don't think podcast apps necessarily will get a lot of use out of that. But again, I could be wrong.

00:26:20   But regardless, I think I'm going to have to have that soon and it's going to hurt me until I do. But it's also still only going to be a small percentage of my customer base who even has iOS 14 for a while. Like I'd be shocked if it was above 50% by a month from now.

00:26:40   It probably won't be. It's probably going to jump up and start climbing up through the teens over the next few days but then it's going to level off after a while. And I don't know how quickly it's going to happen but ultimately I think this is going to be a regular year for OS adoption.

00:26:56   I don't think it's going to be significantly faster than usual which means it's going to take a while.

00:27:02   I will say there, my expectation is that it's going to be more like iOS 12 than it will be like iOS 13. Because iOS 13 was by far the slowest rollout we've had in a while.

00:27:14   And it had the really strange, like there was 13.1 came out before. It was all these very strange weird things. If you got a new phone it had to be updated on day one. All of that shenanigans. In some ways the nice thing here is iOS is coming out well before there's new iPhones.

00:27:36   There's going to be a new iPhone but they're likely not coming out for at least two or three weeks. So in that sense it's kind of nice and stable.

00:27:44   What's interesting is I think in many ways Apple can choose how fast they want iOS adoption to be to some degree. It seems like they have, some server somewhere is telling customers how aggressively to start throwing up those like, "Hey we're going to update. Hey we're going to update alerts."

00:28:02   And they can dial that way down so that it kind of rolls out slowly and it's available if you go to settings and want to get it. Kind of like the phased rollout they do in the app store.

00:28:12   But for 14, as far as I can tell it seems pretty stable, it seems pretty good. And so in my mind 14 is going to be quicker. What that looks like I don't know.

00:28:22   I think sometimes they've had some very steep adoption curves but to your point I don't think it matters for what you're talking about. I'm not sure even how much widget adoption is going to be in the near term.

00:28:36   Because it's a pretty fundamental change in how the phone looks and operates. And for some people that's super exciting and for some people that's the opposite of exciting.

00:28:46   It's terrifying and disruptive and so the last thing they want to do is change from a grid of icons which is what they've had since iPhone OS 1 to something totally new and different.

00:28:58   Where there's now dynamic content interleaved inside of their home screen. I think iOS 14 might be fast but I'm not sure about widgets themselves actually being fast.

00:29:08   I think you'll probably be fine. Yeah I hope so. Congratulations on all your submissions and everything. I hope we can talk about your apps next episode. I assume everything will be out by then right?

00:29:20   Well everything's been approved so in theory it'll be launching in the next few hours or whenever Apple actually flips the switch to send out iOS 14.

00:29:29   So right now I'm pending Apple release I believe. So there will be some exciting discussions for the next time we get together.

00:29:39   Awesome. Well thank you everybody for listening and we'll talk to you in two weeks. Bye.