🚀 Quick start

  1. Launch Version Tracker. On first launch, a setup assistant guides you through granting Full Disk Access (needed to scan your applications), then optionally installing the package managers you want to track. Everything can be changed later in Settings.
  2. Enjoy the free trial. A 7-day trial of the full version starts automatically — no credit card required. When it ends, the app returns to the free version (scanning always remains available).
  3. Wait for the first scan. Depending on the number of installed apps and active sources, the initial scan takes 10 to 60 seconds.
  4. Check the « All » tab. This is where all available updates from all sources are gathered.
  5. Click « Update All » to launch all updates at once, or use the individual buttons to manage each app.

🗃️ Supported sources

Version Tracker detects updates for:

SourceDescription
macOS UpdatesApple system updates (Software Update)
macOS SecuritymacOS security-patch tracking (SOFA feed)
Mac App StoreAll apps installed via the official App Store
Homebrew CasksGUI applications installed via Homebrew
Homebrew FormulasHomebrew command-line tools
SparkleApps using the Sparkle auto-update framework
ElectronApps built with Electron, updated via Squirrel
TauriApps built with Tauri's built-in updater
GitHub ReleasesApps distributed via GitHub Releases
Direct downloadApps with an installer provided on an official site
Mac App Store « Discover »Apps detected outside the App Store but available on it
Adoptable AppsApps detected outside Homebrew but available as a cask
Microsoft (MAU)Word, Excel, PowerPoint, Outlook, OneNote, Edge via Microsoft AutoUpdate
GoogleGoogle apps updated via Keystone (Chrome, Drive…)
Adobe Creative CloudCreative Cloud apps via the Adobe updater
Apple ToolsXcode, Command Line Tools, Rosetta
Xcode (xcodes)Xcode versions managed by the xcodes CLI, stable and beta channels
JetBrains pluginsUser plugins of JetBrains IDEs and Android Studio (Marketplace)
Android SDKInstalled Android SDK platforms and tools
QtQt Maintenance Tool components
Docker / PodmanContainer images and their newer versions
OllamaLocal AI models managed by Ollama
AI & agentsSkills, plugins and marketplaces of AI tools (Claude Code, Codex, Gemini…)
Package managersnpm, yarn, pnpm, pip, pipx, uv, gem, cargo, rustup, conda, go, bun, deno, mise, MacPorts, Nix, Flutter, Composer, SDKMAN, TeX Live, gcloud…
Editor extensionsExtensions of VS Code, VS Code Insiders, VSCodium, Cursor, Windsurf

Each source can be enabled or disabled individually in the Settings.

🖥️ The interface

The main screen is divided into three columns, topped by a toolbar:

Left sidebar

Navigation is organized into collapsible sections that you can reorder by drag and drop. The counter next to each category shows the number of available updates.

  • OVERVIEW — Dashboard (overview, recent activity, latest snapshot) and Snapshots
  • UPDATES — All (every update in a single list), Apps, Packages, Homebrew, System Updates, Apple Developer Tools
  • Then sections by domain (APPLICATIONS, SYSTEM, AI, JavaScript, Python, Rust, editors…): only those matching what is actually installed on your Mac appear.

Toolbar

  • Scan — runs a full scan (the button also lets you cancel a running scan)
  • Settings and Feedback — direct access to preferences and the feedback form
  • Two buttons to show/hide the sidebar and the Details panel

Center area

The list of items for the selected category, with a search field. Each row shows:

  • The app or package icon and name
  • The current version and the available version
  • A contextual action button (Update, Download, Open, Show in Finder…)

Right sidebar (Details)

Details for the selected item: description, versions, release notes, source, path on disk.

Note : the window width is remembered between sessions. The minimum size is designed to comfortably display all three columns.

🔄 Updating applications

Individual update

Click the green « Update » button on a row (requires an active license or the trial — see License & trial). Depending on the source:

  • Mac App Store — uses CommerceKit (silent background update)
  • Homebrew Cask/Formula — runs brew upgrade (with admin authentication if needed — see below). If brew refuses the in-place upgrade, Version Tracker automatically applies the forced reinstall brew recommends.
  • Sparkle — downloads the DMG/ZIP, unmounts the old version and installs the new one
  • GitHub — downloads and installs the most recent binary
  • Direct download — see next section

