Sponsored Link
Add paywalls in one line of code
Take the pain out of configuring and testing your app's paywalls. With RevenueCat Paywalls you can remotely configure and edit your entire paywall view without waiting on App Review. See how it works here.
News
Apple’s use of Swift and SwiftUI in iOS 18
Here’s Alexandre Colucci’s annual update to the spread of technologies and languages used inside iOS 18. If you’d like a quick summary, everything Swift and SwiftUI continues to go up and to the right, but there’s far more detail available in the post.
Tools
Preventing Accidental API Breaks
This is an interesting tool from Alex Guretzki, especially if you’re building an API for other developers to use. It will generate you a diff between API versions, ensuring you won’t surprise consumers of your API when you ship a new version. Yes, there’s diagnose-api-breaking-changes
built in to SwiftPM, but read the article to see if you might need more than that. For the full effect, you can even add this to your CI pipeline for automated checking you didn’t break/change anything.
Code
Now we’re all Forked!
If I had a pound (or dollar) for every time I had considered using Git to version files inside an app, I'd be a rich man.
What I realized back then is that this problem has already been solved very elegantly by a product that is extremely well-known and popular, and right under our noses. It's called Git.
Of course, Drew McCormack chose a more elegant solution inspired by Git instead of directly using it. That solution is now a new library, Forked, and I can’t imagine it’s anything but exceptional given his history in this area.
Accessibility That Fits
What a smart technique fromSoroush Khanlou for making text that fits, no matter the accessibility size your user chooses. I love it.
Creating a snow effect with SpriteKit and SwiftUI
The holidays might be over, but that doesn’t mean we’re done with snow yet (at least in the northern hemisphere!) and Natascha Fadeeva has just the thing for your apps in January and February. You might not have heard much about SpriteKit recently, but it still exists and works with SwiftUI! Add a snowy wonderland to your apps before spring arrives.
Design
Pinwheel
I meant to link to this new tool from Bjango last year, but I wanted to have a proper go with it first. I managed to spend some time with it and I can say that what might at first glance seem like a straightforward colour management tool is much more than that, especially for developers. Not only can you store versions of your semantically named colours for light/dark and low/high contrast. You can also export Swift code direct from the app with enough customisability that you’ll actually use it. I can’t recommend this enough.
For full disclosure, I received a free licence for review purposes.
Books
100+ Xcode Tips inside Xcode
I’ve linked to Xcode tips from Dominik Hauser many times over the last few years, and now all 100 tips are available in a DocC archive you can install into Xcode if you’d like them instantly available!
And finally...
It's so nice to read a happy story about something that could have so easily become impossible with various changes to macOS over the years.
Comment
Happy New Year, everyone! 🎊
I hope you all had a restful and relaxing break if you took time off, and I wish each of you a happy and prosperous 2025.
Last year was a year full of personal challenges for me, but I have plans for a much better 2025. I have plans for this newsletter too, and of course we have goals for this year on the Swift Package Index.
The plans for the newsletter include a new self-hosted publishing platform. Which should, if I can get the last few loose ends wrapped up, launch next week! The transition should be smooth, but in case you don’t receive next week’s newsletter, please do drop me a note to let me know! 🤞
I also can’t wait to see what all the fine folks at Apple have in store for us this year. Will we see new visionOS hardware? Will the M4 Ultra make it to machines like the Mac Studio and Mac Pro? What will WWDC 2025 bring? I have no idea, but I can’t wait to find out.
Dave Verwer