A full-featured download manager — rebuilt from the ground up
Motrix by agalwood was one of the best open-source download managers available — clean UI, aria2-powered, cross-platform. It inspired thousands of users and developers alike.
However, the original project has been largely inactive since 2023. The Electron + Vue 2 + Vuex + Element UI stack accumulated technical debt, making it increasingly difficult to maintain, extend, or package for modern platforms.
What we kept
We owe a great deal to the original Motrix and its community. The following were gratefully adopted and continue to serve as the foundation for parts of Motrix Next:
- Aria2 error code system and RPC client — the error handling conventions and JSON-RPC communication layer for the aria2 engine
- Internationalization — 25+ community-contributed locale files covering Chinese, Japanese, Korean, Arabic, French, German, and many more
- Download utilities — tracker list management, cURL command parsing, and other protocol-level helpers
What we rebuilt
Motrix Next is not a fork — it is a complete rewrite. Every other layer of the application has been redesigned and reimplemented from scratch:
| Layer | Motrix (Legacy) | Motrix Next |
| ------------ | ----------------------- | ------------------------------- |
| Runtime | Electron | Tauri 2 (Rust) |
| Frontend | Vue 2 + Vuex | Vue 3 Composition API + Pinia |
| UI Framework | Element UI | Naive UI |
| Language | JavaScript | TypeScript + Rust |
| Styling | SCSS + Element theme | Vanilla CSS + custom properties |
| Engine Mgmt | Node.js `child_process` | Tauri sidecar |
| Build System | electron-builder | Vite + Cargo |
| Bundle Size | ~80 MB | ~20 MB |
| Auto-Update | electron-updater | Tauri updater plugin |
Design & Motion
The overall UI layout stays true to Motrix's original design — the sidebar navigation, task list, and preference panels all follow the familiar structure that made Motrix intuitive from day one.
What changed is everything underneath. Every transition and micro-interaction has been carefully tuned to follow Material Design 3 motion guidelines:
- Asymmetric timing — enter animations are slightly longer than exits, giving new content time to land while dismissed content leaves quickly
- Emphasized easing curves — decelerate on enter (cubic-bezier(0.2, 0, 0, 1)), accelerate on exit (cubic-bezier(0.3, 0, 0.8, 0.15)), replacing generic ease curves throughout the codebase
- Spring-based modals — dialogs use physically-modeled spring animations for a natural, responsive feel
- Consistent motion tokens — all durations and curves are defined as CSS custom properties, ensuring a unified rhythm across 12+ components
What's Changed
Motrix Next 3.9.9 brings the improvements from the 3.9.9 beta cycle to the stable channel, with Aria2 Next 2.7.5, more resilient HTTP transfers, consistent task history, smoother task cards, and more reliable desktop integration.
🛠 Improvements
HTTP transfer recovery — Improved parallel-download concurrency recovery, redirect destination reuse, IPv4/IPv6 worker scheduling, and stalled-tail recovery while respecting connection limits and retry backoff
Consistent task lists — Unified live-task and history sorting, snapshots, and sidebar counts; removed the 1,000-entry limit from active and waiting task snapshots
Smoother task cards — Added filename and status transitions, refined progress and action animations, and preserved card identity and manual ordering when retrying tasks
Compact layout — Stabilized progress-bar width with a fixed percentage gap and right-aligned transfer details, keeping the two-line layout and revealing truncated details through tooltips
Actionable diagnostics — Added browser-launcher registration details, native OS errors, and Linux protocol-handler information to diagnostic exports
🐛 Bug Fixes
Fixed HTTP scheduling defects that unnecessarily reduced parallelism after early 403 responses or mishandled 429/503 overload responses
Fixed false resource-change failures involving unquoted ETags and inconsistent CDN timestamps, including the reported Baidu Netdisk case; improved conditional range handling at redirecting endpoints
Fixed a Windows engine event-loop crash and preserved pending wakeups when libcurl reschedules timers
Fixed tasks briefly disappearing between engine completion and history persistence, suppressed stale duplicate BT/ED2K results, and preserved partial progress and error details in newly recorded history
Fixed one browser's Native Messaging registration failure blocking registration for other browsers
Prevented browser-inherited EGL_PLATFORM settings from interfering with Linux desktop activation
Reworked Linux link associations around native GIO/XDG handling, including desktop-specific defaults and persistent AppImage paths; failed status queries now offer retry instead of appearing disabled