Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

Win one of the five The Mobile System Design book copiesJoin for free

Debugging SwiftUI views: what caused that change?

Debugging SwiftUI views is an essential skill when writing dynamic views with several redrawing triggers. Property wrappers like @State and @ObservedObject will redraw your view based on a changed value. This is often expected behavior, and things look like they should. However, in so-called Massive SwiftUI Views (MSV), there could ...

OSLog and Unified logging as recommended by Apple

OSLog is a replacement for print, and NSLog and Apple's recommended way of logging. It has different logging levels, like debugging, warning, and error logs. Altogether, it allows you to create an enriched logging experience fitting nicely in Xcode 15's new logging console. OSLog has a low-performance overhead and is ...

Network Extension Debugging on macOS

A Network Extension on macOS allows you to create content filters, DNS proxies, and more. They integrate nicely into the system settings and are often used for applications like firewalls and VPN services. While Apple provides several sample applications like this for filtering network traffic, they don't have an excellent ...

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 ...

Flaky tests resolving using Test Repetitions in Xcode

Flaky tests can be frustrating to deal with. You're ready to open your PR until you realize your tests fail on CI while they succeeded locally. You even realize your test is succeeding when executing individually, and you're almost at a point to say, "Merging in as tests succeed locally." ...

Using Custom debug descriptions to improve debugging

Custom debug descriptions can help you debug your own custom objects, structs, errors, and other types. Whenever you print out an object you might end up with basic information that doesn't really help you solve your issue. Printing out a struct shows you all the values while you might only ...

No space left on device: Testing low storage scenarios

No space left on device is an error message that starts to show up more lately. Over the years, storage has grown from 1GB to 1TB but with technologies like iCloud, we can also see storage stopping at 64GB. On top of that, we're making more content of higher quality ...

5 Xcode breakpoints tips you might not yet know

Xcode breakpoints allow us to debug and find out solutions for nasty bugs. Without breakpoints, it would be a fun fest with a lot of print statements everywhere in your code. The basic principles of breakpoints we probably all know but there's a lot more to discover! What are breakpoints ...

Xcode Instruments usage to improve app performance

Xcode Instruments is a developer tool that comes for free with Xcode. It has a lot of useful tools to inspect and improve your app. Although it has a lot to offer, it's often an area which is a bit less known. In this blog post, I'll show you how ...

Combine debugging using operators in Swift

Combine debugging can be hard with long stack traces which don't help at all. Asynchronous callbacks follow up on each other rapidly and easily make it hard to find the root cause of an issue. It's next to the big learning curve one of the most common reasons to not ...

Compiler Diagnostic Directives using a hashtag in Swift

The Swift standard library brings quite some compiler diagnostic directives by default. Although this might not ring a bell at all, a lot of them are quite known and listed in the Swift repository. Warning Warning can be used to manually trigger a warning on the given line. This can ...