tag:github.com,2008:https://github.com/getsentry/SnapshotPreviews/releases Tags from SnapshotPreviews 2026-06-08T17:44:32Z tag:github.com,2008:Repository/663230812/v0.16.0 2026-06-08T18:57:29Z v0.16.0 <p>test(snapshots): Remove excluded preview override from single-module …</p> <p>…test</p> <p>Drop the excludedSnapshotPreviews() override in the single-module allow <br />test so it relies solely on the snapshotPreviewModules() allow list.</p> <p>Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;</p> cameroncooke tag:github.com,2008:Repository/663230812/v0.15.0 2026-05-29T21:51:43Z v0.15.0 <p>feat(snapshot): Add metadata modifiers (<a class="issue-link js-issue-link" href="https://github.com/getsentry/SnapshotPreviews/pull/264">#264</a>)</p> <p>Add snapshot tags and additional context modifiers, carrying their metadata <br />through the existing preference, rendering, and sidecar export pipeline.</p> <p>Rename the public diff threshold modifier to snapshotDiffThreshold while <br />keeping the old spelling as a deprecated alias for source compatibility.</p> <p>Co-authored-by: OpenAI Codex &lt;codex@openai.com&gt;</p> cameroncooke tag:github.com,2008:Repository/663230812/v0.14.1 2026-05-14T08:35:19Z v0.14.1 <p>Align the docs with Sentry Snapshots and replace references to Emerge…</p> <p>… Tools where applicable (EME-1115) (<a class="issue-link js-issue-link" href="https://github.com/getsentry/SnapshotPreviews/pull/261">#261</a>)</p> <p>* docs(readme): Lead with snapshot generation and Sentry CI export</p> <p>Restructure the README so visitors arriving from Sentry docs land on <br />snapshot generation and the TEST_RUNNER_SNAPSHOTS_EXPORT_DIR export <br />flow rather than the preview gallery. Move PreviewGallery, accessibility <br />audits, and PreviewLayoutTest into a later "Additional Features" <br />section, clarify that the exporter writes PNGs + JSON sidecars (no <br />Xcode code-coverage data), trim the env-var tip to the variable Sentry <br />users actually need, and pare back non-essential Emerge branding.</p> <p>* refactor: Rename .emerge* SwiftUI modifiers to .snapshot* and refresh Sentry docs</p> <p>User-facing rebrand pass for the Sentry Snapshots integration. The <br />SnapshotPreviewsCore public API is left untouched because the legacy <br />Emerge SaaS still binds against it.</p> <p>Renames (breaking API change for adopters): <br />- .emergeAccessibility -&gt; .snapshotAccessibility <br />- .emergeRenderingMode -&gt; .snapshotRenderingMode <br />- .emergeSnapshotPrecision -&gt; .snapshotPrecision <br />- .emergeAppStoreSnapshot -&gt; .snapshotAppStore <br />- .emergeExpansion -&gt; .snapshotExpansion</p> <p>Other changes: <br />- Add RUNNING_FOR_SNAPSHOTS env var as the canonical signal that the <br /> app is running inside a snapshot test. EMERGE_IS_RUNNING_FOR_SNAPSHOTS <br /> is still set/read as a deprecated alias. <br />- Rewrite the README "Uploading Snapshots to Sentry" section around the <br /> documented sentry-cli build snapshots flow, with a complete GitHub <br /> Actions example. <br />- Fix stale github.com/EmergeTools/SnapshotPreviews-iOS references in <br /> the UnitTestMigration example. <br />- Clean up "emerge" prose in SnapshotPreferences doc comments and the <br /> RenderingMode.swift file header.</p> <p>Kept (cross-module ABI with SnapshotPreviewsCore): <br />- EmergeRenderingMode enum (public parameter type) <br />- <a class="user-mention notranslate" href="https://github.com/objc">@objc</a>(EmergeModifierState) / <a class="user-mention notranslate" href="https://github.com/objc">@objc</a>(EmergeModifierFinder) classes <br /> (looked up by NSClassFromString from SnapshotPreviewsCore)</p> <p>* fix(snapshot-preferences): Remove snapshotPrecision modifier</p> <p>Remove the public snapshotPrecision modifier so diffThreshold is the documented way to customize Sentry Snapshot comparison tolerance.</p> <p>Update the README sidecar guidance to describe diffThreshold directly and keep the snapshot modifiers table focused on rendering behavior.</p> <p>Co-Authored-By: OpenAI Codex &lt;codex@openai.com&gt;</p> <p>* docs: Explain local snapshot output</p> <p>Document how to write rendered snapshots to disk locally without referring to CI export before the Sentry export flow is introduced.\n\nCo-Authored-By: OpenAI Codex &lt;codex@openai.com&gt;</p> <p>* docs: Add Sentry Snapshots UI image</p> <p>Show the visual diff UI in the Sentry upload section so readers can see the snapshot review experience.\n\nCo-Authored-By: OpenAI Codex &lt;codex@openai.com&gt;</p> <p>* docs: Clarify sidecar metadata fields</p> <p>Document that display_name and group are generated, not overrideable, and note that future metadata fields should use explicit SnapshotPreferences modifiers.\n\nCo-Authored-By: OpenAI Codex &lt;codex@openai.com&gt;</p> <p>* docs: Mention Fastlane snapshot upload</p> <p>Update the Sentry upload section to describe both sentry-cli and Fastlane and link to the Sentry iOS Snapshots CI docs.\n\nCo-Authored-By: OpenAI Codex &lt;codex@openai.com&gt;</p> <p>* docs: Add snapshot best practices</p> <p>Add iOS-specific guidance for deterministic previews to avoid flaky snapshot output from network, timing, animation, locale, and clock dependencies.\n\nCo-Authored-By: OpenAI Codex &lt;codex@openai.com&gt;</p> <p>* docs: Fix README heading levels</p> <p>Use second-level headings below the README top-level sections so the document hierarchy does not skip from H1 to H3.\n\nCo-Authored-By: OpenAI Codex &lt;codex@openai.com&gt;</p> <p>* docs: Clarify variant snapshot output</p> <p>Explain that SnapshotTest renders every emitted preview variant and writes each named variant as its own snapshot image and sidecar.\n\nCo-Authored-By: OpenAI Codex &lt;codex@openai.com&gt;</p> <p>---------</p> <p>Co-authored-by: Claude &lt;noreply@anthropic.com&gt; <br />Co-authored-by: OpenAI Codex &lt;codex@openai.com&gt;</p> cameroncooke tag:github.com,2008:Repository/663230812/v0.14.0 2026-04-29T09:12:41Z v0.14.0 <p>feat(snapshotting): Add module-based preview filtering (<a class="issue-link js-issue-link" href="https://github.com/getsentry/SnapshotPreviews/pull/260">#260</a>)</p> <p>Allow consumers to include or exclude previews by module name via new <br />`snapshotPreviewModules()` and `excludedSnapshotPreviewModules()` overrides <br />on the `PreviewFilters` protocol, mirrored by `SNAPSHOT_PREVIEW_MODULES` <br />and `EXCLUDED_SNAPSHOT_PREVIEW_MODULES` launch environment variables.</p> <p>Module names are matched exactly against the prefix of each preview type <br />name (e.g. "MyModule" in "MyModule.MyView_Previews"), giving multi-module <br />projects a coarse-grained filter without enumerating individual previews.</p> <p>Add a MultiModuleDemo example covering the new filters and unit tests <br />for the module matching helpers.</p> cameroncooke tag:github.com,2008:Repository/663230812/v0.13.0 2026-04-24T09:27:47Z v0.13.0 <p>ref(snapshotting): Restructure CI export sidecar schema (<a class="issue-link js-issue-link" href="https://github.com/getsentry/SnapshotPreviews/pull/259">#259</a>)</p> <p>* ref(snapshotting): Restructure CI export sidecar schema</p> <p>Restructures the JSON sidecar emitted via SNAPSHOTS_EXPORT_DIR from a flat <br />blob into a nested schema with explicit top-level fields for dashboard <br />filtering and a nested `context` bag for forensic/diagnostic data.</p> <p>Refs EME-1073</p> <p>* ref(snapshotting): Move color_mode under context.preferred_color_scheme</p> <p>Renames and relocates the sidecar's color scheme field. The value reflects <br />the author-declared `.preferredColorScheme(_:)` modifier, not a rendered <br />output, so it belongs under `context` (forensic data) with a name that <br />mirrors the SwiftUI API.</p> <p>Refs EME-1073</p> <p>* ref(snapshotting): Drop tags, move orientation and color scheme under preview</p> <p>Removes the top-level `tags` object. Its `device` field was a duplicate of <br />`context.simulator.device_name`, and its `orientation` field is a per-preview <br />author declaration (from `.previewInterfaceOrientation(_:)` or `#Preview` <br />traits), not a simulator property. Both now live where their provenance <br />points:</p> <p>- `context.preview.orientation` joins the other per-preview author <br /> declarations (`display_name`, `preferred_color_scheme`). <br />- `device_name` remains under `context.simulator` as the single source of <br /> truth.</p> <p>Refs EME-1073</p> cameroncooke tag:github.com,2008:Repository/663230812/v0.12.0 2026-04-14T07:36:32Z v0.12.0 <p>feat(snapshots): Add CI image export via SNAPSHOTS_EXPORT_DIR env var…</p> <p>… (EME-931) (<a class="issue-link js-issue-link" href="https://github.com/getsentry/SnapshotPreviews/pull/252">#252</a>)</p> github-actions tag:github.com,2008:Repository/663230812/v0.11.0 2025-11-18T19:21:29Z v0.11.0 noahsmartin tag:github.com,2008:Repository/663230812/v0.10.24 2025-08-14T22:28:55Z v0.10.24 noahsmartin tag:github.com,2008:Repository/663230812/v0.10.23 2025-08-11T17:59:15Z v0.10.23 <p>Add alternative rendering modes on macOS (<a class="issue-link js-issue-link" href="https://github.com/getsentry/SnapshotPreviews/pull/241">#241</a>)</p> <p>* Use CGWindowListCreateImage to generate snapshot.</p> <p>* Add in an exponential backoff when we try to take a screenshot with CGWindowListCreateImage.</p> <p>* Add CAlayer-based rendering, and update EmergeRenderingMode to support macOS.</p> <p>* Capture view controller weakly.</p> noahsmartin tag:github.com,2008:Repository/663230812/v0.10.22 2025-03-28T14:26:02Z v0.10.22 github-actions