The Rise of Signals – Solid, Qwik, and React’s New RFC
April 1, 2024
Signals are becoming one of the most discussed ideas in front-end frameworks lately.
They offer a lightweight, fine-grained reactivity model. Unlike traditional state systems like useState
in React, signals let you track and react to changes at a lower cost.
What Are Signals?
A signal is a reactive value. You create it once, and when it changes, everything that uses it updates automatically.
In SolidJS:
import { createSignal } from "solid-js"
const [count, setCount] = createSignal(0)
// Reactive usage
<p>Count: {count()}</p>
<button onClick={() => setCount(count() + 1)}>Increment</button>
This is different from React’s model, which needs rerendering the whole component to update the UI.
Why Use Signals?
- Fine-grained updates (only parts that need to change will change)
- Better performance for large or reactive UIs
- More declarative and less boilerplate
Qwik and Resumability
Qwik also uses signals at its core, but it adds resumability on top. That means it doesn’t hydrate the whole app—only the parts the user interacts with.
import { component$, useSignal } from "@builder.io/qwik"
export const Counter = component$(() => {
const count = useSignal(0)
return (
<button onClick$={() => count.value++}>
Count: {count.value}
</button>
)
})
This makes Qwik fast even on large apps, as only interactive components are hydrated.
React’s Signals RFC?
React’s core team is also considering a signals-like pattern. While it's still early, the discussion shows interest in moving toward more efficient reactivity in the long run.
Developer Satisfaction
Frameworks like Solid and Qwik consistently report very high satisfaction in developer surveys. Once developers try signals, they often don’t want to go back.
Final Thoughts
Signals aren’t just a trend. They represent a shift toward more efficient, scalable UI logic. Whether you’re using Solid, Qwik, or waiting for React’s version, it’s worth learning this pattern now.
Recent posts
- At-Least-Once vs. Exactly-Once - Understanding Message Delivery Guarantees
June 12, 2025
Learn about message delivery guarantees in distributed systems. Understand why most production systems implement at-least-once delivery with idempotency rather than attempting exactly-once delivery.
- How Idempotency Saves Your API from Chaos
June 11, 2025
Learn how to implement idempotency in your APIs to prevent duplicate actions and ensure data consistency. Includes practical examples with Supabase and Node.js.
- Vibe Coding ‑ Notes from the First Try
June 6, 2025
Quick lessons from spinning up a new blog with an AI pair‑programmer and Cursor.