Skip to content

[pull] master from reactive:master#83

Merged
pull[bot] merged 5 commits intoerickirt:masterfrom
reactive:master
Mar 21, 2026
Merged

[pull] master from reactive:master#83
pull[bot] merged 5 commits intoerickirt:masterfrom
reactive:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Mar 21, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

ntucker added 5 commits March 21, 2026 12:39
Drop react-window in favor of plain keyed lists with a configurable
renderLimit that caps DOM rendering while keeping all data in the store.
This decouples store size from DOM pressure and lets React reconcile
by key instead of index.

Also:
- Rename scenarios for clarity (update-entity, update-user, etc.)
- Increase default mountCount to 1000 for update/ref-stability scenarios
- Make React Compiler the default build (opt-out with REACT_COMPILER=false)

Made-with: Cursor
Extract shared helpers (runRound, recordResult, warmupCount) to
eliminate three copies of the lib-iteration loop. Consolidate three
parallel result maps into a single Map<string, ScenarioSamples>.
Derive BaseScenario from Scenario via Omit so new fields flow
through automatically, and replace the 12-line manual property
mapping with destructure + spread. Simplify react-commit eligibility
from a 10-action list to !scenario.resultMetric. Remove dead startup
code. Skip data-client-only scenarios when benchmarking all
frameworks. Update README with measured results table.

Made-with: Cursor
Reduce benchmark variance and improve result reliability:

- IQR outlier trimming in stats (single GC spikes no longer widen CI)
- Force V8 GC via CDP between scenarios and after pre-mount
- Shuffle scenario order within each library to eliminate ordering bias
- Bump minMeasurement (small: 3→5, large: 2→3) for more reliable convergence
- Increase large maxMeasurement in CI (4→6) for more convergence headroom

Made-with: Cursor
gh-pages-bench has no website/ directory — it only exists for GitHub
Pages benchmark rendering. The ignoreCommand was erroring out on these
branches, causing Vercel to attempt (and fail) preview deployments.

Made-with: Cursor
* demo(benchmark-react): add multi-view entity update scenario

Add `update-entity-multi-view` benchmark where the same issue entity
is displayed across three structurally different component trees (list
row, detail panel, pinned card strip). A single entity update must
propagate to all three views, exercising normalized cache cross-query
propagation vs. multi-query invalidation + refetch.

Made-with: Cursor

* demo(benchmark-react): fix post-mount GC inflating data-client times

Remove forced HeapProfiler.collectGarbage after pre-mount. The full GC
promoted all recently-allocated entities into V8's old generation,
causing write-barrier overhead during the timed action that
disproportionately penalized data-client's CPU-bound optimistic updates
(~1.8x inflation) while leaving network-bound libraries unaffected.

Also re-measure all scenarios and reorganize the README summary table
into Navigation / Mutations / Scaling categories.

Made-with: Cursor

* demo(benchmark-react): fix initMultiView double-setComplete race

measureMount's MutationObserver called setComplete() (setting
data-bench-complete) as soon as list items appeared, before the
detail panel and pinned card views were ready. The runner could
see this premature signal, proceed to the timed update phase, and
then receive a stale second setComplete() — corrupting the
measurement.

Refactor measureMount to return a Promise and accept
{ signalComplete: false } so initMultiView can suppress the
early completion signal and call setComplete() once after all
three views are ready.

Made-with: Cursor
@pull pull bot locked and limited conversation to collaborators Mar 21, 2026
@pull pull bot added the ⤵️ pull label Mar 21, 2026
@pull pull bot merged commit 655b42e into erickirt:master Mar 21, 2026
1 of 3 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant