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

How to build a Safari extension with SwiftUI

Learn how to create a Safari Extension as a popover using only Swift and how to render its UI using SwiftUI.

How to pass Bindings to views in SwiftUI's NavigationDestination modifier

Two approaches on how to pass Bindings to views in SwiftUI's NavigationDestination.

How to make ZStack content fully scrollable in a SwiftUI ScrollView

How to calculate the correct content size for a ScrollView when using a ZStack with overlapping views using offsets in SwiftUI.