v2.23.0
simstudioai/simv2.23.0Jul 27, 2026by tinchox5
AI Summary
This release focuses on significant performance optimizations and bug fixes for Safari rendering, specifically addressing vector scaling, rasterization issues, and concurrent capture stability. It also improves SVG definition handling and font-face parsing.
Key Highlights
- Optimized Safari rendering by replacing pre-capture warmup with verified draw at raster time.
- Fixed vector scaling issues for Safari's toSvg/toImg methods to preserve vectors.
- Resolved entry keyframe animations blanking out captured elements.
- Improved stability by stopping concurrent captures from sharing session maps.
- Enhanced SVG definition collection and font-face parsing without semicolons.
Full Release Notes
## What's Changed * fix: parse final font-face declarations without semicolons by @RexSkz in https://github.com/zumerlab/snapdom/pull/475 * fix: entry keyframe animations blank out the captured element by @mcdyzg in https://github.com/zumerlab/snapdom/pull/476 ā” perf - perf: replace Safari's 3x pre-capture warmup with a verified draw at raster time [`6ee4680`](https://github.com/zumerlab/snapdom/commit/6ee468081a96eb1731b0580aad18d454f2ce5b5c) š fix - fix: keep Safari toSvg/toImg vector at scale instead of rasterizing to PNG [`dbbff09`](https://github.com/zumerlab/snapdom/commit/dbbff09433847fd1819cfcb900579ef9638f58d4) - fix(styles): disable animations on clones so entry keyframes don't blank the capture [`#476`](https://github.com/zumerlab/snapdom/pull/476) - fix: I freeze nowrap box widths and isolate measure mounts in shadow DOM [`#474`](https://github.com/zumerlab/snapdom/pull/474) - fix: freeze the image the browser actually shows (srcset descriptors, type filters, content:url) [`6ac87ef`](https://github.com/zumerlab/snapdom/commit/6ac87efadbcc9ac9e8ded5af7f1f8d4b58a6c32d) - fix: parse final font-face declarations without semicolons [`#475`](https://github.com/zumerlab/snapdom/pull/475) - fix: stop concurrent captures from sharing session maps and counter state [`d1379a6`](https://github.com/zumerlab/snapdom/commit/d1379a6cca502ccb75001e83982585ec18394f4b) - fix: realm-safe element guards ā pseudos and per-node handlers now survive iframe-content captures [`5e9d8e1`](https://github.com/zumerlab/snapdom/commit/5e9d8e1dfbe0804d0b2c0eac98be0e859a992d33) - fix: collect svg defs referenced from the root svg's own attributes [`441e3cf`](https://github.com/zumerlab/snapdom/commit/441e3cf62d431dfbebf482a683716b3fe63f79bf) - fix: prefetch mask and border-image URLs in preCache, drop the dead warm call [`423acd5`](https://github.com/zumerlab/snapdom/commit/423acd52c447377da095091344df01d1ea472ed4) - fix: first-letter materialization no longer false-positives on margined elements [`52a6fff`](https://github.com/zumerlab/snapdom/commit/52a6fff1eaa16e8411529894559a15a9df3c59c8) ## New Contributors * @RexSkz made their first contribution in https://github.com/zumerlab/snapdom/pull/475 * @mcdyzg made their first contribution in https://github.com/zumerlab/snapdom/pull/476 **Full Changelog**: https://github.com/zumerlab/snapdom/compare/v2.22.0...v2.23.0