Automatic backup: when the privileged helper is enabled, the previous version of the app is backed up before every update. If anything goes wrong, restore it from Settings → Backups (retention period and number of copies are adjustable).

Batch update

The « Update All » button in the All view launches every automatable update in sequence, after a confirmation that recaps the number of updates. You can leave the view — the operation continues in the background, and a summary is shown when it finishes (including deferred updates).

Manual download (« Download »)

Some apps don't have an automatic mechanism but expose a direct download URL (PKG, DMG, ZIP). For these:

  • The orange « Download » button appears
  • The file is downloaded to your downloads folder (default ~/Downloads, customizable in Settings)
  • Once downloaded, the button becomes « Show in Finder » to finalize installation manually

The « Download all » button starts batch downloads for all eligible apps.

If there's an error (HTTP 403, file not found, etc.), the button switches to « Open »: Version Tracker launches the installed app so it can handle its own update.

📸 Snapshots

The Snapshots view (OVERVIEW section) captures the complete software state of your Mac: applications, packages, tools, installed versions and known updates.

  • Create Snapshot (++N) — captures the current inventory. You can then rename or pin it.
  • Compare — select two snapshots to see everything that changed between them: installed, removed or updated items, with filters by change type.
  • Export… — exports a snapshot or a comparison as JSON, CSV or Markdown. Two privacy profiles: Full (keeps paths and machine name — keep it local) or Shareable (absolute paths, username and machine name are masked).

Typical use cases: documenting a machine before a migration or reinstall, tracking what an update session actually changed, or sharing a clean inventory.

Automatic snapshots

Two options in Settings → Updates:

  • Automatic snapshots around “Update All” — creates an inventory snapshot before and after each batch update, to compare and document the changes.
  • Snapshot after each scheduled scan — at the end of each automatic scan, creates a snapshot — only if something changed since the last one.

⚙️ Settings

Settings are organized into panes:

PaneContents
GeneralStartup, language, menu bar (« Open at login »), window close behavior, system permissions and the Privileged Helper
AppearanceTheme (System / Light / Dark) and visual customization
NotificationsUpdate alerts and badges; macOS notification permission
SourcesEnable or disable each scanned source. Disabling a source hides its apps and speeds up scans
AutomationAutomatic scan scheduling — by interval or at a fixed daily time (app open or closed) —, scan on launch, Background Scan and cache management
UpdatesUpdate rules (including “Hide updates incompatible with this macOS”), automatic snapshots, Homebrew options (including “Clean up the Homebrew cache”) and the manual-downloads folder (remembered via a security-scoped bookmark)
BackupsApp backups created by the helper before each update: restore, delete, and adjust retention (period in days, copies kept per app)
AdvancedDiagnostics and debugging tools
LicenseActivate or deactivate your license key, see your plan
AboutVersion, Version Tracker's own updates (automatic check and download, beta channel) and privacy commitments

Closing the window

  • Closing the main window (+W or the red button) hides the window: the app stays active in the background.
  • The option « Closing the window keeps only the menu bar » (Settings → General) quits the main app on close and keeps only the menu bar icon.
  • +Q really quits the application (an alert warns you if an update is in progress).

🔐 Administrator authentication

Some updates require administrator privileges. Version Tracker offers two mechanisms:

  1. Privileged Helper (recommended) — a small signed daemon, enabled once and for all via Settings → General → Privileged Helper → Enable.
  2. One-shot authentication — if the helper isn't installed, a system dialog asks for your admin password on each operation.

What the helper brings:

  • No more password prompt on every update
  • Atomic installation (the app is never left half-replaced)
  • Signature and Team ID verification on the root side
  • Automatic backup of the previous version before each update

Helper not responding? After an app update, use the « Repair » button in the Privileged Helper pane: it re-registers the daemon without asking for your password again.

🔑 License & trial

Version Tracker follows a freemium model:

  • Free version — full scanning and inventory always remain available: you see everything that is outdated, across all sources.
  • License (Solo, Family or Pro) — unlocks one-click update installs, batch updates and updates from the menu bar. See plans and pricing.
  • 7-day free trial — starts automatically on first launch, no credit card required. When the trial ends, the app automatically returns to the free version.

