Back to Signal Feed
CodeTracked since May 19, 2026

Drain Node performance entries to stop nanocoder Ink session OOMs

A runtime fix adds a periodic housekeeper for Node’s global `perf_hooks` buffer in nanocoder’s Ink sessions, clearing marks/measures/resource timings every 30 seconds so long interactive workflows no longer accumulate unbounded performance entries that caused JavaScript heap exhaustion.

Node.jsperf_hooksInk (react-reconciler)performance.clearMarks

What Happened

  • A runtime fix adds a periodic housekeeper for Node’s global `perf_hooks` buffer in nanocoder’s Ink sessions, clearing marks/measures/resource timings every 30 seconds so long interactive workflows no longer accumulate unbounded performance entries that caused JavaScript heap exhaustion.
  • A runtime fix adds a periodic housekeeper for Node’s global `perf_hooks` buffer in nanocoder’s Ink sessions, clearing marks/measures/resource timings every 30 seconds so long interactive workflows no longer accumulate unbounded performance entries that caused JavaScript heap exhaustion.
  • 1 evidence item attached for review.

What is Different

Before

Scattered source updates, isolated context, and manual follow-up across multiple feeds.

Now

Implemented a concrete memory-stability fix for long-running interactive and `run` sessions: nanocoder now installs a startup-time guard that repeatedly drains performance timing entries, removing the growth path that was never consumed by any internal observer and only existed in the Ink path.

Why Track This

Why It Matters

Operators running long nanocoder interactive workflows with many subagent turns should see fewer abrupt `JavaScript heap out of memory` crashes, which means fewer failed batches and fewer manual restarts during extended sessions; technically, the fix adds a periodic cleanup of Node `perf_hooks` entries (`measure`, `mark`, and resource timings) before rendering begins so repeated React and HTTP timing calls cannot silently bloat the global buffer. Continue to watch if 30-second cleaning remains sufficient under extreme render/request rates and whether any downstream tooling expected those in-process timing entries for diagnostics.

Impact

Operators running long nanocoder interactive workflows with many subagent turns should see fewer abrupt `JavaScript heap out of memory` crashes, which means fewer failed batches and fewer manual restarts during extended sessions; technically, the fix adds a periodic cleanup of Node `perf_hooks` entries (`measure`, `mark`, and resource timings) before rendering begins so repeated React and HTTP timing calls cannot silently bloat the global buffer. Continue to watch if 30-second cleaning remains sufficient under extreme render/request rates and whether any downstream tooling expected those in-process timing entries for diagnostics.

What To Watch Next

  • Watch whether Node.js becomes a repeated pattern.
  • Track follow-up changes around Observability and Tracing.
  • Compare future signals against this evidence trail.
  • Re-check risk flags: interval_period_too_sparse_for_extreme_render_burstes, cleanup_behavior_changes_observability_if_devtools_relied_on_in_process_entries.
Open Topic TimelineOpen Technical EventOpen Original Sourceinterval_period_too_sparse_for_extreme_render_burstes / cleanup_behavior_changes_observability_if_devtools_relied_on_in_process_entries / potential_regression_in_unexpected_interactive_code_paths

Supporting Evidence