The Problem: Proprietary Data Leaks & Memory Crashes
To optimize web performance, developers and designers must constantly convert assets into next-gen formats like WebP. The industry standard is dragging these files into free cloud converters. However, this creates a massive security vulnerability: uploading unreleased, proprietary client assets (often under NDA) to third-party servers.
The alternative is using local CLI tools, which lacks the visual workflow designers need. Attempting to build this in the browser presents a different challenge: if a user drops fifty 4K PNG files into a standard React app, the browser will attempt to process them simultaneously, immediately exhausting the tab's memory allocation and crashing the page. Furthermore, browsers with strict anti-tracking settings (like LibreWolf) actively block rapid-fire multi-file downloads.
The Architecture: Sequential Processing & In-Memory Packaging
I engineered Lumist Crush to be a bulletproof, local-first alternative to cloud compressors.
-
Hardware-Accelerated Canvas Minification: Instead of sending files to a server, Crush reads the file into memory and draws it to an offscreen HTML5
<canvas>. It then utilizes the browser's nativecanvas.toBlob()engine to encode the image into WebP or JPEG. A critical byproduct of drawing to a canvas is that it naturally scrubs all EXIF data (GPS coordinates, camera metadata), ensuring immediate privacy compliance. -
Non-Blocking Sequential Queues: To prevent memory crashes during bulk uploads, I built a custom asynchronous processing queue. Instead of firing a
Promise.all()that floods the main thread, the engine processes images strictly one at a time. The UI immediately updates with a staggered loading state, keeping the application rendering at a smooth 60fps regardless of the payload size. -
Client-Side ZIP Generation: To bypass strict browser heuristic blocks against "download bombs" (triggering 50 downloads at once), I integrated
JSZip. Once the queue finishes processing, Crush aggregates the in-memory blobs and compiles a single.zipfile entirely on the client-side. The user clicks once, downloading a cleanly packaged folder of optimized assets. The Outcome
Lumist Crush brings the speed and privacy of local CLI workflows into a highly polished GUI. By pushing the heavy lifting to the client's hardware, server compute costs are eliminated, allowing the tool to scale infinitely and remain 100% free while mathematically guaranteeing zero data leakage.