DEV Community

Cover image for Why I Rebuilt VLC's Frontend in Rust & Tauri v2 as a High Schooler
Aayush Shah
Aayush Shah

Posted on AI-assisted

Why I Rebuilt VLC's Frontend in Rust & Tauri v2 as a High Schooler

I have used VLC Media Player for as long as I can remember. It is arguably the most reliable piece of software on the planet, throw a corrupted 2004 .avi file at it, and it will play it without flinching.

Yet, every time I open it on a modern display, the UI feels like a relic from the Windows XP era.

Electron-based alternatives look gorgeous, but they consume 600MB of RAM just to open an empty window. I wanted the best of both worlds: native speed, zero bloat, and a modern aesthetic.

So I spent the last few months rebuilding the media player experience from scratch.

The Architecture: Tauri v2 + Rust + React 19

The core constraint was memory and responsiveness.

Instead of bundling Chromium (Electron), I chose Tauri v2:

  • Backend (Rust): Handles low-level file I/O, IPC pipelines, and OS-level window management. Tauri's memory footprint hovers around 30–45MB.
  • Frontend (React 19 + TypeScript): Renders a fluid, frosted-glass Canvas HUD with auto-hiding controls, visual chapter scrubbers, and instant keyboard shortcuts.
  • Audio Processing: A dedicated 10-band graphic equalizer with pre-amplification.

What I Learned About Frame-Accurate Scrubbing

The hardest part was building a seekbar that didn't feel stuttery. Most web-based players trigger a re-render on every timeupdate event (approx. 4 times per second), causing the scrub head to snap awkwardly.

By separating the rendering timeline from the underlying media buffer with an interpolated RAF (RequestAnimationFrame) loop, scrubbing feels buttery smooth even with high-bitrate 4K files.

Try It Out

The project is open source under the MIT license, and I've published pre-built binaries for Linux:

If you build desktop apps or love media playback systems, I'd love your thoughts and pull requests!

Top comments (0)