Find any article in my blog

In this blog I talk about all things Apple and Swift development but my main area of focus is on tooling and automation.

New!
How to check if a modifier key is pressed when clicking on a menu bar item in macOS apps

Learn how you can provide different content or functionality when clicking on a menu bar item with a modifier key pressed in macOS apps using both AppKit and SwiftUI.

Using withObservationTracking to monitor changes in @Observable properties outside SwiftUI views

Learn how the Observation module's withObservationTracking function works and how you can use it to observe changes of an @Observable object from anywhere in your codebase.

How to keep your macOS app's menu bar item running after quitting the app

Learn how you can interrupt the app's termination and change your app's activation policy to keep the menu bar item running after the app has been quit.

How to change your app's business model from paid to freemium using StoreKit

Learn how to use StoreKit's AppTransaction API to change your app's business model from a paid app to freemium.

How to create and upload high-quality App Store assets with RocketSim and Helm

Learn how you can create App Store optimized stunning screenshots and app previews with RocketSim and use Helm to upload screenshots to App Store Connect.

Automate GitHub Tasks with GitHub CLI in Actions Workflows: A Step-by-Step Guide

How to leverae the power of the GitHub CLI from GitHub Actions to automate tasks such as issue management or pull request creation.

Automate Apple app code signing using fastlane match

How to fully automate the process of code signing your Apple apps using fastlane match to keep your signing certificates and provisioning profiles in sync across your team.

How to automatically update build and version numbers in your app using Fastlane

How to make sure your Xcode project's build and version numbers are always up-to-date using Fastlane.

How to expedite an app review on the App Store

A guide on how you can use expedited app reviews in exceptional circumstances to get your app reviewed faster than normal on the App Store.

How to install the same version of Ruby and Fastlane locally and on CI/CD

How to manage versions of Ruby and install Ruby Gems such as Fastlane both locally and in your CI/CD pipelines using GitHub Actions.

How to listen for property changes in an @Observable class using AsyncStreams

A comparison between ObservableObject and the new Observable macro and how to listen and react to property changes in both.

How to run Swift Data and Core Data operations in the background and share models across concurrency contexts

Core Data and Swift Data model objects can't be shared across different threads and doing so can result in data corruption and crashes. In this article, I will show you how to set up a fully thread-safe Core Data and Swift Data stack that performs all operations in the background.