Sponsored Link
Nail the toughest tech interviews
Get trained by tier-1 instructors with individualized coaching and 1:1 sessions, mock interviews, and personal feedback. Register now for the next Interview Kickstart webinar and nail your next interview.
News
Provide your trader status in App Store Connect
You probably received an email yesterday telling you to add your “trader status” to App Store Connect. The legal definition of a trader is hard to parse, but I think RevenueCat’s attempted definition is reasonable:
If you make money with your app, probably.
Many people are upset about needing to provide an address and phone number that will be public, but don’t think it’s unreasonable. Maybe it’s because I’m used to needing to have a public business address in the UK, but I don’t have a problem with the EU requiring businesses not to be anonymous. If you’re on an individual account, it’s trickier, but if you’re making money then you might be about to cross that line to becoming a business. There are good tips on avoiding exposing your personal address in the RevenueCat article for those based in the US, so I’d recommend reading that.
Note: RevenueCat are a sponsor of this newsletter, but I am including this link here not as part of any sponsorship, but as it contained by far the clearest explanation I found about all this.
Visual Studio App Center Retirement
I’m sad to see the retirement of Microsoft’s App Center as it means the end of the timeline for HockeyApp, which was always my favourite way to distribute apps for testing before Apple released their integration of the competing TestFlight service¹. The retirement makes perfect sense, of course, since both Apple and Google have fantastic pre-release distribution systems, and Microsoft gives details of other services that people can use for the other pieces of functionality it had. I was sceptical but also hopeful when the acquisition happened, but it turned out much better than expected. I doubt many of you were using App Center in 2024, but I link to this announcement mainly because I want to give one more link to HockeyApp. 🫡
¹ One of the rare occurrences where Apple purchased a company and didn’t rebrand it. There are others, like Siri, Beats, and Shazam, but they are few and far between.
Tools
How to link to native type extensions in DocC
Daniel Saidi on DocC in Xcode 15:
While DocC was already great, Xcode 15 made it even better. You can now use metadata to describe your pages, create interactive tabs and grids, and much more.
He goes on to explain one of the biggest features in this year’s DocC release, support for documenting your extension methods.
Code
Nerdy internals of an Apple text editor
I enjoyed Mihhail Lapushkin’s write-up on creating a TextView
-based editor. He tackles lots of background and high-level details in his first article and moves to the technical side of things in the second part. Both are very well-written and illustrated, and I’d recommend checking them out!
Sending trial notifications with provisional authorization on iOS
As Natalia Panferova explains in this article, “provisional” push notifications are a powerful way to show your users that your app can provide useful information via push before without needing any opt-in from users at all. This doesn’t use a new API, it was introduced with iOS 12, but I don’t see enough apps taking advantage of it.
Complementing Unit Tests with Performance Checks
We’ve all probably run some kind of benchmark against a piece of code we’ve written at some point, but I bet most of them get thrown away once we reach the point of “Yep, it’s good enough!”
How about if we made that benchmark a part of our test suite, so we know if it regresses? Joakim Hassila believes that would be a good idea, and made a package to make it easier!
Guide to Naming SwiftUI Components
This is a great tip on naming SwiftUI components, and a great example that not all blog posts need to be epic! Useful is useful. 👍
Jobs
iOS Engineer @ trivago – trivago, a metasearch engine using real-time auction and petabytes of data, enables millions of travelers compare hotel prices from hundreds of booking sites. Based in Düsseldorf, we foster a culture of learning and innovation, embracing flexibility for our talents to shape the travel industry. – On-site (Germany) with some remote work (Anywhere)
Senior iOS/macOS Developer @ Paste – Joining Paste means crafting impactful, user-focused products alongside a team that values innovation, flexibility, and a culture of collaboration. Dive into projects that push the boundaries, enjoy freedom in how you work, and help shape the future of productivity tools. – Remote (within European timezones)
If you’d like to see your job featured in iOS Dev Weekly, post it on iOS Dev Jobs and select “Featured listing” as you check out, and it’ll be in next week’s newsletter. 🎉
And finally...
You thought you had a tough debugging problem? Think again!
Comment
Watching this video from Daniel Leivers demonstrating his master’s dissertation this week set me thinking.
What Daniel has built is clearly impressive. You can sketch UI with your iPad’s pencil and see real interactive UI or Swift code appear alongside it. The app uses a model created from sketched UI components fed into the yolov5 algorithm and converted to a CoreML model to generate code from the identified UI components. It’s a good idea and makes a fantastic demo. If you’re interested in reading his dissertation, it’s available here.
I took a couple of things away from Daniel’s video. With all the light shining on GPT and LLMs at the moment, it’s easy to forget that CoreML is still capable of building amazing features like this. It’s also easy to think that AI means “running in the cloud” with how resource-intensive LLMs are, but this all runs locally.
But more significantly, his video set me thinking about progress. Thinking back to my own final year project that made up part of my software engineering degree that I completed in 1996, 28 years ago. I created an HTML editor using Borland Delphi 1. Remembering what my app did, it seems almost comical. It did not have an integrated browser preview, syntax highlighting, auto-completion, auto-indentation, or any number of other features that would be table stakes for even the most basic code editor today. To give you an idea, it was a slightly less capable version of something like this. I was still proud to complete it, though, as I am sure Daniel is proud of his project.
But still, I stood on the shoulders of giants to create my little 16-bit text editor, and so did Daniel with his remarkable iPad app. There are obvious dependencies like the machine learning algorithms and CoreML, but there are so many more that you might not immediately consider. Think about some of the more “mundane” parts of his app. How difficult would it have been to implement the sketching functionality without PencilKit? Not to mention technologies like SwiftUI, UIKit, the Swift language, Foundation, and even Darwin!
I don’t say this to undermine the amount of work Daniel did on his project. I want to celebrate the amazing technologies and development environments we have access to today that make projects like this possible as dissertations.
We truly do stand on the shoulders of giants I stood on the shoulders of the giants that created Borland Delphi, HTML, and the web back in 1994 and Daniel stands on countless researchers and computer scientists that made his project possible. One of the things I love about this industry is that even if we build an app in a team of one, we’re not working alone. Whether open or closed source, the APIs that others create are constantly pushing the industry forward and it’s a huge part of why it’s one of the fastest-paced industries that exist. I find it incredibly inspiring.
Dave Verwer