reflex leads the full suite.
JS Reactivity Benchmark
Propagation, graph, and computation stress tests. Lower average runtime wins.
3.1% behind the leader.
19 first-place finishes across individual tests.
Updated April 12, 2026 at 07:41 PM UTC. Auto-generated from bench-results/latest.log. Slowest to fastest spread: 3.71x.
Leaderboard
| # | Framework | Avg, ms |
|---|---|---|
| 1 | reflex | 184.04 |
| 2 | alien-signals | 189.77 |
| 3 | @reactively | 231.90 |
| 4 | Oby | 308.67 |
| 5 | s-js | 312.64 |
| 6 | @amadeus-it-group/tans | 326.78 |
| 7 | $mol_wire | 389.54 |
| 8 | Preact Signals | 389.95 |
| 9 | uSignal | 411.37 |
| 10 | Signia | 481.87 |
| 11 | SolidJS | 562.55 |
| 12 | @vue/reactivity | 595.36 |
| 13 | @solidjs/signals | 618.05 |
| 14 | MobX | 683.42 |
Average across 35 tests for 14 frameworks.
reflex
alien-signals
@reactively
Oby
s-js
@amadeus-it-group/tans
$mol_wire
Preact Signals
uSignal
Signia
SolidJS
@vue/reactivity
@solidjs/signals
MobX
Visual Comparison
Per-Test Comparison
avoidablePropagation
broadPropagation
deepPropagation
diamond
mux
repeatedObservers
triangle
unstable
molBench
createDataSignals
createComputations0to1
createComputations1to1
createComputations2to1
createComputations4to1
createComputations1000to1
createComputations1to2
createComputations1to4
createComputations1to8
createComputations1to1000
updateComputations1to1
updateComputations2to1
updateComputations4to1
updateComputations1000to1
updateComputations1to2
updateComputations1to4
updateComputations1to1000
64x6 - 4 sources - dynamic - read 12% (dashboard selective r
24x8 - 3 sources - dynamic - read 40% (editor derived state)
120x7 - 5 sources - dynamic - read 18% (kanban board)
40x10 - 4 sources - dynamic - read 60% (entity detail page)
10x5 - 2 sources - read 20% (simple component)
10x10 - 6 sources - dynamic - read 20% (dynamic component)
1000x12 - 4 sources - dynamic (large web app)
1000x5 - 25 sources (wide dense)
5x500 - 3 sources (deep)
How To Read This
reflex is the strongest result in this run with the best average runtime, 3.1% ahead of alien-signals. It also takes 19 of 35 scenario wins, while alien-signals takes 14.
That usually points to an advantage in update-heavy, graph-propagation, and computation-creation workloads covered by this suite, not a universal guarantee for every production app.
Real-world performance still depends on rendering cost, memory pressure, batching strategy, cache locality, framework ergonomics, and whether your app looks more like the fast scenarios or the outliers shown above.