UpgradeLink – An Open-Source All-in-One Cross-Platform App Upgrade System
1 points
3 hours ago
| 0 comments
| HN
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…

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.

Let’s Improve It Together GitHub Repo: https://github.com/toolsetlink/upgradelink

Let’s make app upgrades easier together!

No one has commented on this post.