gSender_Edge_ziqMhp5NSx.png

85MB/5 million lines and I’m feeling fine

Why This Work Was Needed

In gSender, loading a file is more than preparing it to send to the controller. The biggest overhead is building visualization and estimate data in the app:

This means load-time performance is heavily affected by visualization parsing work, not just file transfer or send readiness.

Old Workflow (Before)

The old path had multiple processing stages and extra memory churn:

  1. Parse file content.
  2. Build geometry arrays.
  3. Run a second pass to set/finalize colors.
  4. Optionally run another pass for opacity handling (file/type dependent).
  5. Transfer larger payloads due to staging/capacity overhead.
  6. Persist/reload some parsed estimate data through IndexedDB paths.

The result was avoidable CPU time, extra allocations, and slower perceived load in the UI.

New Workflow (Now, Single Worker)