Transitioning to Apple M1 silicon for iOS apps
Learn about the 3-step process to transition your iOS development to Apple M1 silicon Macs — with insights from Reddit’s successful M1 transition, FAQs about the transition, and helpful M1 transition tips. Read more.
The Future of Foundation
The last thing I was expecting as we wind down 2022 was a major Swift announcement from Apple, but that’s what we got! The Swift team are planning to rebuild Foundation from the ground up as an open-source project. 🚀 The most significant win here will be for cross-platform Swift, but there are benefits on all sides, as you’ll read in Tony Parker’s post on the official Swift blog.
I also want to mention how nice it was to see the initial announcement of this change from Apple at a community conference. They may have made announcements at the LLVM conference before, but if not, I think this might be a first since the days of Macworld Stevenotes! 👏
I was sad to read this post from Anastasia Kazakova announcing an end-of-life plan for AppCode. Some people will dearly miss it but never quite made it big enough in the Swift development community to become mainstream. It got close, though, especially a couple of years after it first launched.
Competition in this area is a good thing, but with Xcode being so good and VS Code’s support for Swift getting better every day, it’s an extremely tough market to enter with a paid product.
The reasons behind subsetting AppCode make sense, but the Swift tools ecosystem will be poorer without it.
Working around simctrl not working on iOS 16 simulators
The first thing I notice in any App Store screenshot is an ugly status bar. It may be irrelevant in the grand scheme of things, but it shows me that an app author has an eye for detail. If you’re using
simctl or an app that uses it behind the scenes to set a “perfect” status bar and have noticed it stopped working recently, you’ll want to read this post by Jesse Squires.
It’s also worth mentioning that SimulatorStatusMagic is still diligently maintained by Chris Vasselli and Nick Brook. They assured me it would still be helpful to people when I attempted to retire it, and they were right. 🙏
Improve Debug Output
This is a good tip from Dominik Hauser. These should be different colours by default.
Oh, and if you're not familiar with breakpoint output, Mark Szymczyk happened to write up a guide this week, too.
Lottie still blows me away. I love the idea that designers, artists, and animators can use a powerful tool they are familiar with without making compromises inside the native app, where they eventually get rendered. It’s magic!
It has also been around for a long time, so why the new link? Cal Stephens explains the significant behind-the-scenes upgrade to rendering that accompanied this recent v4 release. It’s worth reading whether you use Lottie or not!
iOS In-App Subscription Tutorial with StoreKit 2 and Swift
There are several things to mention about this StoreKit post from Josh Holtz. First, it’s on the RevenueCat blog but it doesn’t use their service. It covers implementing StoreKit subscriptions using only Apple’s APIs. Secondly, it’s comprehensive, with over 5,000 words, extensive sample code, and a companion GitHub repository.
I’m sure the post’s primary purpose is to say, “Look how much work you’ll have to do if you don't use RevenueCat”, but I don’t think that matters much. If you’re implementing StoreKit from scratch or are trying to solve a problem in your existing StoreKit implementation, I’m sure you’ll benefit from reading this guide.
For disclosure, RevenueCat has been a sponsor of this newsletter.
Swift Enum With Labeled Associated Values
If I could make one edit to Marco Eidinger's post on labelled associated enum values, it would be to move this advice from the very bottom of the article to the top:
Clarity is more important than brevity
Give it a read and let thousands of beautifully labelled enums thrive! 🚀
This post from Dan Hollick helped explain many things about shaders that I half knew but never really understood. Shaders may not be immediately relevant in your day-to-day work, but it’s always a topic that has interested me, so it probably interests some of you, too! He also recommends The Book of Shaders, which looks great. 👍
Business and Marketing
Walk the Line: iOS Account Deletion
I enjoyed every word of this post from Nick Wilkinson on the new account deletion rule and how tricky it is for both developers and the App Store review team. During the latest “Ask Apple” event, he put some questions to the review team, then kindly took the time to write up his findings. You’ll want to read this if you have account creation/deletion in your app.
Freelance Interview Engineer (US Only) @ Karat – We're dedicated to improving access in tech. If you are too, join us as a Karat Interview Engineer. As such, you'll conduct technical interviews of developers like you on behalf of our hiring clients (including Duolingo, Indeed, and more) using the Karat Platform and its data-tested questions. – Remote (within US timezones)
Senior iOS Developer @ komoot – You’ll work with a genuinely inspiring product that brings real-life value to our users and empowers them to explore more of the great outdoors. We offer challenging tasks like turn-by-turn navigation, maps, on-/offline hybrids, data synchronization, and nearly everything the iOS platform provides. – Remote (within European timezones)
Senior Mobile Engineer @ Emerge Tools – At Emerge you'll help build the future of mobile development and contribute directly to products used by many of the biggest mobile companies in the world. An ideal candidate would be passionate about the intersection of operating systems, runtimes, and developer tools. – Remote (Anywhere)
Senior iOS Engineer @ Doximity – Doximity, the medical network used by over 80% of US clinicians, is hiring passionate iOS engineers (fully remote!). Come be part of an amazing product team + work on an app that is constantly evolving. Use your skills (Swift, TCA, Combine) to be an integral part of our growing telemed feature. – Remote (within US timezones)
iOS SDK Developer @ Stream – Do you want to work on an open-source chat SDK used by hundreds of high-profile companies and startups that impact billions of users? If you are a product-minded engineer and care about software quality, apply on the link below. – Remote (within European timezones) or on-site (Netherlands)
There’s only one thing to do with 700 new App Store price points! 💸
As we head into the festive season, I find myself looking back on 2022. The world still feels like it’s heading in the wrong direction in so many ways, but as day-to-day life starts to more closely resemble pre-pandemic times, it has been a much more pleasant year than the last couple.
In the world of Swift and Apple platform development, we started this year amongst an avalanche of rumours that I didn’t believe:
I’ll take a win on that one! It wasn’t all success, though, as I did suspect we might see a watch face SDK this year, and that didn’t pan out at all. 😬
I like to read back through my introductory comments at the end of the year. I don’t particularly enjoy it, it gives me the same feeling as listening to audio of myself speaking, but I find it’s valuable, and there were a few comments that I felt happy with as I re-read them.
My thoughts on issues with App Store business models and VC funding (and the follow-up) still feel relevant. I was also pleasantly surprised when I re-read my thoughts on AR user interfaces and the Swift plugin for VS Code. Finally, I was happy to highlight the great work on the Parse platform that survived abandonment.
It was also a big year for the Swift Package Index, with our primary focus this year being to build a robust package documentation system. Over 225 packages have adopted that documentation system, which is wonderful to see, and we’re proud to continue our work supporting the Swift open-source package ecosystem.
I hope you all take some time to look back and celebrate your achievements this year, too. I also hope the next few weeks are a time for celebration with family and friends and a break from work.
Finally, I want to thank you all for continuing to read what I have to say. This newsletter would not exist without you. As usual, there will be no newsletter next week and a “Best of And Finally…” the week after. Regular service will resume on the 6th of January, 2023. I’ll See you then!Dave Verwer