This project has been succeeded by GraphReFly. New development happens at graphrefly-ts. npm install @graphrefly/graphrefly
Skip to content

March 25, 2026

Lazy Tier 2: The switchMap Footgun We Had to Kill ​

Chronicle 16 - Arc 5: Architecture v4 - Performance Without Compromise

switchMap is simple to describe and easy to get wrong in an engine.

Our old behavior eagerly activated Tier 2 work before it was actually needed. That looked harmless, but in switchMap chains it produced unnecessary subscribe/unsubscribe churn and exposed timing windows where stale inner streams could still do work.

v4 fixed this by making Tier 2 activation lazy.

The original footgun ​

In the eager model, creating an inner path could trigger setup immediately, even if:

  • the parent value was about to switch again
  • no downstream sink was currently consuming that branch
  • the branch would be disposed in the same tick

With rapid source updates, we paid repeated setup cost for branches that never produced durable output.

What lazy Tier 2 means ​

Lazy Tier 2 shifts work to demand time:

  • construct references early
  • activate expensive path state only on first real consumption
  • tear down promptly when the branch is superseded

This matches switchMap semantics: "latest wins" should mean old branches stop being expensive as soon as they are irrelevant.

Why this is a correctness story too ​

This change is not only about speed. It tightens behavior:

  • fewer opportunities for stale branch side effects
  • clearer lifecycle boundaries for cancellation and reset
  • easier reasoning about which branch is authoritative at any moment

When setup is lazy and scoped to active demand, there are fewer ambiguous states.

Bench-level effect ​

The biggest wins appeared in workloads with:

  • high-frequency source emissions
  • expensive inner setup
  • low output retention for superseded branches

Steady, low-churn graphs see smaller gains. That is expected. We optimized the failure mode, not the happy path.

Takeaway ​

Reactive correctness often means refusing to do work early "just in case."

Lazy Tier 2 aligned switchMap implementation with user intent: do the minimum for the current branch, and stop paying for branches that already lost.

Released under the MIT License.