Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

Binary Targets in Swift Package Manager

Binary Targets in Swift Package Manager (SPM) allow packages to declare xcframework bundles as available targets. The technique is often used to provide access to closed-source libraries and can improve CI performance by reducing time spent on fetching SPM repositories. Both downs and upsides are essential to consider when adding ...
OptimizationSwift

Result builders in Swift explained with code examples

Result builders in Swift allow you to build up a result using 'build blocks' lined up after each other. They were introduced in Swift 5.4 and are available in Xcode 12.5 and up. Formerly known as function builders, you've probably already used them quite a bit by building a stack ...
Swift

Getting started with Unit Tests in Swift

Unit tests in programming languages ensure that written code works as expected. Given a particular input, you expect the code to come with a specific output. By testing your code, you're creating confidence for refactors and releases, as you'll ensure the code works as expected after running your suite of ...
SwiftXcode

Announcing the SwiftLee Talent Collective

Today I'm excited to introduce you to the SwiftLee Talent Collective — an initiative to connect engineers with exciting companies. One of the most frequently asked questions I get relates to how to find a new job or how to make the next career step. I wrote about Swift Jobs: ...
Swift

Alternate App Icon Configuration in Xcode

Adding alternate app icons to your app allows users to customize their home screen with an app icon that fits their style. An alternative icon could be a dark or light-mode version of the original icon or a collection of completely different styles. iOS 10.3 was the first version to ...
SwiftSwiftUI

Never keyword in Swift: return type explained with code examples

The Never type in Swift allows you to tell the compiler about an exit point in your code. It's a type with no values that prevents writing unuseful code by creating dead ends. While the type Never on its own might be a little unknown, you might have been using ...
Swift

Deadlocks in Swift explained: detecting and solving

Deadlocks in Swift can make your app hang, causing a frustrating situation for both you and your users. Your app becomes unresponsive, and you can often only solve it by restarting the app. While features like actors reduce the number of deadlocks you'll run into, there's still a high chance ...
DebuggingSwift

Shared with You implementation and testing explained

iOS 16 introduced Shared with You allowing you to showcase content shared in Messages inside your app. Users can find back content they would otherwise lose in the history of a long conversation. Apps like Photos, Music, and Podcasts have already implemented support, and now it's time to add support ...
Swift

Sendable and @Sendable closures explained with code examples

Sendable and @Sendable are part of the concurrency changes that arrived in Swift 5.5 and address a challenging problem of type-checking values passed between structured concurrency constructs and actor messages. Before diving into the topic of sendables, I encourage you to read up on my articles around async/await, actors, and ...
ConcurrencySwift

URLSessionConfiguration: Exploring opt-in configurations

URLSessionConfiguration can be used to initialize URLSession instances in Swift. While in most cases, you'll likely use the default configuration, you'll also have the opportunity to create a custom configuration with non-default settings. The default URLSessionConfiguration uses standard configurations that work best for most apps. However, no configuration fits all, ...
Swift

App Store Connect API SDK in Swift: Creating Developer Tools

The new App Store Connect API was announced during WWDC 2018 and made it possible to write applications for App Store Connect. You can use the API to fetch metadata for apps, TestFlight builds, download sales reports, and much more. Apple added new endpoints over the years, with most recently ...
Swift

Generics in Swift explained with code examples

Generics in Swift allows you to write generic and reusable code, avoiding duplication. A generic type or function creates constraints for the current scope, requiring input values to conform to these requirements. You've probably been using generic implementations already since they're all over the place in the Swift standard library ...
Swift