Most modern desktop tools are bloated Electron shells wrapping a single web page, devouring 400MB of RAM just to sit idle in the system tray. When building ZeroBloat — a cross-platform Android package manager and telemetry uninstaller — using Electron was philosophically contradictory. We chose Go paired with Wails v2 and Svelte, creating a native binary that starts in 180 milliseconds and consumes less than 15MB of RAM.
Interfacing Safely with Android Debug Bridge (ADB)
Interacting with Android's package manager via ADB requires extreme caution. Removing the wrong system package can send an OEM ROM into an unrecoverable bootloop.
In ZeroBloat, we compiled a curated package taxonomy mapping over 600 vendor packages across Samsung OneUI, Xiaomi MIUI/HyperOS, and OnePlus OxygenOS. Packages are classified into three safety tiers: 'Safe to Remove' (games, duplicate stores, news feeds), 'Caution' (telemetry frameworks), and 'System Critical' (telephony, authentication).
ZeroBloat disables packages using 'pm uninstall -k --user 0'. This removes the APK for the primary user while leaving the base binary intact in the system partition for foolproof one-click restoration.
The Go & Wails Native Bridge
Wails v2 binds Go structs directly to the frontend JavaScript runtime using native webview components (WebKitGTK on Linux, Webview2 on Windows, WKWebView on macOS). This eliminates Chromium bundling entirely.
package main
import (
"os/exec"
"strings"
)
// UninstallPackage cleanly uninstalls a bloatware package for user 0
func (a *App) UninstallPackage(serial string, pkgName string) (*ADBResult, error) {
cmd := exec.Command("adb", "-s", serial, "shell", "pm", "uninstall", "-k", "--user", "0", pkgName)
output, err := cmd.CombinedOutput()
success := strings.Contains(string(output), "Success")
return &ADBResult{
Package: pkgName,
Success: success,
Message: strings.TrimSpace(string(output)),
}, err
}Why Svelte on the Frontend?
Because Wails lets us use any modern web framework for the UI, we paired it with Svelte. Svelte's compile-time reactivity means zero virtual DOM overhead. The entire frontend bundle compiled to less than 85KB of vanilla JavaScript and CSS, delivering silky 120 FPS device-scrolling even on low-end laptops.