DEV Community

UpgradeLink
UpgradeLink

Posted on

I Spent 9 Months Building This: UpgradeLink – An Open-Source All-in-One Cross-Platform App Upgrade System

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)