Make informed updates - see what changed in your Homebrew packages
# Show simple outdated list (like brew outdated)
brew-change
# Show outdated packages with version information
brew-change -v
# Show detailed changelog for specific package
brew-change node
# Show detailed changelogs for all outdated packages in parallel
brew-change -a
# Highlight packages with breaking changes (-b implies -a)
brew-change -b
# Show version information
brew-change --version
# Show help
brew-change --help- Developers who want to understand package changes before updating
- DevOps Engineers managing production dependencies
- Security-Conscious Users checking for vulnerability fixes
- Power Users who like knowing what's changing in their tools
- Curious Learners exploring how their tools evolve
- Smart Package Detection: GitHub, npm, third-party taps, hybrid packages, and more
- Parallel Processing: Handles multiple packages simultaneously (45-50s for 13 packages)
- Breaking Changes Detection: Automatically highlights packages with breaking changes using
-bflag - Rich Release Info: Full changelogs, commit history, and helpful links
- Revision Support: Advanced handling of Homebrew revision numbers
- Performance Optimized: 75% faster than original with intelligent caching
# Install directly via Homebrew tap (dependencies included)
brew install shrwnsan/tap/brew-change
# Verify installation
brew-change --version- Homebrew: Core package manager
- jq: JSON parsing and processing
- curl: HTTP requests with retry logic
- bash: Version 4.0+ for modern shell features
brew-change works seamlessly across all platforms where Homebrew is available:
| Platform | Homebrew Path | Status |
|---|---|---|
| macOS (Intel) | /usr/local/bin/brew |
✅ Fully supported |
| macOS (Apple Silicon) | /opt/homebrew/bin/brew |
✅ Fully supported |
| Linux | /home/linuxbrew/.linuxbrew/bin/brew |
✅ Fully supported |
| WSL (Windows Subsystem for Linux) | /home/linuxbrew/.linuxbrew/bin/brew |
✅ Fully supported |
The script automatically detects the correct library path using brew --prefix, ensuring compatibility across all Homebrew installations.
brew-change intelligently handles different package sources:
- GitHub packages: Full release notes with commit history
- npm packages: Registry information with release dates
- Hybrid packages: npm distribution + GitHub development
- Third-party taps: Community tap support (charmbracelet, oven-sh/bun)
- Modern CLI tools: Documentation-repository pattern (alpha)
→ See detailed package type examples: Package Types Documentation → Full documentation index: All Documentation
"Package not found" errors
brew info package-name # Check if package exists
brew search package-name # Search for similar packagesSlow performance
brew-change -a # Auto-adjusts if system is busy
export BREW_CHANGE_JOBS=2 # Reduce parallel jobs manuallyNetwork timeouts
curl -I https://api.github.com # Check connectivityClear cache
rm -rf ~/.cache/brew-change/*- v1.5.8: Fixed parallel mode - resolved
set -einheritance breaking parallel execution - v1.5.7: Fixed cask version display - handle both string and array names in
-vflag output - v1.5.6: Fixed cask detection - use
.namefield for proper cask identification - v1.5.5: Fixed cask detection - use
.tokenfield for Homebrew JSON API v2 - v1.5.4: Show
[not installed]for uninstalled packages
→ Full changelog: CHANGELOG.md
- Homebrew - The missing package manager for macOS
- jq - Command-line JSON processor
- GitHub CLI - Official GitHub command-line tool
MIT License - see LICENSE file for details.
Looking for more?