Search papers, labs, and topics across Lattice.
This paper introduces Willow, a core calculus for reactive programming that enhances the understanding and verification of temporal behavior in applications built with frameworks like React. By implementing a type-and-effect system that statically tracks timing behavior and leverages a temporal dependency graph, Willow enables the detection of render cascades and inter-render loops that can lead to performance issues. The results show that time-aware typing significantly improves the reasoning about the temporal correctness of reactive programs, addressing common bugs related to timing assumptions in existing frameworks.
Willow's innovative type-and-effect system reveals hidden timing dependencies in reactive programs, enabling static detection of performance-degrading render cascades.
Reactive programming frameworks such as React allow developers to build interactive applications by declaratively specifying how outputs depend on changing inputs. Although this model makes it easy to reason about what an application computes, the temporal behavior of reactive programs remains difficult to understand and verify. Applications implicitly rely on timing assumptions buried in framework runtimes, leading to subtle bugs such as stale reads, transient inconsistencies, order-dependent behavior, and unintended feedback cycles. To address these challenges, this paper presents Willow, a core calculus for reactive programming inspired by React. Willow gives a time-aware operational semantics that models computation in terms of renders, the fundamental evaluation step in which components produce user interface descriptions, and pairs it with a novel type-and-effect system that statically tracks timing behavior as effects. A"next"modality expresses delays measured not only in renders but in any unit the host environment exposes--renders, network requests, or milliseconds. A family of modalities tracks the lifecycle of event handlers: when they are registered, when they fire, when pending events are canceled and when handlers are removed. A key insight is that the resulting effects form a temporal dependency graph, letting standard graph algorithms statically detect render cascades and inter-render loops that cause non-termination or performance degradation. We formalize Willow and prove preservation of the effect system with respect to the time-aware semantics. We also implement a prototype checker with automatic effect inference and evaluate it on representative reactive patterns such as debouncing, form inputs, and API-driven updates. Our results demonstrate that time-aware typing provides a practical foundation for reasoning about the temporal correctness of reactive programs.