Back to Hub
UI PERFORMANCE • MAY 2026

Bypassing the VDOM via the TC39 Signals API.

For years, React has taught us that the Virtual DOM (VDOM) is fast. But in a complex IDE with thousands of interactive UI elements—file trees, terminal lines, minimaps, and git status indicators—the VDOM becomes a severe liability. When a single file state changes, React has to diff the entire component tree to figure out what changed, burning precious CPU cycles on the main thread.

NitroIDE completely abandoned the Virtual DOM. We adopted the bleeding-edge TC39 Signals API to implement fine-grained reactivity. When a variable changes, only the exact DOM node bound to that variable updates. Zero diffing required.

Native Reactive Primitives

The TC39 Signals proposal brings reactivity directly into the JavaScript language specification. By wrapping our state in a Signal.State, we create a mathematical dependency graph. When the state updates, the engine doesn't re-render the component; it surgically updates the specific textContent or className property directly.

// Implementing zero-diff UI updates using native TC39 Signals
const activeFile = new Signal.State('main.js');
const domNode = document.getElementById('active-tab-title');

// The watcher subscribes directly to the signal
const watcher = new Signal.subtle.Watcher(() => {
  // Only this exact line of code runs when state changes
  domNode.textContent = activeFile.get();
});

watcher.watch(activeFile);

// Triggers an instantaneous, O(1) DOM update. No VDOM diffing.
activeFile.set('utils.ts');

Memory Efficiency: Because we don't have to keep a massive Virtual DOM tree in RAM just to compare it against the real DOM, the memory footprint of the IDE's interface is reduced by roughly 70% compared to a standard React application.

The End of Re-renders

With Signals, the concept of a "component re-render" simply ceases to exist. Functions execute exactly once to set up the DOM bindings, and from that point forward, the UI operates as a highly optimized, surgically precise state machine.

Experience Zero UI Lag.

Interact with our complex file tree and terminal UI without dropping a single frame.

Open IDE