Activating a license: open Settings → License and paste the key received by email after purchase. You can deactivate the license on one Mac to free a seat and activate it on another.

🖱️ Keyboard shortcuts

ShortcutAction
+,Open Settings
+WClose the main window (the app stays in the background)
+QQuit Version Tracker
++NCreate a snapshot (in the Snapshots view)

To run a full scan again, use the Scan button in the toolbar or the Scan button in the menu bar panel.

🌍 Languages

Version Tracker is available in:

  • 🇬🇧 English
  • 🇫🇷 French
  • 🇩🇪 German
  • 🇪🇸 Spanish
  • 🇵🇹 Portuguese (Portugal)

The language follows macOS system settings automatically, and can be overridden in Settings → General → Language.

🗑️ Uninstalling Version Tracker

Dragging the app to the Trash is enough for most people. Here's the full procedure if you want to leave nothing behind.

Simple method (recommended)

  • Open Settings and turn off General → Open at login and Automation → Background Scan.
  • Quit Version Tracker and its menu bar icon (click the icon → Quit).
  • Drag Version Tracker.app from /Applications to the Trash, then empty the Trash.

No rush : even without this step, any leftover traces are inert — nothing runs, nothing is root, nothing uses resources.

For a complete removal (optional)

Version Tracker installs three small components, all approved by you at install time : a privileged helper and a menu bar icon (both inside the app — they disappear with it), and a scheduled scan task (a separate file). If you skipped the step above, remove it manually :

launchctl unload ~/Library/LaunchAgents/com.jpflorencio.VersionTracker.agent.plist 2>/dev/null
rm -f ~/Library/LaunchAgents/com.jpflorencio.VersionTracker.agent.plist

To also remove your app backups and inventory snapshots (irreversible) :

rm -rf ~/Library/Application\ Support/Version\ Tracker
defaults delete com.jpflorencio.VersionTracker

Finally, if Version Tracker is still listed in System Settings → General → Login Items & Extensions, remove the entry (it disappears on its own shortly after).

Planning to reinstall or switch Macs?

  • Reinstalling on the same Mac : don't touch anything — your license key stays in the keychain and activates automatically.
  • Moving to another Mac : free your activation seat first via Settings → License → Deactivate, before removing the app.

Privileged helper won't reinstall? In System Settings → General → Login Items & Extensions, turn Version Tracker off, then back on (the full cycle resyncs the state — turning it on alone isn't enough). If the problem persists, empty the Trash and restart.

🗑️ Uninstalling package managers

Before you start

  • Open the Terminal app (Applications → Utilities). The shell configuration file mentioned below is ~/.zshrc (the macOS default).
  • Only remove tools that you installed for Version Tracker. If other software or projects depend on them, keep them.
  • Uninstall individual tools first, and Homebrew last: uninstalling it removes all packages installed with it.
  • After uninstalling, Version Tracker will simply stop tracking that source. You can reinstall any tool at any time from onboarding or Settings.

1. Tools installed directly by Version Tracker (via Homebrew)

ToolUninstall
mas (Mac App Store CLI)brew uninstall mas
Node.js (npm)Check dependents: brew uses --installed node, then brew uninstall node
Python (pip)Find the exact formula: brew list --formula | grep python, then brew uninstall python@3.13 (adjust the version)

Homebrew will refuse to uninstall if other formulas depend on it — that is a safeguard, not an error.

Homebrew (last) — ⚠️ removes Homebrew and every package installed with it:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

The script lists any residual folders at the end (usually /opt/homebrew on Apple Silicon, /usr/local/Homebrew on Intel).

2. External tools (installed via their official guides)

If you installed any of these with Homebrew instead of the official installer, simply use brew uninstall <formula> instead.

