Under the Radar

277: Go Time


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 usually not longer than 30 minutes, so let's get started.

00:00:10   So we are recording in this fascinating transitional period where we are recording the day after the fall event of 2023, where they announced the new iPhones, the new Apple Watch.

00:00:26   They announced the release date of iOS 17, which we now know is as predicted next Monday, September 18th.

00:00:34   And we're in this very, this few days, it always feels like such a strange period where I've been in this huge, massive buildup to all the things that were announced at W2C, been working furiously all summer.

00:00:46   You get to the end of it, and then now, it's like all my submissions are out, and things are oddly quiet, but it's very much like the calm before the storm that's coming on Monday.

00:00:56   And so, yeah, it's kind of an interesting time to talk about some things. There's some things on the developer side that I think it's important for us to just mention, especially if you're in this transitional period right now, like you're listening to this contemporaneously.

00:01:06   There's some very important things you can do to set yourself up for success in the next few days. We're not really a show that's going to go through all of the announcements and how cool the iPhone camera is.

00:01:16   There's a much better tech podcast, Accidental or Otherwise, that would talk you through those kinds of things.

00:01:21   But for us, we're going to talk about the developer side of these things.

00:01:25   And I think I can start off by saying I'm always excited to see what Apple has announced, and I was very relieved yesterday to see that there was essentially nothing that was announced yesterday that dramatically changes or is a new need or something that I have to address going forward.

00:01:42   Like sometimes when they announce a new phone, there can be a new feature. Like last year we had the Dynamic Island, which was a thing that didn't exist as far as I can remember before it was actually announced. And so that was like, well, I guess if I wanted my app to support the Dynamic Island, which I don't think it actually came, the version of iOS that supported it came out later, I think.

00:02:01   All the same, it's still always a bit tenuous if there's these new features or things that you'd like to support that you can't. But last night, there was nothing particularly new. And as far as I could tell, the versions of iOS and watchOS that were the ones that were the final goldmaster, like, you know, least candidate versions, as far as I can tell, seem to be almost identical to the version before.

00:02:20   So like, it was one of those deep sighs of relief. Like, that's okay. There's not like this massive sort of sprint that I now need to start to fix something or they've made some massive change or things break. So that was a very big relief yesterday. Like, I enjoyed watching the event, but I really enjoyed when I downloaded Xcode, did a build and run, and everything was fine.

00:02:43   Yeah. There's certainly, you know, sometimes some years you have an event day surprise from a developer point of view. It's like, "Oh, wait a minute. All of a sudden, I can build a pedometer app," or, you know, whatever the case may be.

00:02:56   Or, "Oh, there's this new feature on the new phones that they did just launch an API for in the GM SDK, and now I have to go quickly support it." Like, sometimes you get those kind of surprises.

00:03:08   And that's exciting in a different way, but it is definitely nice some years to not have any of those surprises and to just be able to say, "Great. I prepared for this. I expected what happened to happen, and now I can do my final testing and go and move on with the rest of my day."

00:03:27   And that's wonderful. I will say, kind of a public service announcement for developers, right now, you know, iOS 17 is coming out in like five days. Right now is the time to figure out which of your devices are going to be your iOS 16 test devices longer term.

00:03:48   And if those are on the beta, downgrade those now. Get those on iOS 16, and then go disable automatic updates in the settings screens on those phones.

00:03:58   Because after iOS 17 is released, as most of you know, it becomes very difficult to downgrade a phone to an earlier software version.

00:04:06   Watches, as far as I know, you can't downgrade, so you're kind of out of luck on that. But anything that you want to keep on the current, you're going to keep on iOS 16, watch OS 9, whatever the Mac OS version is, iPad, whatever, go do those now.

00:04:21   Go turn off software update on those now. And what I would also recommend, last year I made a mistake. I upgraded too many watches, and the one that was putting my test watch I had dedicated to being my beta watch all summer.

00:04:36   And then I realized at the end of the summer, "Wait a minute, now, as soon as I upgraded my main watch to the new OS, I thought, 'Oh no, wait a minute. I don't have a watch OS 8 test device anymore, and my app still ran on watch OS 8.'"

00:04:50   And guess what I had a bug with on launch day? That's right, watch OS 8. So I had to do some logistics with my kids' watch and all this stuff, and it was terrible.

