How we built a terminal UI framework that only repaints what changed.
Every terminal framework we tried repaints the entire screen every frame. Write a character, repaint 10,000 cells. Scroll one line, repaint 10,000 cells. We decided to treat the terminal like a dis...

Source: DEV Community
Every terminal framework we tried repaints the entire screen every frame. Write a character, repaint 10,000 cells. Scroll one line, repaint 10,000 cells. We decided to treat the terminal like a display server instead. The idea What if we tracked every cell in a typed-array buffer and only wrote the ones that actually changed? That's Storm. A React-based terminal UI framework where the renderer diffs individual cells between frames. On a typical scroll frame, 97% of cells are unchanged — Storm skips them entirely. How it works Typed-array buffers — Int32Array + Uint8Array instead of JS objects. A 200×50 terminal has 10,000 cells. Traditional frameworks create 10,000 objects per frame. Storm creates zero — the buffer is flat arrays. ~90% less GC pressure. Cell-level diff — After painting into the buffer, the diff engine compares frame N against frame N+1 cell by cell. Only changed cells produce ANSI output. The rest are skipped entirely. WASM acceleration — An optional 35KB Rust module h