Signals: The new Reactivity model taking over frameworks
Introduction
For years, JavaScript frameworks have followed a predictable pattern for managing UI updates: maintain state, detect changes, and trigger re-renders. React popularized this approach with useState, useEffect, and the virtual DOM. But what if we could update our UI without triggering a full component re-render? Enter Signals — a new, fine-grained reactivity model that’s reshaping modern frontend frameworks.
In 2024 and beyond, Signals are becoming a core building block in frameworks like SolidJS, Qwik, Angular, and even influencing experimental efforts in React. This blog explores what Signals are, how they work, and why they might be the future of reactive UI development.
The Problem with Traditional Reactivity
Most JavaScript frameworks today rely on a component-based re-rendering model:
When a state changes, the entire component re-renders.
React uses hooks like useEffect, useMemo, and useCallback to optimize performance.
Developers spend a lot of time managing re-renders, memoization, and avoiding unnecessary computations.
This approach can lead to performance bottlenecks in large applications, complex component trees, and boilerplate code that’s hard to maintain.
What Are Signals?
Signals are reactive primitives that hold a value and notify dependents when that value changes. Unlike useState or useEffect, Signals don’t rely on component lifecycle or virtual DOM diffing. Instead, they enable fine-grained reactivity by tracking dependencies at the expression level.
In simple terms:
- A Signal is a smart variable.
- It notifies only the parts of the UI that depend on it when it changes.
- No component re-render is required.
Example in SolidJS:

Signals Implementation Example
In this example, only the <p> element is re-evaluated when count changes — not the entire Counter component.
How Signals Work Under the Hood
Signals use a publish-subscribe mechanism:
- When a Signal is read, it registers the current computation as a subscriber.
- When the Signal changes, only those computations are re-executed.
This results in:
- Fewer re-renders
- More predictable performance
- Cleaner code with fewer optimizations required
- Unlike traditional frameworks, there’s no need for effects, dependency arrays, or memoization.
Frameworks Embracing Signals

Frameworks Embracing Signals
These frameworks are demonstrating how Signals can lead to simpler, faster, and more scalable applications.
Benefits of Signals
✅ Fine-Grained Performance: Only re-run what’s necessary
✅ Simplified Code: No need for useEffect, memo, or callback
✅ Better DX: Easier to reason about state and updates
✅ Composable: Signals can be used anywhere — not tied to component lifecycle
Drawbacks and Considerations
⚡️ Learning Curve: Signals require a different mental model
⚖️ Tooling Maturity: Debugging and devtools are still catching up
⚠️ Not Yet Universal: Signals aren’t mainstream in all frameworks
📊 Interop Challenges: Some libraries expect React-style state management
The Future of Signals
The JavaScript ecosystem is shifting toward more efficient rendering models. Signals are part of a broader trend:
React’s experimental React Forget compiler aims to remove the need for hooks and optimize reactivity.
Angular Signals are already showing dramatic performance gains.
Qwik and SolidJS are proving that you can build fast, interactive apps with minimal JS.
In 2025, Signals may well become the new standard for UI reactivity.
Conclusion
Signals offer a powerful new paradigm for managing reactivity in JavaScript. By tracking dependencies at a granular level, they eliminate the need for excessive re-renders and simplify UI logic. As more frameworks adopt Signals, developers will gain a faster, more intuitive way to build responsive web applications.
If you’re working with or exploring modern JS frameworks, now is the perfect time to start learning Signals. They’re not just a new feature — they represent a fundamental shift in how we think about state and UI updates.