Sponsored Link
Run iOS builds on M1, Intel or both with Orka
Orka 2.0 is now available and includes support for macOS build and test VMs on Apple silicon (M1) nodes – either as a fully ARM-based environment or combined with Intel nodes to create a hybrid cluster. Learn more.
News
Swift to participate in GSoC 2022
Google Summer of Code is a great initiative and has brought many new people to open-source development. The Swift project has been involved since 2018 and is participating again in 2022! Apple has collected some ideas for projects, but you can also submit your own. Good luck to everyone who applies!
Xcode 13.3 and Monterey
This is an excellent reminder from Donny Wals that if you've not upgraded (or more likely not been allowed to upgrade by your company's IT department), now is the time to fix that because Xcode 13.3 requires macOS Monterey.
Tools
How long do your builds take?
I hadn't come across this Xcode setting until I saw this tweet from Paul Hudson. For me, it's so much more helpful to know how long my build took rather than the time it finished.
Just be careful copying the command from the Tweet. It copied with an http://
for me as Twitter thought the bundle ID was a web address. Here's the full command if you want to copy it:
defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
I wish this were on by default!
Manipulating in-flight networking requests and responses
I love this idea from Natascha Fadeeva! I've regularly used a proxy for observation but have never modified a response with a breakpoint. What a great way to test quick changes without re-running/re-deploying a server. I just checked, and both Charles and Proxyman support this.
The case for creating a merge commit
I'm on "team create-a-merge-commit", too! I think a quick rebase of a feature branch before merging can be helpful so that history is a little easier to read, but if that rebase takes more than a few seconds, it's not worth doing. Gio Lodi is keen to say that his way is not best, and he's right that there's no one "best way", but this approach is a decent place to start.
In my experience, the subtlety of seeing individual commits if you ever need to look back over history is more important than any amount of "cleanliness" that squashing commits gives. Just remember that your git history ultimately doesn't matter very much and certainly doesn't improve your product, so don't worry about it too much!
Code
State restoration in SwiftUI
Implementing state restoration is one of those thankless features. People only notice when you don't do it properly. Be like Majid Jabrayilov and give your users a great experience every time they load your app! 💎
Design
Bad words are bugs
I'm always trying to improve and tweak in-app copy. In fact, if you've ever worked with me, then you may have given up writing copy knowing I'm about to review. You know I'm going to try and tweak it or re-word it! Incidentally, I know that's not a good thing. 😬 I'm trying to improve! Anyway, Here's a great article that'll make you think more about how people will feel reading your error messages.
Business and Marketing
Should you use App Bundles for upgrade pricing?
The lack of being able to do "upgrade pricing" must be the longest-running complaint that developers have had since the launch of the App Store. Bundles make it "possible", but before you consider trying to use them, read this cautionary tale from Christopher Atlan.
Jobs
Senior iOS Engineer @ The Fabulous – Do you have great expertise in iOS app development? Do you like to push technology forward? Do you feel that helping people around the world achieve healthy habits is an important and meaningful mission for you? Then you should join the Fabulous mobile team. – Remote (within European timezones)
iOS Developer @ Doximity – Doximity, the medical network used by over 80% of US clinicians, is hiring passionate iOS engineers (remote). You'll be part of an amazing product team and work on an app that is constantly evolving. Use your skills (Swift, MVVM, FRP) to be an integral part of our growing telemedicine feature. – Remote (within US timezones)
iOS Developer @ onX – onX is a pioneer in digital outdoor navigation. We bring our outdoor passion to work every day with a singular goal–to awaken the adventurer in everyone. We do this by engineering industry-leading technology, and by crafting dynamic outdoor experiences. – Remote (within US timezones)
iOS Engineer @ Clay – We believe that Clay is the most stunning, powerful, and beautiful way to remember who you’ve met—and what matters to them. Clay is growing quickly, and our iOS app is extremely important to all we do. We like to be on the cutting edge- we are one of the most advanced SwiftUI apps in production. – Remote (within US timezones)
Senior iOS Developer @ Flightradar24 – With over 2 million daily users, Flightradar24 is the world’s most popular flight tracking service. As a member of our small iOS team, you'll work on every part of our app and have a lot of impact. We care about code quality and building the best possible product, and so should you. – Remote (within European timezones)
iOS Developer @ Maple Media – Maple Media is an innovative mobile media company that acquires and operates category-leading apps that entertain, empower productivity, and enrich everyday life. – Remote (Anywhere) with some on-site work (United States in CA)
There are plenty more jobs available over at the main iOS Dev Jobs site. Or, if you're hiring you can post your job for free!
Comment
I continued my grand tradition of being wrong about Apple announcements with last week’s comment! 😅 I predicted they’d show us what the larger iMac and Mac Pro would look like, and we saw neither! Instead, it was about the product I said I wouldn’t even mention, the Mac mini Pro, or as Apple called it, the Mac Studio! 😍 It does replace the larger iMac, though, so maybe I get a few compensatory internet points for that? 🤷♂️
I’m sure you watched the event, so I’ll not recap any of the details, but the question I’m sure you’re all asking is, “How fast will Xcode compile my project with an M1 Ultra?”
Assuming you have a big enough project to keep that many cores busy for an extended period, I’d expect Xcode performance on the M1 Ultra to scale in line with the increase in CPU cores and be around twice as fast as the M1 Pro/Max. The returns may start to diminish as the number of cores increases that high, though, so it’ll be interesting to see real-world benchmarks.
With that in mind, you may remember the post comparing the M1 Pro and Max chips on the Swift Package Index blog last year! If I can find a couple of people with different specs of M1 Studio machines, then we can update that post with new results. Drop me a reply to this email if you have an M1 Studio arriving around launch day and would be willing to run the SPI benchmark tool, and I’ll get it organised! 🚀
There’s one other note I want to add to this week’s issue. For the past two weeks, I’ve been torn about whether I should say something about Putin’s appalling invasion of Ukraine. I had a few words about it in early drafts of Issue 547’s comment but everything I wrote felt like I was echoing the same few words that everyone else was saying. It felt like whatever I had to say was so inconsequential that I decided to remove them and keep the newsletter focused and on topic. Unfortunately, several people were unhappy that I didn’t say anything, and I received harsh feedback for not speaking out.
The following day, we discussed sending some help to the Ukrainian Red Cross on behalf of the Swift Package Index. We donated the sponsorship income from February and matched it with personal donations. We didn’t want to shout about what we were doing, but we made a short blog post and added a banner to the site to accompany the donation and show our support.
Despite the feedback urging me to speak out, I still felt ill-suited to say anything last week, just as I do today. I may not express it to the degree some of you would like to see, but I care deeply about what’s going on in Ukraine.
Dave Verwer