March 8, 2026
Push, pull… and popcorn
Pushing and Pulling: Three reactivity algorithms
Spreadsheet-style reactivity explainer ignites a push–pull pile‑on: speed, sync, and “do we really need this” vibes
TLDR: A dev explains three ways apps keep values in sync—push, pull, or both—using a simple spreadsheet analogy. The comments explode into theory vs. practice: some argue you must know all connections up front, others point to real tools like Vue and a Rust demo with undo/redo, debating speed, correctness, and sanity.
A dev breaks down how apps keep things in sync—think a giant spreadsheet where changing one cell updates the rest—and the comments went full primetime drama. The author, MrJohz, literally pops into the thread with “I’m here, ask me anything,” and points folks to a deeper chat on Lobsters. From there, the community split into camps faster than you can say “recalculate.”
On one side: the theory buffs waving textbooks. RossBencina nudges everyone toward compiler lessons and the many ways to model these “who-updates-what” chains. On the other: the show-me-the-code crowd, with samsartor flexing a Rust demo that promises safety rails for concurrent edits, a merge-without-fights trick (that’s CRDTs), and the mic-drop: free undo/redo. Cue applause—and side-eye.
The spiciest skirmish? Whether you must know the whole “map” of connections ahead of time. crabmusket claims you do, calling out real apps and name-dropping Vue as a different vibe where connections can be discovered on the fly. Meanwhile, practical devs argue that “glitchless” (no awkward half-updated moments) is nice in theory, but overkill if users never see it. Meme lords chimed in with: “Push or pull? Like shampoo—use both,” and “Undo/redo? That’s Ctrl+Z-as-a-service.” The verdict: fascinating explainer, fiery comments, and enough hot takes to power a render farm.
Key Points
- •The article compares three reactivity approaches: push, pull, and hybrid push/pull.
- •It defines four requirements for reactive systems: Efficient, Fine-grained, Glitchless, and Dynamic.
- •Efficiency and fine-grained updates reduce redundant computation in large dependency graphs.
- •Glitchlessness prevents observable intermediate inconsistent states (e.g., code and country name mismatch).
- •Dynamic dependencies enable conditional tracking, creating dependencies only when conditions are true.