ToolUninstall
MacPortssudo port -fp uninstall installed, then follow the official guide: https://guide.macports.org/chunked/installing.macports.uninstalling.html
NixMulti-step procedure (launchd daemon, /nix volume, _nixbld users) — follow the "Uninstalling" chapter of the official Nix manual
misemise implode (removes mise and all its data)
Rust (rustup)rustup self uninstall
Gosudo rm -rf /usr/local/go /etc/paths.d/go (official package)
FlutterDelete the SDK folder (e.g. rm -rf ~/development/flutter) and remove the PATH line from ~/.zshrc
Docker DesktopIn Docker Desktop: Troubleshoot → Uninstall, then drag Docker.app to the Trash
OllamaQuit the app (menu bar icon), drag Ollama.app to the Trash, then rm -rf ~/.ollama (also deletes downloaded models)
Minicondaconda init --reverse --all, then rm -rf ~/miniconda3
MacTeX / TeX LiveFollow the official guide: https://www.tug.org/mactex/uninstalling.html (notably /usr/local/texlive/<year>)
Composerrm /usr/local/bin/composer (or wherever your composer.phar lives)
SDKMAN!rm -rf ~/.sdkman, then remove the SDKMAN lines from ~/.zshrc
Ruby (RubyGems)If installed via Homebrew: brew uninstall ruby. Apple's system Ruby cannot be removed
Yarnnpm rm -g yarn, or corepack disable if enabled through Corepack
pnpmrm -rf ~/Library/pnpm, then remove the PNPM_HOME lines from ~/.zshrc (if via npm: npm rm -g pnpm)
pipxOptional: pipx uninstall-all, then python3 -m pip uninstall pipx and rm -rf ~/.local/pipx
Bunrm -rf ~/.bun, then remove the bun lines from ~/.zshrc
Denorm -rf ~/.deno, then remove the PATH line from ~/.zshrc
GitHub CLI (gh)brew uninstall gh (or sudo port uninstall gh via MacPorts)
uvuv cache clean && rm -rf "$(uv python dir)" "$(uv tool dir)", then rm ~/.local/bin/uv ~/.local/bin/uvx
VS Code / Insiders / VSCodium / Cursor / WindsurfDrag the application to the Trash; residual data lives in ~/Library/Application Support/<app> and ~/.vscode (or equivalent)

Verify

For each uninstalled tool: command -v <tool> should print nothing (open a new Terminal window first).

Frequently asked questions

Why is the « Update » button greyed out or asking for a license?

The free version offers full scanning and inventory, but one-click update installs require an active license (or the 7-day free trial). Activate your key in Settings → License. See License & trial.

Why aren't some apps detected?

Check that:

  • The corresponding source is enabled in the Settings
  • The app is properly installed in /Applications or ~/Applications (not in an exotic folder)
  • The app exposes a correct Info.plist with its bundle ID

Why is a source counter empty after an update?

That's normal. Counters reflect available updates. Once the update is done, the app returns to « up to date » state and disappears from the view. Use the Scan button if you want to force a re-check.

The Mac App Store keeps asking for updates I just performed

The Mac App Store can be slow to confirm an installation. Version Tracker resynchronizes versions on disk after each batch and on return to the foreground. If the problem persists, run a manual Scan.

The menu bar icon stays visible after quitting the app

That's the menu bar companion, a separate agent that keeps watching your updates even when the main app is closed. To disable it, uncheck « Open at login » in Settings → General, or choose Quit Version Tracker from the icon's menu.

A direct download produces a file named ….download

This happens with some CDNs that don't return an extension in the URL. Version Tracker tries to get the real name via the HTTP Content-Disposition header, but as a last resort uses a generic name. Just rename the file to .dmg, .zip or .pkg based on its content.

How do I clear pending downloads?

Go to the All view: apps already downloaded show « Show in Finder ». You can remove them from disk manually via Finder; Version Tracker will reset the trace on the next scan revealing a newer version.

Does Version Tracker track or collect data?

No. No telemetry, no inventory transmitted. Network requests are limited to license validation and querying software sources (App Store, Homebrew, Sparkle Appcasts, GitHub API…) to retrieve available versions. Your software inventory stays on your Mac. See our Privacy Policy.

📩 Contact

To report a bug, suggest an improvement, or simply share feedback: contact@version-tracker.app — or use the Feedback button right inside the app.

Version Tracker — Designed for macOS · Made with care