Guide

Mac app update sources: know the source before you click Update.

A source-by-source guide to App Store, Homebrew, Sparkle, vendor, and direct-download Mac app updates.

Updated July 24, 2026 · ~6 min read

macCurrent update review screen

One folder, six update channels

Every app in /Applications arrived through some distribution channel, and that channel usually decides how the app updates, what verification happens along the way, and which installer should own the update. Before you click Update — or replace a bundle by hand — it is worth knowing which of the six common sources an app belongs to. The pillar guide to updating Mac apps safely covers the how; this page is the taxonomy.

Mac App Store

How it delivers: Apple hosts the binary, reviews each release, and installs updates through App Store > Updates — or automatically, if enabled in App Store settings.

How to identify: App Store installs carry a receipt inside the bundle. If this file exists, the app came from the store:

ls "/Applications/AppName.app/Contents/_MASReceipt"

Trust profile: the strongest default chain on macOS. Apple signs and delivers the update, apps run under store sandboxing rules, and versions only move forward. The limitation is coverage — it only sees apps installed from the store, and some pro apps skip the store because sandboxing does not fit them.

Sparkle appcasts

How it delivers: the app itself checks an appcast — an XML feed where each item lists the release's version, archive URL, signature, and minimum system version — and offers the update in-app. Sparkle 2 verifies the download with an EdDSA (ed25519) signature and installs through a sandboxed XPC helper; legacy Sparkle 1 relied on weaker DSA signatures.

How to identify: the feed URL sits in the app's Info.plist under the SUFeedURL key:

defaults read "/Applications/AppName.app/Contents/Info.plist" SUFeedURL

If that prints a URL, the app updates via Sparkle. Trust profile: the developer controls the channel, and the signature check pins each update to a public key shipped inside the app. The Sparkle guide goes deeper on feeds and signatures.

Homebrew

How it delivers: Homebrew's index maps a cask token to the vendor's official release URL, usually with a SHA-256 checksum recorded per version. brew upgrade --cask downloads that release and replaces the app bundle; formulae cover command-line tools the same way.

How to identify: ask Homebrew what it manages:

brew list --cask

Trust profile: downloads come from vendor URLs with checksums pinned in the cask, and quarantine is applied by default so Gatekeeper still evaluates the app. The caveats are coverage and staleness — brew only manages what it installed, and self-updating apps are skipped unless you ask for them with --greedy. The cask mechanics guide walks through the workflow and its edge cases.

Vendor updaters

How it delivers: a background helper installed by the vendor checks its own channel and installs signed packages for a whole app family. Microsoft AutoUpdate handles Office. Google Software Update (Keystone) handles Chrome. Adobe apps update through the Creative Cloud desktop app, with Adobe Remote Update Manager (RUM) as the command-line equivalent on managed Macs. Docker Desktop ships its own updater.

How to identify: look for the helper itself. Microsoft AutoUpdate lives at /Library/Application Support/Microsoft/MAU2.0, and Keystone registers launch agents named com.google.keystone.* in /Library/LaunchAgents or ~/Library/LaunchAgents.

Trust profile: packages are signed by the vendor, and the updater understands the suite's shared components. For these app families the vendor tool is usually the safest owner — replacing an Office or Creative Cloud bundle by hand can break pieces the updater would have handled.

Direct downloads

How it delivers: the vendor posts a new DMG or ZIP on its site, and updating means fetching it and replacing the old bundle yourself.

How to identify: mostly by elimination — no _MASReceipt, no SUFeedURL, not in brew list --cask, no vendor helper. The app's own website is its release channel.

Trust profile: verification is on you. Check Developer ID signing and notarization before first launch, and compare a published checksum when the vendor offers one:

spctl -a -vv "/Applications/AppName.app"
shasum -a 256 ~/Downloads/AppName.dmg

Keep the old bundle until the new version launches cleanly — a direct replacement has no built-in rollback.

In-app-menu-only updaters

Some apps update only through their own Check for Updates menu item, using a custom updater rather than Sparkle. There is no feed to read, no receipt, and no cask — the menu item is the channel.

How to identify: none of the other markers are present, but the app has an update command in its menus or settings. Trust profile: it varies with the developer. The useful checks are the same as for any direct download — confirm the version moves forward, and confirm the installer comes from the vendor's own domain rather than a mirror.

Quick identification table

One pass through these checks classifies almost any app on your Mac:

SourceHow updates arriveQuick identificationWho verifies the download
Mac App StoreApp Store > Updates_MASReceipt exists inside the bundleApple signs and delivers
Sparkle appcastIn-app prompt from an XML feedSUFeedURL in Info.plistSparkle checks an EdDSA signature (Sparkle 2)
Homebrewbrew upgrade --caskToken appears in brew list --caskChecksum in the cask, then Gatekeeper
Vendor updaterBackground helper (MAU, Keystone, Adobe)Helper app or launch agent in /LibraryVendor-signed packages
Direct downloadNew DMG or ZIP from the vendor siteNo receipt, feed, cask, or helperYou: spctl, notarization, checksum
In-app menu onlyCheck for Updates menu itemUpdate menu exists, no other markersThe app's own updater; varies

How macCurrent uses source labels

macCurrent runs these identification checks for you. Each installed app gets a source label — App Store, Homebrew, Sparkle, vendor-managed, or direct — shown next to its signing identity and version direction, so you can see which update path owns each app before anything changes.

The label drives behavior: apps that can be updated directly are backed up first, app families with a trusted vendor updater are handed off to it, and anything ambiguous gets flagged for review instead of silently replaced. Some apps legitimately match more than one source — a cask-installed app with Sparkle built in, for example — and macCurrent shows which one it will use. See the current source coverage and trust-boundary map, or install macCurrent to see every app's source in one list.

Frequently asked questions

Why do Mac update sources matter?

The source determines which trust checks are available and which installer should own the update. An App Store app gets Apple's signing and delivery chain, a Sparkle app gets a signature-verified feed, and a direct download gets only the checks you run yourself.

Can Homebrew update direct-download apps?

Only if the app is actually installed and tracked as a Homebrew cask. Many direct-download apps are outside Homebrew's view, though newer Homebrew releases can adopt a matching manually installed app with brew install --cask --adopt.

Should vendor-managed apps be updated manually?

Often yes — through the vendor's own tool. If an app family has a trusted updater such as Microsoft AutoUpdate or the Creative Cloud app, the safest path is opening that updater instead of replacing app bundles directly.

How do I tell if a Mac app came from the App Store?

Look for the receipt Apple embeds at install time. If /Applications/AppName.app/Contents/_MASReceipt exists, the app was installed from the Mac App Store and updates through App Store > Updates.

How do I check whether an app uses Sparkle?

Read its Info.plist. Run defaults read /Applications/AppName.app/Contents/Info.plist SUFeedURL in Terminal — if a URL comes back, the app checks that Sparkle appcast for updates.

Can one app have more than one update source?

Yes. An app installed as a Homebrew cask may also ship a Sparkle updater, and some vendors distribute through both their site and the App Store. Pick one channel to own updates for each app — mixing them can leave version records out of sync.

Related macCurrent guides

Keep every Mac app current

One reviewable sweep across the App Store, Homebrew, Sparkle, vendor updaters, and direct downloads — free during the beta.