00:04:59   So I learned then an important lesson. If you are like me and don't have a great memory, get a label maker, or borrow the one that's already in your house, because for some reason most American houses already contain a label maker.

00:05:14   So go find your kids' or spouse's label maker and plug it in and make labels and put them on the back of your test devices that say what version of the software they are supposed to stay on.

00:05:29   And ideally, if you have like, you know, this is up to you if you want to put the passcode on it, if it's like a test passcode, I also include in these labels what watches these are paired to, and I put a little skinny label on the side of a watch to say what phone it's paired to and what its watch OS version should be.

00:05:46   So basically keep track of your test devices this way if possible, or whatever way works for you. But actually label or somehow indicate on the device, like do not upgrade past iOS 16 or whatever.

00:06:00   So that way it's easier to keep track of, first of all, it becomes harder to accidentally upgrade those later because you forgot what they were for, and you can quickly tell what devices do I have for testing, what are their roles,

00:06:14   and it kind of helps keep them that way. So yeah, definitely right now, make sure you lock in and turn off automatic updates for your last version devices because you're about to lose the window to do that.

00:06:26   Yes, and I think also I would say just broadly, this is the moment to have your annual check-in about your testing device strategy. Because similarly, if you wanted to get a, you know, you look at your setup, or you realize, "Oh no, I've updated too many watches to the latest thing, I need a version that I could install the previous version on."

00:06:47   Like if you go and purchase a, you know, you get a refurbished Apple Watch now, it'll still be running watchOS 9. Whereas if you get a refurbished Apple Watch in two months from now, you may or may not be able to find a device that still has that.

00:07:01   So like this is the opportune moment to do a little inventory, like I have just have, I do it as I have a spreadsheet with color-coded rows for each of the different, I think I support currently back to iOS 14, I think is the earliest that I support.

00:07:15   And so I just have a list of devices and I try and, you know, sort of make sure that I have coverage both in terms of, you know, how big of a screen ideally, and then also some variants in terms of age.

00:07:27   Like I probably have slightly more than you need, but even if you just have one device in every version, make sure that you actually have one device in every version. And in the same way, it's like if you have a hold, you have a gap, you updated too many things, it's possible to downgrade an iPhone now.

00:07:41   But after, you know, in a month, you won't be able to. So like, this is one of those moments to sit down, make sure your plans are set. And, you know, in my case, it's like, I think I updated one too many watches this year.

00:07:53   So I have two things on watchOS 10, and really, I should only have one. But like, that's just the reality. Because now if I get a new watch, it'll have 10 as well. So it's like, oh, well, but I still have a device on watchOS 9.

00:08:05   So like, I'm fine there. Otherwise, I'd be, you know, going and looking for, you know, a refurbished, cheap, inexpensive Apple Watch that I could find, just to have as a backup for that case. But it's just something this is this is the moment because there were times in earlier, you know, in an earlier time when I think the sort of device security rules for iPhones and devices were simpler, you could, you know, downgrade or have the restore images from old versions, and it would just kind of work.

00:08:33   And the way the device signing now is like, as far as I can tell, without getting into like jailbreaking, which, like jailbreaking testing device doesn't make any sense, because then it's no longer a valid testing case, because weird things can be happening. So like, this is the just moment to do it. It's like, yeah, it's an excellent point, Margot, like, this is the time to do it, make sure you're good. And then, you know, you can move on because you only have a few days until that that window starts to close for us.

00:08:56   Yeah, and also a little little bit of a safety check here safety tip. When you have an old version of watchOS on a watch, have that watch paired to its corresponding iOS version on a phone, because a phone, a watch will never upgrade past its paired phones corresponding version. So if you have a phone, an iOS 16, and a watch paired to it, that watch will never auto update to iOS 10.

00:09:21   It'll stay or watchOS 10, it'll stay on watchOS 9, because that corresponds to iOS 16. So, you know, don't keep don't have a watch paired to your iOS 17 phone, if you want it to stay on watchOS 9, because that will increase the odds of it not doing that. So anyway, yeah, manage your test devices, everyone.

00:09:39   Yeah, and I suppose it's also good to say this is also just a useful thing to keep in the back of your mind as you're if you are making purchases in the next few days. This is an opportune time to think about those purchases and make sure that you're thinking it through like, are you going to have a device like I read in my, you know, my testing setup, because they every year they drop some device supports like I have some testing devices now that can only ever support iOS 16.

