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.

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