You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Christopher Snowhill 637cb6fd7b Updated .gitmodules 2 months ago
.github/ISSUE_TEMPLATE Add Issue templates for Sparkle 1.x and 2.x 5 months ago
Configurations Hoist `SWIFT_VERSION = 4.2` setting up to ConfigSwift.xcconfig, remove unnecessary target overrides. 5 months ago
Documentation 2 tiny fixes 1 year ago
Resources Losslessly reduced the size of PNG 1 year ago
Sparkle Fix missing Danish translations in Sparkle.strings 3 months ago
Sparkle.xcodeproj Remove .h files from Build Rules for bsdiff and ed25519 (#1538) 4 months ago
TestApplication Use recommended locale names 11 months ago
Tests Added array generics to fix warnings, and fixed typo in variable name when parsing BinaryDelta command-line arg flags. 5 months ago
UITests Fix UITests multiple matches issue introduced in touch bar 3 years ago
Vendor Updated ed25519 2 months ago
bin/old_dsa_scripts Make legacy script use a smaller DSA key that macOS still supports 1 year ago
fileop Explicitly specify types to silence "Messaging unqualified id" warning that's new in Xcode 10. 1 year ago
generate_appcast Support generating appcast with localizations (#1499) 6 months ago
generate_keys Fix a spelling mistake in the submodule comments 1 year ago
objc_dep Detect and fail if any two-way dependencies exist in the project 3 years ago
sign_update fix spelling (#1508) 5 months ago
.clang-format Comment problematic clang-format property. 5 years ago
.gitignore Add Carthage/Build to .gitignore 3 years ago
.gitmodules Updated .gitmodules 2 months ago
.travis.yml Update Xcode version for Travis CI 2 years ago
CHANGELOG Bump 5 months ago CoC 3 years ago
LICENSE Add my name to LICENSE 3 years ago
Makefile "all" target 2 years ago
Makefile-icon Rename Sparkle.icns to be consistent with ASSETCATALOG_COMPILER_APPICON_NAME 3 years ago
README.markdown Add prominent note about Sparkle 2.x to README 5 months ago
Sparkle.podspec Changelog 11 months ago


Sparkle 1.x Build Status Carthage compatible CocoaPods

Secure and reliable software update framework for Cocoa developers.

Sparkle shows familiar update window with release notes

This branch is the production ready, battle-tested version of Sparkle used by thousands of Mac apps. The upcoming Sparkle 2 (currently in beta) can be found in the 2.x branch.


  • Seamless. There's no mention of Sparkle; your icons and app name are used.
  • Secure. Updates are verified using EdDSA signatures and Apple Code Signing.
  • Fast. Supports delta updates which only patch files that have changed.
  • Easy to install. Sparkle requires no code in your app, and only needs static files on a web server.
  • Supports bundles, preference panes, plugins, and other software. Can install .pkg files for more complicated products.
  • Handles permissions, quarantine and automatically asks for authentication if needed.
  • Uses RSS-based appcasts for release information. Appcasts are a de-facto standard supported by 3rd party update-tracking programs and websites.
  • Stays hidden until second launch for better first impressions.
  • Truly self-updating — the user can choose to automatically download and install all updates in the background.
  • Ability to mark updates as critical.
  • Progress and status notifications for the host app.


  • Runtime: macOS 10.7 or greater
  • Build: Xcode 9 and 10.11 SDK or greater
  • HTTPS server for serving updates (see App Transport Security)
  • No sandboxing. Sparkle 1.x can't update sandboxed apps. Sparkle 2.x can.


See getting started guide. No code is necessary, but a bit of Xcode configuration is required.


This repository uses git submodules, and will not build unless you clone recursively. Also, GitHub-provided ZIP/tar archives are broken due to GitHub not supporting git submodules properly.

git clone --recursive


  • Please check Sparkle prints detailed information there about all problems it encounters. It often also suggests solutions to the problems, so please read Sparkle's log messages carefully.

  • Use the generate_appcast tool which creates appcast files, correct signatures, and delta updates automatically.

  • Make sure the URL specified in SUFeedURL is valid (typos/404s are a common error!), and that it uses modern TLS (test it).

  • Delete your app's preferences (in ~/Library/Preferences/<your bundle id>) if you've set another feed URL programmatically via Sparkle's Objective-C interface.

API symbols

Sparkle is built with -fvisibility=hidden -fvisibility-inlines-hidden which means no symbols are exported by default. If you are adding a symbol to the public API you must decorate the declaration with the SU_EXPORT macro (grep the source code for examples).

Building the distribution package

cd to the root of the Sparkle source tree and run make release. Sparkle-VERSION.tar.bz2 will be created in a temporary directory and revealed in Finder after the build has completed.

Alternatively, build the Distribution scheme in the Xcode UI.

Code of Conduct

We pledge to have an open and welcoming environment. See our Code of Conduct.

Project Sponsor