Benchmark
Runtime characterization, not a race. Three kinds of numbers appear on this page and each is labelled: results stored from local runs, results from synthetic workloads, and readings taken in your browser right now.
Core microbenchmarks do not support a universal performance-superiority claim. In several measured scenarios, the engine introduced orchestration overhead. Performance is therefore treated as systems characterization.
React 18 end-to-end
React 18.3.1 with the real adapter: three transitions, each ending in the requested state with one observed React re-render. Two long-task entries were reported per sample, so these are treated as characterization only.
Measured locally, stored result| Target experience | Switch latency | Resource wait | Commit to paint | CLS | Dropped frames | Long tasks |
|---|---|---|---|---|---|---|
ar-EG::luxury::smooth | 23.9 ms | 1.1 ms | 5.2 ms | 0 | 0 | 2 |
en-US::light::instant | 34.0 ms | 0.7 ms | 13.6 ms | 0 | 0 | 2 |
ar-EG::luxury::smooth | 27.4 ms | 0.3 ms | 13.9 ms | 0 | 0 | 2 |
Three samples in one local Chromium-based browser. Recorded with the earlier adapter revision, which polled the core every 16 ms. The adapter now subscribes to commits, and these samples have not been re-measured. Source: 04-evidence/phase-92-runtime-validation/phase-92-runtime-validation.json
Next.js client runtime
Next.js 16.2.0 App Router with React 19.2.0, production server. After hydration, three transitions ran through the adapter and the DOM converged to each requested state.
Measured locally, stored result| Target experience | Request to DOM convergence |
|---|---|
en-US::light::instant | 15.8 ms |
ar-EG::luxury::smooth | 18.6 ms |
en-US::light::instant | 13.8 ms |
Recorded with the earlier adapter revision, which polled the core every 16 ms. The adapter now subscribes to commits, and these samples have not been re-measured. Source: 04-evidence/phase-92-runtime-validation/phase-92-runtime-validation.json. Server-side personalization is covered on the Personalized SSR page.
Synthetic and stress workloads
These describe behaviour on generated workloads. They characterize the tested dependency model and say nothing about speed in a real product.
Synthetic workload| Experiment | Workload | Outcome |
|---|---|---|
| Locality | 10,000-node DAG, 6 required nodes | The 6-node closure was prepared instead of all 10,000 nodes: 99.94% less than full invalidation. |
| Heterogeneous consequences | 144 ordered transitions, then 5,000 random | 0 semantic mismatches against the manual baseline. |
| Rapid requests | 101 requests in headless Chromium | 1 committed, 100 classified stale; the final state matched the final request. |
Source: 02-paper/main_author.tex. Ablation and baseline results are on the Evidence page.
Take your own readings
Cold, cached, preloaded, RTL and rapid scenarios, run once each against the real engine on this device. “Cold” means cold for the engine’s cache; your browser may already hold the files.
| Scenario | What is timed | setExperience() | Observed |
|---|---|---|---|
| Cold | First transition to an experience whose resources have never loaded | — | Not run yet |
| Cached | The same transition again, resources already in the engine’s cache | — | Not run yet |
| Preloaded | preload() called first, then the transition | — | Not run yet |
| RTL | Culture only: en-US to ar-EG, direction ltr to rtl | — | Not run yet |
| Rapid | 5 requests without waiting, until all have settled | — | Not run yet |
These readings cover the engine call only: resolution, delta, closure, resource loading and commit. They exclude React rendering and painting, depend on your device and network cache, and are not comparable with the stored results above.