v3.3.0
- feat: add editable vector export and enhance PDF capabilities
019603a - feat(docs): refresh navigation and live demos
bbc59da - feat(plugins): add open-source vector export
299c561 - feat: improve plugin export contracts
b828762 - feat: replace pdf-image with full PDF export
8acda94
- fix: one [SnapDOM] prefix and plain-language console messages
bbde42f - fix: center checkbox and radio replacements in a stretched box
#516 - fix: halve Firefox grid rasters before the dpr 1 downscale
#516 - fix: rasterize Firefox exports below the layout grid at the grid (#516)
817390e - fix: keep one-line boxes from wrapping in the capture (#516)
575537e - fix: capture text at its inflated size in Firefox for Android (#516)
5213172 - fix: size form control replacement SVGs with CSS under layout zoom (#516)
2d6d41d - fix: resolve var() in SVG gradient stops (#515)
b13ed28 - fix: emit the placeholder rule only when a placeholder was cloned
eb26e15 - fix: keep placeholder color CSS off void inputs (#512)
#514 - fix(capture): drop xmlns attributes set through setAttribute (#511)
#513 - fix: read transform-origin on transformed pseudo-elements (#509)
39ff290
- docs: update plugin capabilities
9c0b8a3 - docs: home page from the design handoff
e88be16 - docs: Labs overview, Showcase, Made with and Plugins join the 3-pane template
59046e9 - docs: move Docs, How-to, Guides, Compare, Blog and Labs pages to the 3-pane template
f0dbc79 - docs: 3-pane Capabilities and Ecosystem pages from the design handoff
d8b6688 - test: stop the network gate from skipping demos on a fast link, rerun what it skips
96fc884 - test: serve the d15 image from a local second origin
083cbd9 - test: restore imageSmoothingQuality only where the engine has it
#516
- @jamalkamaladdin made their first contribution in https://github.com/zumerlab/snapdom/pull/513
- @00200200 made their first contribution in https://github.com/zumerlab/snapdom/pull/514
Full Changelog: https://github.com/zumerlab/snapdom/compare/v3.2.0...v3.3.0
v3.2.0
28 September 2026
- feat: export PNG files beyond the canvas limit
6e6b5eb - fix: lay out captures on the device-pixel grid in Firefox too
#508 - fix: lay out captures on the live device-pixel grid in Chromium
#508 - fix: keep stacked rows aligned on fractional-DPR screens (#508)
1327c55 - fix: adjust scrollbar gutter calculations for fractional border widths (#508)
67acb0c - fix: keep the settled decode frame when retrying in Firefox
ab48bce - update crop option
19a7e55 - chore: shorten console messages
5bc3511 - chore: color the benchmark verdicts in the terminal
8d93e24 - test: compare encoded PNGs with the canvas readback
7a19be9
Full Changelog: https://github.com/zumerlab/snapdom/compare/v3.1.1...v3.2.0
v3.1.1
24 September 2026
- fix: paint embedded fonts on first capture (#506)
f207b37 - fix: isolate custom element style defaults
0e7cbf0 - fix: preserve document overflow in captures. Ref #505
a736115 - perf: skip display:none subtrees when cloning. Ref #507
f4af040 - fix: complete sitemap and add canonical URLs for Pro pages
5b02330
Full Changelog: https://github.com/zumerlab/snapdom/compare/v3.1.0...v3.1.1
v3.0.0
14 September 2026
The first stable release of SnapDOM v3 brings automatic capture reuse, incremental recapture, automatic font embedding, and new capture APIs. Core and official plugins now share the v3 release line.
If you're upgrading from v2, read the migration guide. The v2 source and v2 documentation remain available.
- Automatically reuse eligible unchanged captures and rebuild affected subtrees for safe local mutations.
- Isolate concurrent captures with per-capture sessions.
- Automatically embed the web fonts used by the captured content.
- Capture HTML strings with
fromString(). - Prepare learned captures on hover or focus with
preCapture().
The SVG engine remains the default. The native html-in-canvas engine remains experimental and requires a custom build.
widthandheightnow take precedence overscale.- Font embedding is enabled automatically.
preCachehas been removed, and obsolete capture options are no longer supported.- Core redaction is limited to password fields.
afterExporthooks observe results without chaining their return values.
See the migration guide for the complete upgrade instructions.
- Correct alignment in pseudo-element boxes, scroll containers, and images. #498
- Fix transformed-element reconciliation and offscreen captures. 9b28ab4, 460b75e
- Prevent fractional-width rounding from introducing unwanted line wrapping. cffd222
- Preserve explicit wrapper heights and author-specified widths on blockified spans. df94e3e, f3c75d3
- Match browser behavior for
visibilityandcontent-visibility. 21251f7 - Measure text truncation without replacing live text nodes. 418d18f
- Neutralize CSS
zoomon the capture root. 14b2047 - Preserve inherited fill colors in SVG
<use>icons. 1b6cd96
- Preserve font styles for icon glyphs, including italic icons. #496
- Skip non-generated pseudo-elements and carry over animation-suppression fixes from v2. #497
- Retain custom
@font-facerules when the requested weight or stretch is far from the declared value. #478 - Keep other font families in a stylesheet when one family is identified as an icon font. a154f18
- Emit only the
@font-facedescriptors declared in the source. 8d0345a
- Bound canvas frame waits, warn when a canvas is empty, and preserve the frame captured before
toDataURL()for WebGL canvases. de521b8, 1c44d1d - Clone slotted light DOM only once and exclude light DOM that has not been assigned to a slot. f4b1859, b75e88b
- Support DOM type checks for elements from other windows and iframes. 84359e5
- Fix global-variable leakage in the legacy bundle. 80fe19d
- Correct iframe guidance that suggested enabling an option already enabled. 98de375
- Align official plugins with v3 for HTML, context, element maps, PDF, image effects, and GIF/video recording.
- Expose capture geometry, exact export options, and canvas cropping to plugins. 7abb29a
- Accept clone roots from other windows and iframes in the color-tint plugin. ed8c31a
- Align package references, version tags, and the plugin showcase with the shipped releases. fb616b6, 533e7e7
- Document the plugin hook contract and correct the plugins subpath import. 9ed3632, c439ca1
- Correct server-side capture guidance and add guides covering DOM capture boundaries and integration patterns. 2fa74fa, 0118a27
- Rewrite
llms.txtandllms-full.txtto match the source implementation. de95504 - Improve documentation layouts, technical guides, and search-engine crawl signals. e134a69, 0f876d6
- Expose internal visual demos for testing, expand regression coverage, and split the visual suite into six shards. 5766151, 56b1e01
- Improve network-dependent test scheduling and wait for iframe stylesheets, imported fonts, and image decoding before capture. 8ae2371, 1df2291, b5161af
- Make regression tests independent of the capture engine and pin
devicePixelRatioin DPR-dependent tests. 8fe0a08, fb7311a - Stop pushing changelog changes automatically from
npm run build. d341737
Full Changelog: https://github.com/zumerlab/snapdom/compare/v2.23.1...v3.0.0
v2.24.18
- fix(pseudo): preserve font style for icon glyphs by @ninecc in https://github.com/zumerlab/snapdom/pull/496
- fix(pseudo): skip non-generated pseudo-elements by @ninecc in https://github.com/zumerlab/snapdom/pull/497
- @ninecc made their first contribution in https://github.com/zumerlab/snapdom/pull/496
Full Changelog: https://github.com/zumerlab/snapdom/compare/v2.24.17...v2.24.18