Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

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 support alternative icons. In the … 

 

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 it already in your codebase. … 

 

Side Projects: 10 Tips for being successful

It’s common to have a side project as an engineer since we can build our ideas. At the same time, it’s also trending to start a new project before you’ve finished the previous one. You could say there’s a graveyard of many side projects that didn’t reach the public. While I’m a full-time employee at … 

 

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 of experiencing deadlocks. Deadlocks can … 

 

Variable WidgetBundle configuration based on conditions

The WidgetBundle protocol inside WidgetKit allows you to configure supported widgets for your apps. Whenever you add one or more widgets, you’ll have to add a @main struct conforming to this protocol. Like SwiftUI views, you’ll return the supported widgets inside the body computed property. You’ll not have issues with a consistent set of supported … 

 

Accessibility in SwiftUI explained for UIKit developers

Adding accessibility support in SwiftUI will be more approachable for you compared to UIKit. But still, if you’ve been sharpening your UIKit skills for years, it takes a while to get your head around the new declarative/reactive way of doing things. It is an entirely different mental model, and it takes some getting used to. … 

 

VoiceOver navigation improvement tips for SwiftUI apps

VoiceOver navigation support in your apps comes with the same requirements as navigating through touch controls. When navigating apps with standard touch controls, we tend to dislike apps that feel cluttered or make us do many interactions to achieve something. We’d probably say such an app does not offer a good user experience. The same … 

 

@ViewBuilder usage explained with code examples

The @ViewBuilder attribute is one of the few result builders available for you to use in SwiftUI. You typically use it to create child views for a specific SwiftUI view in a readable way without having to use any return keywords. I encourage you to read my article Result builders in Swift explained with code … 

 

Faster StoreKit testing by syncing in-app purchase products

StoreKit testing in the Simulator allows you to speed up testing in-app purchases for your app. You can test in-app purchases in Xcode by generating a StoreKit configuration file containing the available products for your app. You’ll be able to purchase products without connecting to App Store servers, without an internet connection, and you’ll be … 

 

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 to your apps. Shared with …