00:10:03   They have, you know, they won't get iOS 17. And so like now I'm as I'm purchasing new devices, it's like, okay, do I need to how is how is everything going to shuffle down? Because I'm very often what I end up doing is I buy a new device that becomes the, you know, the, in this case, iOS 17 device, then I might, you know, sort of shift things down from there.

00:10:22   And so if you're making that purchase, and you're going to, you know, sort of have the all rolled over in the one fell out kind of problem, just be thoughtful of how things are going to sort of cascade down your testing device plan.

00:10:33   We are brought to you this episode by electric. When you think of the phrase boss move, you might think of making a bold business decision or maybe giving a great presentation in front of a big crowd. But the reality is sometimes being a boss in a small business means gathering up everything your new employee needs to get started, while your own to do list just keeps growing.

00:10:53   The team over electric knows small businesses may be like yours face these challenges. That's why they're on hand to help with time consuming parts of your business, like standardized device security with best in class device management, so you can implement best practices across the board and be ready to scale employee onboarding offboarding can be done for you, saving you an average of eight hours per request, and electric will help keep a single point of visibility into your IT environment to control your devices network.

00:11:22   and applications, while simplified reporting allows you to achieve and maintain compliance and proactive it recommendations and automated workflows make it easy to manage even for non technical users.

00:11:34   So if you're hearing this, and you think your company could use some of these services, but you're not sure where to start electrics experts will guide you through the process of establishing standardized it processes for your organization.

00:11:46   For our listeners electric is offering a free pair of beats solo three headphones for taking a qualified meeting. Just go to electric.ai slash radar. That's electric.ai slash radar.

00:12:00   Go there now to get your free pair of beats solo three headphones today for scheduling a qualified meeting. Our thanks to electric for their support of this show.

00:12:10   So I think hopefully the next thing to talk about is like we got our device testing set up the other thing that's up, I imagine many developers are handling and taking care of this time is your actual submissions.

00:12:20   And there's a few things that I think good to keep in mind regarding that it just sort of based on past experience, I think we can have an expectation for how things are going to go from here.

00:12:30   So, you know, last night, they do the event and then whatever a couple hours later I think it was the, you know, the lab the gold master version of Xcode was released so we could test and run.

00:12:43   And then a couple hours after that again, the app store connect, you know, was opened up for submissions and so you know I went through last night and I submitted all my, my updates, one for pedometer plus plus one for widgets Smith, I submitted those updates.

00:12:58   And they've actually as a recording they were just both both have been approved. So, great.

00:13:03   Congratulations.

00:13:04   It's a it's a very.

00:13:06   I always find it's a very stressful time that I've gone through, you just never know how things are going to go with that preview, and that this year went fine and sometimes you can just have, you can just get caught by you're using a new API in a way that, especially the way that I tend to write things where I tend to be kind of pushing the bounds of what's possible with these technologies and sometimes I then find myself on the wrong side of the line.

00:13:27   Where I prefer I'd be on the other, which is fine and I work through that and I, you know, it's, that's just part of the process but it's always a slightly, you know, I have a tremendous amount of relief coming into Monday, knowing that I have two versions they're good they're tested you know I've been, these are my, you know, I did my no new feet no more new features.

00:13:45   We could go and have just been testing and bug fixing and doing very sort of safe upgrades to these in sense of I've been, you know, how ideas and things that I want to work on, but I've been putting those off and like these are the safe stable versions that I have pretty good confidence on so I feel good going into it now that I have to approve versions.

00:14:02   And unless I found some kind of catastrophic bug. Regardless, I will rather submit the launch these two that I know I have, you know, approved from App Store. And then I can immediately submit a bug fix update or in a subsequent update or, you know, I have a couple of days to come up with other interesting things that could be really compelling.

00:14:20   And the majority of people aren't going to get your app update on the first day. So, even there you it'd be fine but it's good to have something ready for that, but there are a few gotchas and things that are just, you can really kind of put yourself in a funny place.

00:14:34   If you're not aware of. And so the first thing to say is that the way that this process typically works is if you are having brand new app that requires the new version of iOS or watch us or something like that.

