Resources useful in learning about development native macOS apps.
If you have content to add, or notice an error, please open a pull request or issue with your changes. I'd very much like for this to be a collaborative source of information.
- Xcode Server and Continuous Integration Guide: About Continuous Integration in Xcode
- Xcode Server API Reference
- macOS - Human Interface Guidelines (HIG)
- Apple Design Resources
- Human Interface Guidelines Extras by Sindre Sorhus
- Design and implement macOS document icons
Some tweets from Jeff Nadeau about menu bar icon sizing and design:
You get 22pt of height (and wouldn’t want to extend into the margins except for fine details) so that seems fine. In Big Sur a symbol image is ideal. The size, weight, and baseline are chosen to be consistent across menu extras, and it works w/ the “bigger menu text” AX pref
One technique is to design within a 22pt bounding box so you can pick the exact vertical bearing of your icon within the whitespace. (We did this for the original Touch Bar icons. We allow “full bleed” content there, so the icons were uniformly produced in a 30pt tall canvas.)
Code signing is one of the most confusing and complex parts of developing for Apple platforms. Here are a few helpful guides to help make sense of the process.
- Code Signing for macOS
- Notarization for macOS 10.14.5+
- Apple Developer Certificates - A great reference of all the different types of certificates involved in developing for Apple platforms.
In order for dynamic log messages to show up in Console.app, you must use the {public}
modifier on the value
let variableToInsert = "hello"
os_log(.debug, "message with variable: %@", variableToInsert) // prints: "message with variable: <private>"
os_log(.debug, "message with variable: %{public}@", variableToInsert) // prints: "message with variable: hello"
- NSResponder - AppKit
- Event Architecture - Cocoa Event Handling Guide
- Debugging the Responder Chain | mjtsai.com
- Cocoa Programming for OS X - Somewhat out of date, but filled with lots of essential Mac programming information, with examples in Swift
- Hacking With macOS - From Paul Hudson. Up to date with SwiftUI and his books recieve lifetime updates.
Sites with high quality development content, that is sometimes or always focused on the Mac:
- Bitsplitting by Daniel Jalkut
- chris.eidhoff.nl by Chris Eidhof
- Cocoa with Love by Matt Gallegher
- Hacking with Swift by Paul Hudson
- inessential by Brent Simmons
- Lapcat Software by Jeff Johnson
- LostMoa by Matthaus Woolard
- mjtsai.com by Michael Tsai
- NSHipster by Mattt
- oleb.net by Ole Begemann
- Rambo.codes by Gui Rambo
- Swift by Sundell by John Sundell
- TrozWare by Sarah Reichelt
- tyler.io by Tyler Hall
- User Your Loaf by Keith Harrison
Online communities that are focused on macOS app development:
People on Twitter who (at least sometimes) tweet about macOS development:
- @_inside
- @brentsimmons
- @chriseidhof
- @cocoawithlove
- @danielpunkass
- @jnadeau
- @johnsundell
- @kharrison
- @krzyzanowskim
- @lapcatsoftware
- @macsome
- @mattt
- @mjtsai
- @mxcl
- @olebegemann
- @patrickwardle
- @rydermackay
- @sindresorhus
- @twostraws
- @UINT_MIN
- lists.apple.com Mailing Lists - old school mailing lists, but sometimes the only source of good information
- Open Source Mac Apps - a list of open source Mac applications on GitHub for your perusal
- TIL | macOS by Jesse Squires - Another great list of macOS development resources
This document is maintained by me, Isaac Halvorson. I started this after making the jump from iOS development to macOS development, and noticing a distinct lack of good content pertaining specifically to developing for the Mac platform. After some chatter recently about this on Twitter, I figured it was high time someone started to catalog these things somewhere.