# TC39 Proposal Signals

A Stage 1 TC39 proposal to add a native `Signal` primitive to JavaScript. The goal isn't to replace framework-specific APIs (Solid's `createSignal`, Vue's `ref`, Preact's `signal`) but to provide a shared reactive foundation underneath them. Frameworks would keep their surface APIs but share the subscription, invalidation, and dependency-tracking machinery.

If adopted, this would mean signals from different frameworks could interoperate — a Solid signal could feed into a Vue computed, because both would be built on the same native primitive.

The proposal covers the core push-pull algorithm: eager invalidation on write, lazy re-evaluation on read, automatic dependency tracking via an execution context stack. See [[signal-push-pull-algorithm]] for how this algorithm works in practice.

Stage 1 means the committee thinks the problem is worth solving, but the API shape is still open. No browser has shipped an implementation yet.

## Related

- [[reactive-signals]] — the broader concept
- [[signal-push-pull-algorithm]] — implementation walkthrough of the algorithm this proposal would standardize
