# tc39/proposal-signals

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/tc39-proposal-signals).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

4,138 stars · 72 forks · MIT

## Links

- GitHub: https://github.com/tc39/proposal-signals
- awesome-repositories: https://awesome-repositories.com/repository/tc39-proposal-signals.md

## Description

This project is an ECMAScript proposal to introduce a native reactive state primitive to the JavaScript language. It defines a standard for fine-grained reactivity, providing a mechanism to track value dependencies and automatically propagate updates through a dependency graph.

The specification focuses on managing computed values and side effects based on granular changes to state. It enables the synchronization of state updates across a dependency graph and the tracking of relationships between values and their observers without manual subscriptions.

The proposal covers efficient value computation using lazy evaluation and memoization, as well as the ability to define custom equality logic to determine when state changes should trigger updates. It also includes capabilities for observing state changes and accessing values without registering dependencies.

## Tags

### Programming Languages & Runtimes

- [ECMAScript Proposals](https://awesome-repositories.com/f/programming-languages-runtimes/ecmascript-proposals.md) — Implements a formal technical specification to introduce native reactive state primitives to the JavaScript language standard.
- [Reactive State Primitives](https://awesome-repositories.com/f/programming-languages-runtimes/reactive-state-primitives.md) — Introduces a native reactive state primitive to the JavaScript language standard. ([source](https://github.com/tc39/proposal-signals#readme))
- [Reactive Computed Values](https://awesome-repositories.com/f/programming-languages-runtimes/deferred-execution/lazy-evaluation/reactive-computed-values.md) — Implements derived values that use lazy evaluation and caching within a reactivity system. ([source](https://github.com/tc39/proposal-signals#readme))
- [Custom Equality Comparators](https://awesome-repositories.com/f/programming-languages-runtimes/equality-comparisons/custom-equality-comparators.md) — Allows developers to define custom equality logic to prevent unnecessary update propagation.

### Software Engineering & Architecture

- [Change Detection](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/change-detection.md) — Monitors application state to determine when dependency changes require re-evaluation. ([source](https://github.com/tc39/proposal-signals#readme))
- [Dependency Tracking](https://awesome-repositories.com/f/software-engineering-architecture/dependency-tracking.md) — Automatically identifies and tracks data dependencies in a reactive system without manual bookkeeping. ([source](https://github.com/tc39/proposal-signals/blob/main/README.md))
- [Dirty Flagging Systems](https://awesome-repositories.com/f/software-engineering-architecture/dirty-flagging-systems.md) — Uses a dirty-flagging system to mark dependents as invalid when source signals change.
- [Fine-Grained Dependency Tracking](https://awesome-repositories.com/f/software-engineering-architecture/fine-grained-dependency-tracking.md) — Tracks precise signal-to-effect relationships to minimize updates for state synchronization.
- [Memoized Computations](https://awesome-repositories.com/f/software-engineering-architecture/memoized-computations.md) — Provides lazy evaluation and memoization for derived values to optimize performance.
- [Reactive Primitives](https://awesome-repositories.com/f/software-engineering-architecture/reactive-primitives.md) — Introduces a fundamental signal primitive for tracking value dependencies and automatically propagating updates.
- [Reactive State Management](https://awesome-repositories.com/f/software-engineering-architecture/reactive-state-management.md) — Provides a system for managing application state using native reactive primitives.
- [Custom Comparison Logic](https://awesome-repositories.com/f/software-engineering-architecture/custom-comparison-logic.md) — Supports user-defined comparison functions to determine if a value change should trigger updates. ([source](https://github.com/tc39/proposal-signals#readme))
- [Custom Equality Definitions](https://awesome-repositories.com/f/software-engineering-architecture/custom-equality-definitions.md) — Enables the definition of custom equality functions for specific data types within the reactive system. ([source](https://github.com/tc39/proposal-signals/blob/main/README.md))
- [State Change Observers](https://awesome-repositories.com/f/software-engineering-architecture/state-change-observers.md) — Triggers registered callbacks via watchers when dependencies in the state tree are updated. ([source](https://github.com/tc39/proposal-signals/blob/main/README.md))
- [Untracked Accessors](https://awesome-repositories.com/f/software-engineering-architecture/untracked-state-storage/untracked-accessors.md) — Enables reading signal values without registering a dependency to avoid accidental re-evaluations.

### User Interface & Experience

- [Fine-Grained Reactivity](https://awesome-repositories.com/f/user-interface-experience/fine-grained-reactivity.md) — Defines a standard for a reactivity engine that tracks data dependencies at a granular level for high-performance updates.
- [Automatic Dependency Tracking](https://awesome-repositories.com/f/user-interface-experience/ui-architecture/reactivity-systems/automatic-dependency-tracking.md) — Implements a mechanism to implicitly detect and record reactive dependencies during execution.

### Operating Systems & Systems Programming

- [Non-Reactive Value Reads](https://awesome-repositories.com/f/operating-systems-systems-programming/one-time-initialization/non-reactive-value-reads.md) — Provides a way to retrieve a value without establishing a reactive subscription. ([source](https://github.com/tc39/proposal-signals/blob/main/README.md))

### Web Development

- [Synchronous State Updates](https://awesome-repositories.com/f/web-development/state-update-handlers/debounced-state-updates/immediate-state-updates/synchronous-state-updates.md) — Processes state updates synchronously across the dependency graph to prevent race conditions. ([source](https://github.com/tc39/proposal-signals#readme))
- [Synchronous Dependency Propagation](https://awesome-repositories.com/f/web-development/state-update-handlers/debounced-state-updates/immediate-state-updates/synchronous-state-updates/synchronous-dependency-propagation.md) — Ensures state updates are applied synchronously and consistently across a complex dependency graph in JavaScript.
- [Synchronous Propagation](https://awesome-repositories.com/f/web-development/state-update-handlers/debounced-state-updates/immediate-state-updates/synchronous-state-updates/synchronous-propagation.md) — Ensures that state updates propagate synchronously across the dependency graph to maintain consistency.
- [Transient State Reads](https://awesome-repositories.com/f/web-development/state-update-handlers/transient-state-reads.md) — Implements transient state reads that do not register dependencies or trigger re-renders. ([source](https://github.com/tc39/proposal-signals#readme))
