So you want to create a macOS app …

Great! It’s a very nice platform, the tools are mature, the community is welcoming, and the results can look super nice.

Common UI Components

The Cocoa Text System

Aka “Text Kit” on iOS. This revolves around everything related to writing: NSTextView for the UI component, NSTextStorage for the processing of text and style changes, NSLayoutManager for the computation of line and glyph sizes, and for applying styles, NSTypesetter for putting glyphs on the screen.

All my posts on the text system are collected in the TextKit overview.

NSDocument

Distributing Mac Apps

Paddle

FastSpring

I sell my apps via FastSpring, and I like what they offer. So I’m both knowledgable about their service and personally invested. I think what they offer is great and very flexible.

Now I wrote a ton about FastSpring already, including an ebook guide. I’ll not repeat everything here.

Find out more on my comprehensive list of tips, tools, and resources on How to Sell Mac Apps With FastSpring

Posts on Mac app development

Jan 7 2026

Manually Mount the Metal Toolchain When Xcode Cannot

My computer suffers from Xcode not being able to access the Metal toolchain that is clearly installed on my system. I need to mount the disk image manually to fix this and make the CompileMetalFile error go away.

Aug 8 2025

Adapt Unidirectional Flow Virtues to Your Plain SwiftUI App

To get started, you can require authentication for actions on buttons anywhere in your SwiftUI app produce a change up the scene, e.g. a log-in overlay or dialog, by injecting a closure into the environment to handle that.

Jul 31 2025

SwiftUI DocumentGroups Are Terribly Limited

Document-based apps with SwiftUI are easy to write, but hard to customize apart from a couple visual tweaks. Say if you want to introduce in-app purchases.

Oct 26 2024

Composition Over Inheritance in NSViews

I noticed that I’m writing some AppKit/UIKit view components in a composable way that reminds me of the opaque nature of SwiftUI.View-conforming types: hiding away the actual 1st party APIs, providing very little surface area.

Feb 15 2024

SwiftUI Field Guide

Chris Eidhof released an interactive, animated resource to understand SwiftUI.

Nov 16 2023

Embracing the AppKit Ways

After starting the day with a pro-SwiftUI rant, to my surprise I end it with an embrace of traditional, tested and true AppKit patterns.

Nov 16 2020

Upgrading to Sparkle 2.x Branch

The Sparkle 2.x release branch is working fine for production when you switch from the ui-separation-and-xpc branch and enable DSA signing of updates.