Every gesture frame currently rewrites the viewbox transform attribute, which forces main-thread paint over the whole SVG. Instead apply a CSS transform to a wrapper during the gesture (the compositor moves the painted texture, zero main-thread work per frame) and commit the real viewbox transform once at gesture end.
Pairs with the settle-only recalc from PR #21 - the settle commit and the reconcile become the same moment. Known trade: scaled SVG textures blur mid-gesture until the settle repaint. Sharp at rest, cheap in motion. Test whether the zoom blur band reads acceptably at 2 to 3x over-scale.
Check interplay with the minimap, the heightmap tracing canvas, and hit-testing during an uncommitted transform.
Every gesture frame currently rewrites the viewbox transform attribute, which forces main-thread paint over the whole SVG. Instead apply a CSS transform to a wrapper during the gesture (the compositor moves the painted texture, zero main-thread work per frame) and commit the real viewbox transform once at gesture end.
Pairs with the settle-only recalc from PR #21 - the settle commit and the reconcile become the same moment. Known trade: scaled SVG textures blur mid-gesture until the settle repaint. Sharp at rest, cheap in motion. Test whether the zoom blur band reads acceptably at 2 to 3x over-scale.
Check interplay with the minimap, the heightmap tracing canvas, and hit-testing during an uncommitted transform.