Hey fellow devs 👋!
As a developer who’s been building cross-platform apps for years, I’ve been frustrated to no end by app upgrades over the past six months:
- For the Tauri app I built at work, I had to maintain three separate upgrade logic flows for Windows/Mac/Linux – changing one line of code meant testing it three times;
- For the small Electron tool I made earlier, I relied on handwritten scripts for everything: upgrade package distribution, version comparison, canary releases… troubleshooting issues took hours;
- I tried a few third-party upgrade services – either they were overpriced, only supported single platforms, or I didn’t trust handing over my user data;
- I looked for open-source full-stack upgrade solutions, but they were either feature-incomplete or so complex to deploy that writing my own code felt easier…
I’d had enough. So I spent 9 months turning all my pain points and desired features into one project – the one I’m excited to share today: UpgradeLink, a fully open-source, all-in-one cross-platform app upgrade management system.
My core goal with this project is simple: to save developers from reinventing the wheel for app upgrades. One system to handle version iteration across all platforms.
🚀 Why I Built UpgradeLink
Let me start with my core requirements – I wanted an upgrade system that’s full-platform compatible, easy to deploy, and customizable – but nothing on the market fit the needs of small teams or individual developers. So I built the foundation on Go Zero + simple-admin, and added these design choices based on my own hard-learned lessons:
✨ Core Features I Built Into UpgradeLink (All Born From Pain Points)
1. Full Platform Coverage – One System for All Ends
This was my top priority – I never wanted to write separate upgrade logic for Windows vs. Mac again. So UpgradeLink natively supports:
- Native apps for Windows/macOS/Linux;
- Cross-framework apps (Tauri/Electron) – compatible with their official upgrade APIs, so integration requires almost zero code changes;
- Android apps (with delta updates to save bandwidth and speed up upgrades).
I tested it myself: integrating it into my Tauri tool took just 10 minutes – way faster than writing custom scripts.
2. "Flexible Configuration" Features (Added After Countless Headaches)
With handwritten upgrade scripts, my biggest pain was lack of granular control. So I added these to UpgradeLink:
- Canary releases: Roll out new versions to 10% of users first, then full rollout if no issues;
- Targeted upgrades: Push upgrade packages to specific devices/OS versions (e.g., only Mac 14+ users);
- Custom storage: Supports S3-compatible object storage – I use Alibaba Cloud OSS for my upgrade packages, and you can also connect CDNs for faster downloads;
- Config/file upgrades: Beyond app binaries, my tool’s asset packs and JSON configs can be updated dynamically (no need to release a full app version).
3. Quality-of-Life Details I Added for "Peace of Mind"
As an indie developer, I don’t have time to maintain complex deployment workflows – so:
- Docker single-machine quick start: I run it on my own server with just one command;
- Multi-language SDKs (Go/Java/Python/TS, etc.): I use the SDK directly for integration – no need to write raw HTTP requests;
- Vue3 + Vben Admin admin panel: Intuitive UI for managing upgrades (no more digging through logs to check status).
🛠️ My Personal Quick Start Flow (Tested & Working)
I’ve put the full deployment docs in the repo README – including Docker Compose and cluster deployment options, all validated by me personally.
🤔 A Little Personal Note About This Project
I didn’t build this to create a "bloated, all-encompassing framework" – purely to solve a pain point for myself and fellow developers. After all, we want to focus on building our apps, not spending 90% of our time setting up upgrade services.
Right now, UpgradeLink has been running smoothly in several of my own open-source projects (like note-gen, MarkFlowy, and other Tauri tools) for almost a month – that’s why I feel confident releasing it as open source.
🤝 Let’s Improve It Together
This project is still evolving fast, and I can’t do it all alone. I’d love your help:
- Open Issues: My pain points aren’t exhaustive – share your upgrade headaches with me;
- Submit PRs: Whether it’s fixing bugs, adding features, or improving docs – all contributions are welcome;
If this tool helps you avoid the same upgrade headaches I faced, please give the repo a ⭐️ Star! It’s the biggest motivation for me to keep maintaining it.
GitHub Repo: https://github.com/toolsetlink/upgradelink
Gitee Repo: https://gitee.com/toolsetlink/upgradelink
Finally – the best part of open source is turning your own struggles into tools that help others. I hope UpgradeLink saves you some time and frustration!
Let’s make app upgrades easier together! 🚀
Top comments (0)