macos-auto-update

Integrate Sparkle auto-update support into native macOS apps with appcast feeds and EdDSA signing.

Updated Mar 12, 2026
One-click install
npx skills add https://github.com/RavitejaKarra24/dotfiles --skill macos-auto-update-ravitejakarra24
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: macos-auto-update
Source: https://github.com/RavitejaKarra24/dotfiles/tree/main/agents/.agents/skills/macos-auto-update
Command: npx skills add https://github.com/RavitejaKarra24/dotfiles --skill macos-auto-update-ravitejakarra24

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Distributing updates for macOS apps outside the Mac App Store requires a secure update mechanism, and wiring up Sparkle correctly involves SPM dependencies, Info.plist keys, EdDSA key generation, and appcast hosting that are easy to misconfigure. ## Core Features & Use Cases - Sparkle SPM Integration: Adds the Sparkle 2.x package dependency and configures the Xcode project or Package.swift. - UpdaterManager Singleton: Provides a ready-made Swift singleton wrapping SPUStandardUpdaterController with DEBUG guards, Combine publishing, and menu-bar app activation policy handling. - Appcast & Signing Setup: Guides EdDSA keypair generation, Info.plist configuration (SUFeedURL, SUPublicEDKey), and initial appcast.xml creation. - Use Case: You are shipping a menu-bar-only macOS utility via GitHub releases and need a "Check for Updates" button in settings that securely delivers signed updates through a hosted appcast feed. ## Quick Start Add Sparkle auto-update support to my macOS app, including the UpdaterManager, Info.plist keys, and an initial appcast.xml.

Frequently Asked Questions about macos-auto-update

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add Sparkle auto-updates to a macOS app?

Add the Sparkle SPM package from github.com/sparkle-project/Sparkle with version 2.0.0 or later, create an UpdaterManager singleton wrapping SPUStandardUpdaterController, set SUFeedURL and SUPublicEDKey in Info.plist, and host an appcast.xml feed.

How to generate EdDSA keys for Sparkle app signing?

Build your project with Sparkle, then locate the generate_keys binary in DerivedData and run it. The tool prints the public key for SUPublicEDKey in Info.plist and stores the private key in your Keychain for use by sign_update during releases.

Does Sparkle work with menu-bar-only macOS apps?

Yes, but apps running with .accessory activation policy must temporarily switch to .regular before showing the update window. The UpdaterManager handles this in checkForUpdates by calling NSApp.setActivationPolicy(.regular) and activating the app.

Why should Sparkle be disabled in DEBUG builds?

Sparkle in debug builds would attempt to replace your development app with a release build, causing confusion and potential data loss. The UpdaterManager guards start() and checkForUpdates() with DEBUG compilation conditions so update logic only runs in release builds.

Does Sparkle require special hardened runtime entitlements?

No special entitlements are needed. Sparkle 2.x works with the standard hardened runtime configuration required for notarization, so no additional entitlement keys must be added to your app.