ComparisonJanuary 13, 20267 min read

ConfigSync vs Mackup: App Settings Sync in 2026

Mackup backs up app settings via symlinks to cloud storage like Dropbox and iCloud. But with macOS breaking symlinked preferences, is it still a viable option?

How Mackup Works

Mackup has a beautifully simple concept. When you run mackup backup, it moves your application config files to a cloud storage folder (Dropbox, iCloud Drive, or Google Drive) and creates symlinks in the original locations. When you run mackup restore on another machine, it reverses the process: pulls files from cloud storage and creates symlinks.

Mackup workflow
# Back up all supported app settings to Dropbox mackup backup # What happens behind the scenes: # ~/.gitconfig -> ~/Dropbox/Mackup/.gitconfig # ~/.zshrc -> ~/Dropbox/Mackup/.zshrc # ~/Library/Preferences/com.app.plist -> ~/Dropbox/Mackup/... # Restore on another machine mackup restore # Undo all symlinks (copy files back) mackup uninstall

Mackup ships with support for over 100 applications out of the box, from Vim and Git to VS Code, iTerm2, Sublime Text, and many more. You can also define custom applications in a simple INI format.

The macOS Symlink Problem

Starting with macOS Sonoma (14.0), Apple changed how the preferences system handles symlinked .plist files. The cfprefsd daemon now often ignores or overwrites symlinked preference files, silently breaking Mackup’s core mechanism for macOS application settings.

This is a critical issue. Mackup’s entire approach depends on symlinks. When the OS no longer respects symlinked preferences, the tool fundamentally breaks for macOS app settings. Shell dotfiles still work, but that is only part of what Mackup was designed to sync.

Mackup has acknowledged this issue, and the copy-based storage engine is the recommended workaround. But copy mode loses the real-time sync that made Mackup appealing in the first place — you have to remember to run mackup backup after every change.

No Encryption

Mackup stores your config files in plaintext in your cloud storage folder. Your .gitconfig, .ssh/config, shell history, and any credentials embedded in config files all sit unencrypted in Dropbox or iCloud.

This means anyone with access to your cloud storage account can read your configurations. A compromised Dropbox account exposes everything. There is no option to encrypt individual files or the entire backup.

Mackup storage — plaintext in the cloud
# Your files sit in plaintext in cloud storage ~/Dropbox/Mackup/ .gitconfig # Plaintext .zshrc # Plaintext .ssh/config # Plaintext — potentially sensitive .aws/credentials # Plaintext — definitely sensitive

Missing Features

Mackup is laser-focused on app settings via symlinks. It does not offer:

Package tracking. Mackup does not know what packages you have installed. If you set up a new machine, you need to install Homebrew, apt, npm, and all your packages manually before Mackup can restore their settings.

Secrets management. There is no concept of secrets or encrypted values. If a config file contains an API key, it is stored as-is in your cloud folder.

Templates. Every machine gets the same file. No variables, no conditionals, no platform-specific adaptations.

Watch mode. You must manually run mackup backup to capture changes (unless using symlink mode, which is broken on modern macOS).

How ConfigSync Differs

ConfigSync does not use symlinks at all. It copies, encrypts, and syncs. This means it works perfectly on macOS Sonoma and beyond, with no dependency on the OS respecting symlinked preferences.

ConfigSync workflow
# Track files and app settings configsync init configsync track ~/.zshrc ~/.gitconfig # Scan installed packages configsync scan # Encrypt everything and push to cloud configsync push -m "full backup" # New machine: pull, restore configs, install packages configsync pull --install # Watch for changes — auto-sync without manual backup configsync watch

Everything is encrypted with AES-256-GCM before leaving your machine. The cloud storage (Cloudflare R2) only ever sees encrypted blobs. ConfigSync also tracks packages across 10+ managers, supports templates for platform-specific configs, and has a web dashboard for managing your machines.

Feature Comparison at a Glance

FeatureMackupConfigSync
ApproachSymlinks to cloud storageEncrypted cloud sync
macOS Sonoma+ supportBroken for .plist filesFull support
EncryptionNone (plaintext)AES-256-GCM, zero-knowledge
Cloud BackendDropbox, iCloud, Google DriveBuilt-in (Cloudflare R2)
Supported Apps100+ via community configs24 built-in modules
Package TrackingNo10+ package managers
Secrets ManagementNoEncrypted, 4 providers
TemplatesNo{{vars}}, platform conditionals
Watch ModeVia symlinks only (broken)Yes, built-in
Web DashboardNoYes
Custom App SupportINI config filesPlugin system

The Verdict

Mackup was a great tool for its time. The symlink-to-cloud-storage approach was clever and worked well for years. But macOS has moved on. Apple’s changes to preference handling have undermined Mackup’s core mechanism, and the tool has not fully adapted.

If you only need to sync shell dotfiles (which are not affected by the macOS symlink issue) and you already have Dropbox set up, Mackup still works for that narrow use case. But for anything involving macOS application preferences, it is increasingly unreliable.

ConfigSync is the modern replacement. It works on every version of macOS without symlink dependencies, encrypts everything by default, tracks your packages, manages secrets securely, and syncs automatically with watch mode. If you are looking for what Mackup should have evolved into, ConfigSync is it.

Ready to try ConfigSync?

Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.