0.13.1 (2026-07-20)
- perf: stop hardware sniffing that misclassified capable devices (f8131eb)
- perf: stop hardware sniffing that misclassified capable devices (d52e959)
0.13.0 (2026-07-19)
- canvas: configurable zoom bounds (maxZoom + per-input pinch/wheel) (8d2c50d)
- canvas: configurable zoom bounds via zoomConfig (maxZoom + per-input) (5c922c5)
- perf: capability-based performance tiers — assume capable by default (c439c67)
- perf: capability-based performance tiers — assume capable by default (e27d06c)
- canvas: don't promote the scene layer on iOS (WebKit crash risk) (46b50b6)
- canvas: don't promote the scene layer on iOS (WebKit crash risk) (3dc0d5c)
- canvas: key stable will-change on isMobile, not performance tier (d3ad76d)
- canvas: key stable will-change on isMobile, not performance tier (1b5fb96)
- canvas: stable will-change on mobile — stop gesture-toggled layer thrash (pan/zoom flashing) (830c9c6)
- canvas: stop toggling will-change per gesture on mobile (24d9861)
0.12.2 (2026-07-19)
- navbar: lazy-load lucide-react icons to fix consumer bundle bloat (1536851)
- navbar: lazy-load lucide-react icons to fix consumer bundle bloat (e36058e)
- bench: add native Go profile analyzer (341229e)
- bench: enforce native batch ceilings (2acacda)
- bench: harden and batch native analysis (0c760fd)
- bench: harden native profiling workflow (f017f2a)
- bench: match JavaScript numeric seed formatting (b2cd95d)
- bench: migrate profiling tools to TypeScript and Go (f8f868e)
- bench: preserve interrupted report state (399e65e)
- bench: reject nonportable analyzer options (e80797a)
- bench: spawn converted runtime entry point (133d18e)
- bench: update bundle baseline for lucide code-split (9c4ff1d)
- bench: convert bundle tooling to TypeScript (256cb7b)
- bench: convert e2e tooling to TypeScript (e4dc1c2)
- bench: convert runtime tooling to TypeScript (aeaf6f2)
- test: convert browser test to TypeScript (138c7cb)
- bench: exercise native analysis end to end (d2d923b)
- bench: exercise parity harness on every PR (5fce5a4)
- bench: preserve package size budget (dca3f77)
- bench: keep the bundle report free of build-tool noise (d6f783c)
- bench: make bundle budget informational, report deltas on the PR (aa7e8b2)
- bench: make bundle budget informational, report deltas on the PR (7c3a6eb)
- bench: render the bundle report as a Markdown table (bec285e)
- bench: show before/after deltas in the bundle report (309ef80)
0.12.1 (2026-07-18)
This release reduces rendering, subscription, and interaction hot-path overhead while adding reproducible before/after performance and strict visual-parity tooling. The public API and import paths are unchanged, so no migration is required. The complete work landed in PR #49.
- Reduced unnecessary React work by sharing window-size updates, removing duplicate internal dimension subscriptions, skipping unused high-mode visibility subscriptions, stopping loading-state updates after the intro, and avoiding toolbar React renders unless custom formatters need them.
- Reduced wheel and pan property reads, removed per-event pinch arrays and midpoint allocations, and reused draggable-image geometry for bounds and alpha hit-testing.
- Improved consumer tree-shaking by marking only CSS as side-effectful and removed Framer Motion overhead from the already-static default intro logo.
Against 0.12.0, two independent 10-pair production-profiling fixture runs produced:
| Metric | Replication A | Replication B |
|---|---|---|
| Total React Profiler work | 65.05 → 22.35 ms | 63.85 → 21.15 ms |
| React commits | 754 → 20 | 789 → 20 |
| Active listeners | 273 → 221 | 273 → 221 |
| Active resize listeners | 79 → 27 | 79 → 27 |
The primary React-work metrics improved in every measured pair: about 66% less total React Profiler work and 97.3–97.5% fewer commits. These are fixture-specific React Profiler and listener measurements, not whole-application CPU-cycle or FPS guarantees.
Pinned-toolchain consumer fixture bundles all became smaller. Focused-import gzip bundles shrank 10.9–89.5%, the Draggable fixture shrank 21.3%, and the full Canvas fixture shrank 0.18%; generated CSS was byte-identical. The packed npm artifact instead grew from 99,302 to 101,288 bytes (+2.000%), with the same 95 files, and remained within the explicitly reviewed package-size gate.
A fail-closed 14-scenario Chromium comparison at 1280×720/DPR 1 detected 0 differing pixels across 12,902,400 compared pixels, 0 px maximum geometry difference, and 0 numeric difference across 160 interaction checkpoints. Animation semantics and sampled trajectories also matched in the fixed benchmark environment.
- Made shared window-dimension snapshots deterministic and hydration-safe.
- Restored the HackWestern example's 1.05× draggable-image hover expansion by opting that demo into the existing
hoverScalebehavior; this is not a new library default.
- Added paired production-runtime benchmarks for React commits and render work, listeners, frame pacing, Long Tasks, Long Animation Frames, heap usage, and motion trajectories.
- Added opt-in CPU, browser-trace, allocation, and forced-GC profiling, plus exact screenshot, DOM, style, SVG, geometry, interaction, and animation-parity comparisons.
- Added Node 24 CI checks for dependency auditing, package and fixture types, tests, builds, consumer bundle/package budgets, fail-closed browser capture, and strict parity.
- Final-head frame-time signals were noisy or inconclusive, so this release does not claim universally higher FPS or smoother frames. A single report-only dynamic-toolbar p99 warning did not reproduce in six focused repeats.
- Two forced-GC studies found about 1.1–1.4% more incremental live-heap growth even though absolute post-capture live heap decreased by roughly 257–305 KB and sampled allocation traffic improved. This release therefore does not claim uniformly lower memory use.
- CPU, trace, and allocation profiles remain diagnostic: they were captured on a near-final source revision before the final hydration-only change and are not presented as release-head guarantees.
See the full benchmark evidence and interpretation limits.
0.12.0 (2026-02-25)
0.11.1 (2026-02-24)
0.11.0 (2026-02-23)
0.10.1 (2026-02-22)
0.10.0 (2026-02-05)
0.9.0 (2026-02-03)
0.8.0 (2026-01-31)
0.7.0 (2026-01-15)
0.6.0 (2026-01-15)
0.5.0 (2026-01-14)
0.4.1 (2026-01-14)
0.4.0 (2026-01-13)
0.3.1 (2026-01-13)
0.3.0 (2026-01-12)
0.2.1 (2026-01-12)
0.2.0 (2026-01-12)
0.1.3 (2026-01-11)
Initial version tracked by release-please.