Live benchmark — Micra.js vs the others
Run the same workload across reactive UI libraries on your own machine. There are no pre-recorded numbers or marketing slides. Just click Run all benchmarks and watch what happens.
Reactive frameworks (Alpine, petite-vue) occasionally time out under heavy iteration loads — re-running usually recovers. Use the numbers below as a directional comparison, not a benchmark suite ready for press.
Each scenario is run N times (specific to the workload). Each
iteration: fresh DOM, setup() → measure
run() with performance.now() →
teardown(), then a 16ms idle gap.
Median is reported (more stable than mean for warm-up effects). Each library's adapter implements the scenario in its own idiomatic API — same observable behavior, different code shape.
What "N/A" means: some scenarios don't map across paradigms. Stimulus isn't reactive, so list scenarios are N/A. htmx and hyperscript solve different problems entirely (server-driven, inline DSL) — they're in the comparison table on the main page but not benchmarked here.
Known limitations (v0.5 — experimental):
Alpine.js and petite-vue use async reactivity schedulers (Vue's
queue, Alpine's nextTick). We wait for a
requestAnimationFrame before stopping the timer so
renders complete, but cumulative state across iterations can
still cause stalls — when that happens, a scenario times out at
60s and shows ERR. Re-running
usually recovers. Micra, vanilla and Stimulus are stable.
Source code:
github.com/denisfl/micra.js/site/bench
· libraries pinned in
vendors/. Each adapter runs in its own iframe
(frames/<lib>.html) so MutationObservers and
reactive queues are isolated.