Free course

Ship macOS Apps Course

Prepare, secure, sign, notarize, package, publish, update, and recover macOS app releases with an honest source-first path.

5 modules · 25 lessons · No signup

Prerequisites: Build macOS Apps with SwiftUI

~~~

Your progress

of lessons completed.

Course completed.

What you'll learn

Produce a traceable macOS release with a clear security boundary, verified artifact, safe installation path, and tested rollback plan.

Take this course offline

Subscribe to my newsletter to get every free book and course in PDF and EPUB format.

Get the downloads

Course contents

  1. Choose a distribution path

    Compare source-first, Mac App Store, and direct distribution and inventory the release.

    1. Choose source, App Store, or direct distribution
    2. Identify the app bundle
    3. Set version and build numbers
    4. Inventory runtime dependencies
    5. Check your understanding: choosing a distribution path
  2. Define the security boundary

    Configure sandboxing, entitlements, privacy descriptions, and Hardened Runtime.

    1. Enable App Sandbox deliberately
    2. Read the final entitlements
    3. Explain privacy-sensitive access
    4. Enable Hardened Runtime
    5. Check your understanding: defining the security boundary
  3. Sign and notarize

    Archive, sign with the correct identity, notarize, staple, and verify the exact app.

    1. Understand signing identities
    2. Archive a release build
    3. Submit to the notary service
    4. Staple and verify the ticket
    5. Check your understanding: signing and notarization
  4. Package and publish

    Create ZIP and DMG artifacts, publish checksums, and document unsigned previews safely.

    1. Create a ZIP with ditto
    2. Create and test a disk image
    3. Publish checksums and release notes
    4. Document an unsigned preview safely
    5. Check your understanding: packaging and publishing
  5. Operate releases

    Test clean installation, design updates and rollback, protect automation, and run the full checklist.

    1. Test on a clean standard account
    2. Design updates and rollback
    3. Protect release automation
    4. Run the complete release checklist
    5. Check your understanding: operating releases