00:14:48   So in this case if you wrote an app that requires iOS 17. If you submit that app and it is approved, rather than going into like pending developer release, it would go into pending an Apple release, essentially, in which case it would be kind of in this holding pattern and Apple will not allow that app typically to be then pushed out to the App Store because it's not a public based on a public release of iOS, so fair enough.

00:15:13   And the other side of that is if you support previous versions of iOS. So in this case if you support iOS 16, you support iOS 14, whatever that is, which you are building with the latest toolset to add features for iOS 17.

00:15:27   It seems like this year, every year is slightly different with this, but this year it seems, if your app is approved, it can go and be released into the App Store right now. So even though iOS 17 is not widely available, it is possible for your app to be out there with iOS 17 features.

00:15:43   Now, I suppose that you could view that in two ways. One is that that's terrifying and complicated and oh no, I need to be super careful not to do that because then your marketing and sort of rollout plan gets very complicated because the majority of your users don't have this feature.

00:15:59   And so if you message in your app that hey, here's these brand new features, they'll be like, well, what are these things? I can't get them. How is it going to work? It could be all kinds of problematic. Maybe you could say it's kind of like a soft launch and you can kind of ease your way in.

00:16:13   But generally speaking, my advice would be to, well, my advice in general is if you are submitting an app update to App Store Connect, always say manually release. Never have it automatically release just in general. I've been bit by that enough times to now just that is my default is that I wish it could just be a default.

00:16:35   But I always want to just manually release my app update. And in this case, I would say if you submit your app, it gets approved, awesome. Hold it till Monday. Maybe you could release it slightly earlier. As soon as iOS 17 is rolling out, which I think is typically noon Pacific is typically in my mind.

00:16:57   The time that I have for like when the actual like someone at Apple I imagine there is this big like command center somewhere deep in Apple Park. There's like a big red button under a plastic cover.

00:17:09   And there's two people with keys that have to turn them at the exact moment, then someone flips a button and then pushes the big red button that actually says iOS 17 goes to a billion devices.

00:17:21   Whenever that actually happens in my mind, it's usually around midday California time. So that's when you could expect it. But don't release your app until right around then. Or you could potentially say, hey, maybe I'll do it a couple hours before that, that you would expect.

00:17:35   You know, so you could potentially be one of the first apps that is fully propagated with the updates to it. But I think that in that level of timing and precision is probably not actually that meaningfully different, but hold it until then would be my recommendation. That's certainly what I'm doing because otherwise it just gets really confusing for your customers.

00:17:51   And it's not something that is super helpful versus them. If someone is running iOS 16, downloads your app update and says, oh, you're talking about these interactive widgets, I can't find them. It's a much easier thing to say, oh, you need to update to iOS 17.

00:18:07   And or even if they did that on their own and they go to the Settings app and there is no iOS 17 in there, that's just going to cause confusion. So just be aware of this. It's just something to keep in mind. And overall, it should be fine. And just be careful. Obviously, you could be in the slightly awkward place of if you are still at this point wanting to do a regular bug fix update between now and next Monday.

00:18:29   You just have to be super careful with how you do that. And there are bug fixes that I've been sitting on because I just don't want to do any other app updates at this point other than my major app update just out of fear of somehow breaking something, which would be a terrible situation to find myself in.

00:18:48   Yeah. Also, there is one warning again. It might be too late for you for this time, but one warning again. In the early days of the App Store, there were a few areas of App Store policy that were just absurdly stupid and dysfunctional. One of those was, of course, the big NDA.

00:19:10   The App Store NDA back in the original iOS SDK where the entire SDK was NDA so you couldn't ask questions on Stack Overflow about it. Imagine that today, right? That's ridiculous.

00:19:23   One such stupidity still remains in the App Store policies, and that is that you can still get rejected today for mentioning iOS 17 or the new OSes in your release description. People have been posting on Mastodon. It is still happening.

00:19:41   So when you submit your update to App Store Connect with your iOS 17 or watchOS 10 or macOS builds, don't say that in the release notes. You can allude to it. You can say updates for upcoming software releases or things like that.

00:19:59   But you cannot use the words iOS 17 or watchOS 10 or etc. in your release notes because if you do, there is a substantial chance, not 100%, but a substantial chance that they will reject you for mentioning pre-release software.

