Sponsored Link
Fast, AI-powered test automation for web and mobile with Testim
We're built to help Agile teams efficiently manage and scale their automation projects. Quickly author AI-stabilized UI and end-to-end tests on real and virtual devices. Learn more about Testim Mobile.
News
Special Apple Event
I don't expect much Vision Pro news at this event. Instead, I expect it to focus on the products that fund the development of the Vision Pro and visionOS! 🏦
Tools
Automated accessibility audits in Xcode 15
I love that Xcode 15 allows you to get an accessibility audit from any UI test and report issues as test failures. How? There’s a WWDC video or this post from Pol Piella where he also talks about integrating these tests into your CI process.
Code
Enabling drag reordering in SwiftUI lazy grids and stacks
Do you want the drag and “get the other stuff out of the way and show me where I’m about to drop this thing” (yes, that’s the technical name! 😂) behaviour of SwiftUI’s List
for lazy grids and stacks? Daniel Saidi, Kai Zheng, and Roman Mirzoyan have just what you need. This feels like a real community effort!
Running Code When Your View Appears
Is there a difference between task and onAppear view modifiers when setting up a SwiftUI view’s state? It turns out there is, as Chris Eidhof explains.
Swift Typo Detector
What’s the next step after Manu Herrera’s script to find all of the typos and spelling mistakes in your source code? Unit tests for comments? 💡
Design
Plussing your iOS app
What a great set of tips on “plussing” your app from Sam Gold. The suggestion to colour grade your dark and light views is especially effective, in my experience.
Business and Marketing
RevenueCat Paywalls
There will always be some apps that need more than a “standard” paywall UI, but what most apps need is to get the basics right. Tell potential customers what they’ll get, explain your pricing, and show a big purchase button. The thing is, it’s so easy to mess it up! You might break an App Store rule or, even worse, make something that doesn’t convert. I love the idea of making this easier, and with support for experiments, too, this looks compelling. I wish Apple had tackled this problem!
For full disclosure, RevenueCat is a regular sponsor of this newsletter, but I found this announcement through their blog’s RSS feed.
Jobs
Software Engineer, macOS @ Raycast – Build something you actually use. Ship every two weeks. No bureaucracy bs. Hack on ideas every Friday. Location-independent salary. Remote, UTC ± 3 hours. – Remote (within European timezones)
Is your company hiring? You can still list open positions for free on iOS Dev Jobs.
And finally...
The Apple & Grand Theft Auto mashup you didn’t know you needed. 🚨
Comment
I noticed Mike Gerasimenko’s new XcodeSelectiveTesting library this week, and it set me thinking about how we run tests in Xcode compared to my previous experience with other development environments.
Mike’s library uses Test Plans to reduce the number of tests that need to be executed based on calculating what tests have been affected by the files you’ve changed. Of course, you’ll still want to run your complete test suite regularly, but when tests break, there are real benefits to getting quick feedback, and running fewer tests is a great way to make your tests run faster!
My main experience developing with other languages comes from writing Ruby code, where I found guard invaluable. It’s a tool that runs alongside your editor and runs any affected tests whenever you save any file in your project. It changed how I used tests, as the effects of any changes were instantly apparent, and I still use it every time I need to change a Ruby project.
Compare that to how I work today, where our test suite on you know what takes over two minutes to run. As a result, I run the tests far less often and sometimes only figure out I’ve broken something when CI tells me. 😬
I know it’s early for feature requests for Xcode 16, and I know that with Swift being a compiled language, it won’t be easy to reach the same level of convenience as seeing test results a second or two after saving a file. However, I’d love to see Apple move towards a model that makes what Mike is doing with XcodeSelectiveTesting unnecessary and towards having Xcode give developers constant feedback from test suites.
Dave Verwer