From rejected PR to 33MB: Tauri fork of Juejin AI usage tracker
A Tauri client at one-third the size of the official Electron app proves the framework is a viable drop-in when the data layer stays intact. The fork also shows an unmerged community PR can evolve into a maintained project that tracks upstream.
Juejin's AI usage tracker tracks token consumption for Claude Code, Codex, Cursor, and other AI tools, and its official desktop client runs on Electron with a ~100MB installer. A proposed Tauri version in a PR went unmerged, so the author built and maintains it independently. The client wraps the official core as an engine and only builds the shell in Rust, which skips rewriting parsers for 30+ tools and picks up upstream fixes automatically.
The installer dropped from 44MB to 33MB by stripping unused TypeScript declarations, duplicate builds, and browser-specific dependencies, then replacing the embedded Node binary's full ICU library with a small-icu English-only build. Four date-formatting calls used formatToParts, which is locale-agnostic, so the 30MB savings came without breaking. Validation ran 516 test cases with byte-identical output. The client offers the same dashboard, subscription quotas for 12 channels, a desktop pet, menu bar usage, deep-link login, and signed auto-updates, and its data and cloud sync stay compatible with the official Electron app. The roadmap targets a fully Rust implementation at 1.0 with an installer under 15MB.
Reusing the official core sidesteps the hardest 80% of the work: parsing usage data from 30+ AI tools with different storage locations and formats.
Embedding a Node runtime to run that core offsets Tauri's size benefit, but a careful audit still yields a third of the official installer size.
The PR rejection is justified by the double cost of maintaining a second UI framework; a fork is a pragmatic way to keep the contribution alive.
The size reduction recipe (audit output, strip unused declarations and locale data, verify with a test suite) generalizes to any app bundling a runtime.