00:20:15   Even though they have announced it publicly twice, it doesn't matter. They will reject you for "pre-release software mentioning." This is really stupid, but they're still doing it, so it's something to be aware of. So just don't mention that in your release notes.

00:20:30   I will say typically you are fine if you make reference to new features. So saying "interactive widgets" or things like that are usually fine. It's just one of these funny things that usually I try to be very specific and clear in my release notes.

00:20:47   But for these particular updates, you sometimes have to be a bit more vague and hand-wavy about exactly what you've changed. I think it's good to not go the extreme of just being like "this is a compatibility update" and just have nothing of any value there.

00:21:03   Which is technically true.

00:21:05   Sure, it is technically true, but I think I would rather have something there.

00:21:08   I mean, it's a lot better than one year I went with "updates from the future" and they let that go.

00:21:13   Sure.

00:21:15   If they will allow you to mention features, that's probably a good thing. But what about if there's a branded feature like Dynamic Island? Were you allowed to say that kind of stuff?

00:21:26   Oh gosh, who knows? I would stay away from it.

00:21:29   I would avoid it.

00:21:30   The things that are capitalized, just use the phrase "interactive widget" I got through mentioning interactive widgets in mine. So I don't know, take that for what it's worth. But it's just a small thing that you don't want to trip you up in this very high turnaround situation.

00:21:54   If you get rejected for a real reason, great. Ideally you won't be rejected for a silly reason.

00:22:00   And I guess the last thing that's probably worth talking about is planning and thinking about for what next week might look like.

00:22:08   It's probably worth walking through.

00:22:10   Like I said, somewhere in California on Monday, someone will flip up the cover and hit the big red button and iOS 17 and watchOS 10 will go out to the world.

00:22:21   I'm picturing one of those giant knife switches instead. With the two poles and the handle where you reach your arm all the way to the ceiling and pull down this giant knife switch.

00:22:31   I can see that too. Honestly, I do hope it isn't just someone in some cube. It's just like "hit enter" and then that's it.

00:22:41   But that is probably what it actually is.

00:22:45   Hopefully there's a little bit of ceremony with it because it's kind of cool. It is kind of a fun thing.

00:22:51   The amount of effort and work that has gone into this update is probably worth a little bit of ceremony.

00:22:58   However they do it, and I would hope that there is some celebration within Apple about this, it'll go out.

00:23:05   Probably something worth keeping in mind is that while it's easy for if you are in the tech, if you interact a lot with techie people, you will see everyone is iOS 17 right away.

00:23:19   That's not actually the way that these rollouts tend to go.

00:23:22   If I look at the curves for my update frequency, it follows a very predictable pattern.

00:23:28   When it seems like Apple, in addition to having the big red button, they also have several smaller dials to tune exactly how many devices are getting the new version at a particular time.

00:23:41   Those are like purple, yellow.

00:23:43   Yeah, because essentially what will happen is the first day or so, it seems relatively few people will automatically be getting the update or being prompted to update. So you'll have maybe 1 or 2 percent, 2 or 3 percent updating at that point.

00:23:58   And it'll be this sort of slow thing.

00:24:00   Or they're just doing the App Store phase release.

00:24:02   It almost seems like it. And then it'll jump, and then it will jump again. And then at some point it almost goes vertical.

00:24:08   And you have this very steep, like they just, you know, they've, and I imagine this is internally with Apple, they're just making sure as much as they've done public betas, as much as they've done all the things, they don't want it to be, there's some glaring bug or some problem that turns out is going to just destroy 100 million iPhones.

00:24:26   That would be a disaster. And so it's better for them to roll it out very incrementally.

00:24:30   And so I think it's just important for us as a developer to keep that in mind. That it's not this thing where it's going to be this immediate switch. You're going to be supporting and the majority of your users are going to be running the old version for a while.

00:24:43   So just something to be aware of and keep in mind in terms of if you're doing customer communication, you know, someone emails you and is asking you about something, don't assume they're using the new version.

00:24:52   And ideally, in some ways, if you have a means for them to be emailing you within the app, potentially attach some debug information to that so that you can know what version they are running because it can be slightly confusing and slightly complicated because you may be giving instructions, especially with things like I run into this a bunch with things like permissions dialogues, where I need to tell someone how to, you know, sort of turn permissions off and on in the health app for pedometer++, say, you know, the health app changes and is different.

