Subscribe for weekly commentary and coverage of Swift and Apple platform development. Written by Dave Verwer and published every Friday. Free.

Picture of Dave Verwer

Issue 696

24th January 2025

Written by Dave Verwer

Comment

I was surprised to read that the folks over at Tuist had launched a SwiftPM package registry when I saw their post in my RSS reader this morning. I didn’t have that on my January 2025 bingo card! 😂

SwiftPM had a rocky start. Apple announced the project alongside the announcement of Swift becoming open source in 2015, but it didn’t become useful for iOS, macOS, and other Apple platform projects until 2019.

Package registries had an even rockier start. Announced in partnership with GitHub in 2019, SwiftPM and Xcode quickly gained support for connecting to a registry, but the GitHub project never materialised. We’ll never know what happened there, but it’s clear that the project failed. Since then, some companies have announced private registry support, like JFrog and Cloudsmith, but those services are mostly for hosting private packages.

So, it’s great to see a registry containing all the open source packages launch!

That said, Tuist’s implementation lives in a slightly strange middle ground for a package registry. As I understand it, this is more of a “mirror” registry, with the difference being that you won’t ever swift package-registry publish to this like you would with a full registry. Instead, it grabs sources from GitHub and bundles them into a registry. Don’t get me wrong, this is still a great step forward for the package ecosystem. It’s just maybe not what you might think of as a full registry.

So, give it a try! There’s a good video embedded in the launch post to get you started using it.

Dave Verwer

Discover How AI Enables Zero-Maintenance Apps

Watch Instabug’s CPO, Kenny Johnston in this recorded webinar as he showcases how cutting-edge AI is changing the mobile observability and app quality game. Discover how AI automates the detection and fixing of app quality issues, leaving mobile teams to focus on new features and innovation. Watch now.

News

Apps without trader status will be removed from the App Store in the EU

If, like me, you’ve been ignoring every reminder email and putting off declaring your trader status, you won’t be able to put the task off for much longer. I tried to do mine this week and realised my company address was incorrect, so I have a request in to change that, and then I’ll submit my trader status. It was a good reminder that you shouldn’t start this task too close to the deadline of the 17th of February, though.


Introducing the Advanced Commerce API

The purpose of this new API wasn’t immediately clear to me, and I thought I was going to have to read the documentation. 😱 Luckily, I then found this excellent overview of what it does from David Barnard, which I would thoroughly recommend reading.

If you use StoreKit 2 and have an “exceptionally large” set of IAPs, or a huge portfolio of apps, then this might be for you. I’d love to hear from anyone who applies and gets into this programme to hear what you’re doing with it.


Attending Apple Intelligence and App Intents workshop at Paris

I link to the in-person events Apple continues to run quite frequently, but very rarely hear any feedback from anyone who attended one. Luckily, Thomas Durand wrote up his experience at a recent Apple Intelligence event in Paris. Read on for a summary of the event process and what he learned!

Code

Color mixing in SwiftUI

Having a lighten or darken function when it comes to adjusting colours in your app is one thing, having a mix function, as SwiftUI does, is something else. ❤️ Majid Jabrayilov explains.


Reducing Motion of Animations

Do you pay attention to your user’s preference to reduce the motion of animations in your app? Keith Harrison reminds us all why we should, and shows us how.

Design

Creating custom SF Symbols using the SF Symbols app

Peter Friese:

In many cases, all we need is a variation of an existing SF Symbol, for example a document with a badge to indicate the status of the document (e.g. read / unread). Or, a striked through version of an icon to indicate a certain feature is disabled.

This technique gives SFSymbols a whole new lease of life. I love it.

And finally...

Putting all this together has left me with probably one of the most hacked up piles of software that somehow works together advanced audio stacks in any McLaren 720S.