Stay up to date with the latest iOS CI/CD news

Every two weeks, directly to your inbox and packed with everything you need to know and be aware of so that you're always prepared for the next app release!

Read and trusted by engineers from:

Issue 92

Hey everyone! I hope you’ve all had a fantastic couple of weeks — welcome to another issue of the newsletter!

It has been another busy couple of weeks. This issue covers Apple’s new EU business terms, what a package registry actually is, generating promo assets from UI tests, and using SwiftPM traits to cut transitive dependencies.

Now, let’s dive into it!

🇪🇺 Changes for apps in the European Union​

Apple is moving every developer that distributes apps in the EU onto a single set of business terms.

Among the changes, the per-install Core Technology Fee is becoming a 5% Core Technology Commission on digital transactions outside the App Store, effective October 1, 2026. You can agree to the updated license agreement today in App Store Connect.

📦 What is a Package Registry?

When Swift Package Index joined Apple, they said they would help build a package registry for Swift.

This post explains what a registry actually is, and how it differs from an index. If you are interested in trying one out, you can already do so with the Tuist registry.

🎥 Using an automation to generate promotional assets

I always love featuring articles from my good friend Noam Efergan, and this time he showcases an automation that generates promotional assets from UI tests.

Instead of recreating screenshots by hand, Noam freezes the real SwiftUI screens with a debug launch argument and lets XCUITest capture them to later use them as promotional assets.

✂️ Using traits to reduce the number of transitive dependencies

SwiftPM traits let you opt into only the parts of a package you actually need, which is a great way to cut down on transitive dependencies.

Point-Free have just used this in libraries like SwiftNavigation, so you can enable traits such as Perception or CasePaths and skip the rest. This is a really good trick to keep in mind for package maintainers.