00:25:21   In various iOS versions. And so the instructions I need to give someone would change based on which version they're running. And so it's just an important thing to keep in mind that this process is not instantaneous. It's not like suddenly thing. All that will happen. And I think it's also fair to keep in mind that, you know, the next I would encourage most people to spend next week, you're mostly just going to be doing a lot, lots of dealing with little bugs dealing with issues that come up.

00:25:45   You know, don't expect to be relaunched, being able to turn back to major development immediately expect that there's going to be compatibility issues, there's going to be things, or honestly, there's just going to be opportunities that you didn't think of, which is another common thing that I feel like happens this time of year where it's the kind of, you know, it's always amazing where you can I've spent all summer, deeply thinking about say a feature like interactive widgets, I've tried to think of all the things I could possibly imagine my imagination has run wild.

00:26:13   And then inevitably, on Monday afternoon, some develop, you know, some user is going to email me and say, Hey, could I do this, and they're going to suggest like the most killer, amazing, wonderful feature that I just completely never, never imagined. And so that's awesome. And I want to make sure that I have sort of time and expectation built into my plans, such that when those ideas come up when something you know, someone is suggested, like a user points something out that you're like, Oh, this would be so much better if it did x, you'd be able to jump on those and be responsible.

00:26:42   Take advantage of the fact that the majority of your users won't have their first experience, like their first impression of your new features is likely not going to come for a week or two. And so you have about you have this nice window to where you can ramp up and polish and really refine with a wider audience, you know what your features are going to look like. So take advantage of that, and you use that to maximum effect.

00:27:04   See, I know I have a nerdy customer base, because I'm already at 7% iOS 17. It's not even out yet. 7% Although that being said, I do have one as in a single user on iOS 18.

00:27:20   There you go.

00:27:23   I got the early adopters using overcast.

00:27:27   Yeah, except I think I think mine is Kurt last time I looked it was like point 6% or something was running iOS 17. So yes, I think you're definitely a bit of an outlier there.

00:27:36   I mean, you're I think your user base is a little bit more diverse than large. But that being said, honestly, I think, because this is such a huge upgrade for widgets, I have a feeling you're going to see a more rapid adoption than usual, simply because like, obviously, that is your market. But also, like, that kind of thing tends to spread a lot, especially amongst young people, as you know.

00:28:01   And so you're going to have the power users there quickly, then you're going to have the young people there quickly. You know, those are two pretty substantially sized groups. So I'm guessing you're actually going to see a more rapid adoption than then, you know, iOS 16 or 15.

00:28:16   Yeah, I think that certainly could be the case. And I think with iOS 14, I definitely heard from many people that they upgraded to iOS 14 to get widgets. And so, who knows, maybe this year will be the same thing could be a fun pattern if that is the case.

00:28:29   Yeah. Well, congratulations on having a smooth, you know, GM day. This is this is like, I kind of dread this day every year, because it often has the potential, you know, to have a last minute thing thrown in it or to have issues with App Store Connect, or, you know, something gets clogged up somewhere or something something is like, kind of a surprise in a bad way.

00:28:50   And it seems like that didn't happen at all this year, it seems like this, everything went pretty smoothly, relatively speaking. And all your hard work paid off. And, and you got everything done yesterday, I'm hopefully getting all my stuff done today.

00:29:02   I'm not I don't have a ton of stuff to release, but I have some basic widgets. Hope you like orange. They're all very orange now. And, and it's hopefully going very smoothly for everybody. So, you know, good, good job planning for this, your your hard work paid off.

00:29:17   And best of luck with the launch and and, you know, hopefully this is all you know, going to go as smoothly next week as it has this week.

00:29:24   Yeah, no, exactly. I think it's, it's a fun time of year. And hopefully, yeah, I think we've been talking about this all summer about things that, you know, we can do to set ourselves up for success. And hopefully, if you've done those things, then you're set up for success.

00:29:38   Someday, I will be as good of a planner as you are that day is not today.

00:29:44   You just got to keep listening to under the radar and then you'll get there. I'm sure Marco.

00:29:47   Thanks, everybody for listening. And we'll talk to you in two weeks. Bye.

00:29:52   Bye.