Changelog

New features, fixes, and workflow updates for the visual regression testing product and the BearDen-inspired local tokens behind this site.

CLI 0.37.0: API Access for Coding Agents

The CLI can now show the supported visual review API calls and how to use them. Agents can inspect builds, screenshots, comparisons, and images, then record review decisions with a signed-in user account. See the API schema.

What’s new

  • ✓ Run <code>vizzly api schema</code> to list supported requests
  • ✓ See request fields, response details, and examples
  • ✓ Make API requests and save image responses to files
  • ✓ Record review decisions with a signed-in user token

Swift SDK 0.2.0: CLI Plugin for SwiftUI Previews

The Vizzly CLI can run SwiftUI #Preview declarations in an iOS Simulator. Review the screenshots through local TDD or a Vizzly cloud build.

What’s new

  • ✓ Capture named previews from a booted iOS Simulator
  • ✓ Filter by preview name and capture portrait or landscape layouts
  • ✓ Send screenshots to local TDD or a Vizzly cloud build
  • ✓ Save local screenshots with a JSON manifest

Better Fullscreen Review on Mobile

Fullscreen review works better on smaller screens. Image zoom behaves more predictably, and the review controls fit mobile layouts.

What’s new

  • ✓ More reliable image zoom and fit-to-screen controls
  • ✓ Review drawers and controls adapt to smaller screens
  • ✓ Build pages show screenshot previews and actions more clearly on mobile

CLI 0.36.0: Local Reports and Agent Workflows

CLI 0.36.0 saves a local report after your screenshot tests and gives agents a command to inspect the results. It also updates comparison reviews, keeps custom metadata separate from screenshot options, and reports upload failures while other captures continue. See the agent workflow.

What’s new

  • ✓ Local test runs save an HTML report and a command to inspect the results
  • ✓ Agents can read results a page at a time and request more diff details
  • ✓ Install or refresh Vizzly agent guidance in your repo from the CLI
  • ✓ Comparison approvals and rejections use the current visual review system
  • ✓ Custom screenshot metadata stays separate from capture and comparison options
  • ✓ Upload failures are reported while other screenshot captures continue

Simpler Visual Review

Vizzly now has one review flow for changed and new screenshots. Identical screenshots need no action, and a build is approved when every changed or new comparison is approved. Read the current review docs.

What’s new

  • ✓ One review state for builds and comparisons
  • ✓ Changed and new screenshots are the only items that need a decision
  • ✓ Build filters stay in the URL and carry into full-screen review

Storage Reclaim for Team Plans

Team and Open Source admins can free storage by selecting older builds and removing their screenshot and comparison files. Build details stay available, and baselines are protected.

What’s new

  • ✓ See how much storage selected builds will free
  • ✓ Keep build details and baseline images
  • ✓ Available on Team and Open Source plans when storage is near the limit

Cleaner Diffs When Pages Change Height

Full-page screenshots can get noisy when a banner appears or disappears near the top. Vizzly now aligns one clear inserted or removed block before comparing the rest, so real changes below it stay easier to review.

What’s new

  • ✓ Unambiguous inserted or removed blocks are aligned automatically
  • ✓ Unrelated visual changes below the block remain visible
  • ✓ Works automatically for screenshot comparisons

GitHub PR Checks on the Free Plan

GitHub integration is now available on the Free plan. Connect a repository and get Vizzly visual review results back in pull requests without moving to a paid plan just to close the loop.

What’s new

  • ✓ Connect GitHub repositories from Free organizations
  • ✓ Publish Vizzly visual review results to pull requests
  • ✓ Keep using the same project and repository privacy controls

Faster Screenshot Uploads for Repeated Images

When the same screenshot shows up across builds, Vizzly can now identify it by its SHA before asking CI to upload the image again. Reused images skip the extra transfer and go straight into the build when their stored data is available.

What’s new

  • ✓ SDKs can resolve screenshots by SHA before uploading image bytes
  • ✓ Existing project-scoped images are reused automatically
  • ✓ New screenshots still upload normally when no reusable copy exists

Smart Ignore Regions

This feature is no longer part of Vizzly.

Vizzly can now learn repeated dynamic areas from real review history and ask you to confirm them. Future builds can reuse that signal without hiding the rest of the screenshot.

What’s new

  • ✓ Repeated dynamic regions show up as review candidates
  • ✓ Accept or reject a candidate from fullscreen review
  • ✓ Confirmed regions can help future builds approve safely

Review UI Refresh

The review experience got a visual refresh. Fullscreen review, queues, drawers, dashboards, setup, and settings now feel more consistent across the app.

What’s new

  • ✓ Cleaner fullscreen review chrome and queues
  • ✓ More consistent controls and forms
  • ✓ Refined spacing and dark palette

A Better Fullscreen Review Flow

Fullscreen review now keeps navigation, diffs, comments, and preview context closer together.

What’s new

  • ✓ Clearer navigation while reviewing a build
  • ✓ Comments and screenshot details stay close by
  • ✓ Review state syncs to the URL

SDK Visual Context Bundles

SDKs can now carry reviewed visual context, not just upload screenshots.

What’s new

  • ✓ Reviewed screenshot history travels with the context
  • ✓ Baseline and comparison metadata stay together
  • ✓ Agents get structured evidence instead of raw screenshots alone

Agent-Friendly Test Output

The test runner can now produce compact output that is easier for coding agents to read.

What’s new

  • ✓ Compact failure summaries for agent workflows
  • ✓ Focused test runs are easier to share back into review
  • ✓ Human-readable output still works for normal development

Large Build Review Gets Faster

Large builds now load in smaller chunks instead of pulling the whole review at once.

What’s new

  • ✓ Build detail opens faster on large projects
  • ✓ Screenshot filtering works without loading everything
  • ✓ Load More keeps long queues manageable

Preview Hosting for In-Context Review

Visual diffs are great, but sometimes you need to see the actual app. Now you can upload your static build—Storybook, Next.js export, Vite output, whatever—and Vizzly hosts it alongside your visual regression results. Run vizzly preview ./dist in CI or locally, and reviewers get a side-by-side view: the screenshot diffs on one side, the live app on the other. Content-addressed storage means incremental uploads are fast (typically under 5 seconds), and deduplication keeps storage lean.

What’s new

  • ✓ Upload any static build with vizzly preview ./dist
  • ✓ Hosted previews linked directly to builds for side-by-side review
  • ✓ Content-addressed storage with automatic deduplication
  • ✓ Current preview runtime defaults: 7-day retention and 100MB max upload
  • ✓ Plan-aware preview settings tracked separately from normal build retention
  • ✓ Signed URLs for private projects, direct access for public
  • ✓ Works from CI (GitHub Actions, CircleCI, etc.) or local dev

Storybook & Static-Site SDKs Now Use Playwright

We migrated both the Storybook and Static-Site SDKs from Puppeteer to Playwright – and the results are dramatic. Screenshots that were timing out after 60+ seconds in CI now complete in under a second. For Storybook specifically, we added client-side navigation between stories instead of full page reloads, which gives you a 47x speedup (94 seconds down to 2 seconds for 10 screenshots). We also audited and fixed Chrome browser flags that were causing hangs in headless mode. If your Storybook or static site tests have been flaky in CI, this update should fix it.

What’s new

  • ✓ Playwright-based browser contexts for proper isolation in parallel workers
  • ✓ Client-side navigation for Storybook stories (first story loads page, subsequent stories navigate via Storybook API)
  • ✓ 47x faster Storybook captures: 94s → 2s for 10 screenshots
  • ✓ Fixed deprecated Chrome flags causing hangs (--disable-gpu + --disable-software-rasterizer)
  • ✓ Modern browser flags for screenshot consistency (--force-color-profile=srgb, --hide-scrollbars)
  • ✓ Tasks sorted by viewport to minimize resize operations

Regions Now Work in Local TDD

This feature is no longer part of Vizzly.

Your cloud-defined hotspot regions now work in local TDD mode. When you download baselines from the cloud, your confirmed regions come bundled with them and are saved to .vizzly/regions.json. During local comparisons, if 80% or more of the diff falls within confirmed regions, the comparison auto-passes as "region-filtered." Press G in the fullscreen viewer to see green region overlays on your screenshots. Same behavior as the cloud product, same 80% threshold – just running locally.

What’s new

  • ✓ Regions bundled with baseline downloads – no separate sync step needed
  • ✓ Auto-approve comparisons when 80%+ of diffs fall within confirmed regions
  • ✓ 2D bounding box intersection calculation for accurate region coverage
  • ✓ Press G in fullscreen viewer to toggle region overlay visualization
  • ✓ Regions stored in .vizzly/regions.json alongside baselines

Full-Screen Review Queue Filters

Filters now persist when you enter fullscreen review mode. Apply filters in the table view – viewport, browser, status, custom metadata – and they carry over to the review queue. The new filter panel has an industrial control panel design with semantic status chips for quick filtering. When you approve all items in a filtered view, it auto-switches to the "All" tab so you're not staring at an empty queue.

What’s new

  • ✓ Filter state syncs between table view and fullscreen review queue
  • ✓ Custom metadata filtering (component, feature, testSuite, state, etc.)
  • ✓ Portal-based popover that escapes parent overflow constraints
  • ✓ Auto-switch to "All" tab when review queue empties
  • ✓ All filters sync to URL for shareable filtered views

CI Resilience & Quality of Life

A batch of improvements to make Vizzly play nicer in CI environments. The vizzly finalize command now exits gracefully when no build exists (warns instead of failing your pipeline). You can set build names via the VIZZLY_BUILD_NAME environment variable instead of CLI flags. And if the Vizzly API returns a 5xx error, your CI won't fail – we'll warn and continue. For enterprises, users signing up with email/password now auto-join their org when their email domain matches a configured SSO domain.

What’s new

  • ✓ Resilient finalize command: warns + exits 0 when no build exists (use --strict for old behavior)
  • ✓ VIZZLY_BUILD_NAME environment variable for cleaner CI config
  • ✓ Graceful 5xx error handling – CI continues with a warning instead of failing
  • ✓ SSO domain auto-join for email/password signups (previously only worked with Google OAuth)
  • ✓ Helpful debugging hints in verbose mode when builds are missing

Email Notifications for Mentions & Reviews

Mention and reply emails remain. Review assignment and completion emails were retired.

Stay in the loop without living in the dashboard. Vizzly now sends email notifications when someone @mentions you in a comment, replies to your thread, assigns you to review a build, or when your build review is completed. Each notification type has its own toggle in your profile settings, and every email includes a one-click unsubscribe link. All notifications are on by default – we'll let you know when something needs your attention.

What’s new

  • ✓ @mention notifications when someone tags you in a comment
  • ✓ Reply notifications for threads you're participating in
  • ✓ Build review assignment emails when you're added as a reviewer
  • ✓ Review completion emails when someone finishes reviewing your build
  • ✓ Per-type toggles in profile settings (Settings → Notifications)
  • ✓ One-click unsubscribe via token link in email footer

Auto-Approve Baseline Branch Builds

This feature is no longer part of Vizzly.

If you trust your main branch, tell Vizzly. Enable auto-approve for your baseline branch and builds on main (or whatever you've configured) will approve automatically. No more clicking through screenshots you already reviewed on the PR. You can set an optional threshold – only auto-approve if the max diff is below X% – and manual approvals on auto-approved builds still train hot spot detection.

What’s new

  • ✓ New "Auto-approve baseline branch" toggle in project settings
  • ✓ Optional threshold: only auto-approve if max diff is below your limit
  • ✓ Clear audit trail with "auto_baseline_branch" approval source
  • ✓ Manual overrides still train hot spot learning
  • ✓ Works with any configured baseline branch (main, master, develop, etc.)

Builds List Redesign with Sortable Columns

The table and URL filters remain. Approver and automatic approval filters were retired.

The builds list got a proper table layout with sortable columns. Click the column headers to sort by date, status, branch, or approver. We added an expandable filters panel for power users – filter by environment, PR status, approver (with avatars!), or branch. Your filter selections sync to the URL, so you can bookmark or share filtered views.

What’s new

  • ✓ Sortable table columns for date, status, branch, and approver
  • ✓ Expandable advanced filters panel
  • ✓ Filter by environment, PR status, approver, or branch
  • ✓ Approver info with name and avatar in the table
  • ✓ Auto vs manual approval filtering
  • ✓ Filter state syncs to URL parameters

Screenshot Property Filters

Finding the right screenshot in a large build just got easier. The screenshot table toolbar now has filters for viewport, browser, comments, and your custom properties. System filters (viewport, browser, comments) sit on the top row, custom properties below. If you've got a ton of custom properties, the first four show inline and the rest collapse into a dropdown.

What’s new

  • ✓ Filter by viewport size to focus on specific breakpoints
  • ✓ Filter by browser to isolate browser-specific issues
  • ✓ Filter by comments to find screenshots with discussions
  • ✓ Custom property filters for your metadata (feature, page, theme, etc.)
  • ✓ Overflow dropdown for teams with many custom properties
  • ✓ Filter state syncs with full-screen review queue

Grouped PR Comments for Monorepos

Got multiple Vizzly projects in one repo? Your PRs were getting noisy with separate comments for each project. Now Vizzly posts a single grouped comment per repository, with each project in a collapsible section. Comments update incrementally as each project's build completes – "Processing..." while running, full results when done. Much cleaner for monorepos.

What’s new

  • ✓ Single grouped comment per repository instead of per-project spam
  • ✓ Collapsible sections for each project with status summary
  • ✓ Incremental updates as builds complete
  • ✓ "Processing..." indicator for in-progress builds
  • ✓ Old grouped comments minimized when you push new commits
  • ✓ Legacy per-project comments cleaned up automatically

Faster Keyboard-Driven Reviews

Power users who blaze through reviews with keyboard shortcuts were hitting some rough edges – auto-select jumping around, seeing the same screenshot twice, laggy feedback. We rewrote the full-screen review queue with optimistic updates. Now when you press A to approve, the UI updates instantly and auto-advances to the next screenshot. The server catches up in the background.

What’s new

  • ✓ Optimistic updates for instant approval feedback
  • ✓ Stable keyboard handlers that don't re-subscribe on every change
  • ✓ Local pending state prevents double-clicks during rapid approval
  • ✓ Memoized queue items reduce unnecessary re-renders
  • ✓ Auto-advance works smoothly without jumping around
  • ✓ Error rollback if the network fails mid-approval

Faster Comparisons Across the Stack

We went on a performance tear. Honeydiff's SSIM calculation is now 5x faster thanks to integral images (summed area tables) and Rayon parallel processing – Full HD comparisons dropped from 239ms to 51ms. When screenshots are identical, we skip SSIM entirely, saving ~250M operations per comparison. On the CLI side, SDKs now pass an explicit type field so the server skips O(n) base64 detection, and we fixed a catastrophic regex backtracking bug that was causing stack overflows on large screenshots. The result: noticeably faster test runs, especially for content-heavy pages.

What’s new

  • ✓ SSIM 5x speedup using integral images for O(1) window statistics instead of O(121)
  • ✓ Rayon parallel processing spreads SSIM computation across all CPU cores
  • ✓ Identical images skip SSIM entirely – returns 1.0 immediately
  • ✓ CLI explicit type field eliminates O(n) base64 detection on server
  • ✓ Fixed catastrophic regex backtracking in base64 validation
  • ✓ Full HD (1920×1080) comparisons: 239ms → 51ms
  • ✓ All optimizations are mathematically identical – zero accuracy loss

Ember SDK for Visual Testing

Visual regression testing is now available for Ember.js apps. The Ember SDK uses Testem's custom launcher system to run browsers through Playwright, capturing screenshots directly from your acceptance tests. Your tests run exactly like before – QUnit assertions, Ember Test Helpers, the whole stack – you just gain the ability to add vizzlyScreenshot() calls. Check out the Ember docs →

What’s new

  • ✓ Uses Testem's custom launcher system – works with your existing test setup
  • ✓ Playwright-powered browsers for Chrome, Firefox, and Safari (WebKit)
  • ✓ vizzlyScreenshot() waits for Ember to settle before capturing
  • ✓ Handles Ember's test container quirks (50% scaling, QUnit UI chrome)
  • ✓ Properties for organizing screenshots by feature, page, scenario
  • ✓ Element-level screenshots with the selector option
  • ✓ Mirage compatibility with simple passthrough config
  • ✓ Works with both classic Ember builds and Vite/Embroider

Hot Spot Regions for Auto-Approval

This feature is no longer part of Vizzly.

Dynamic content got you down? Vizzly now learns which areas of your screenshots change frequently – timestamps, avatars, ad banners – and turns them into review candidates. The system uses honeydiff's cluster analysis to detect candidates, then you confirm which ones are legitimate hot spots. Once confirmed, future comparisons can auto-approve when all meaningful changes stay inside those trusted regions, with a clear audit trail showing exactly why.

What’s new

  • ✓ Automatic hot spot detection from honeydiff cluster analysis
  • ✓ Confirmation workflow: candidate → confirmed/rejected
  • ✓ 2D bounding box matching for accurate region detection
  • ✓ Progressive learning from your approval patterns
  • ✓ Clear audit trail showing approval source (manual, cascade, auto_hot_spot, auto_identical)
  • ✓ Unapprove/unreject flows for mistake correction

Real-time TDD Dashboard Updates

No more waiting for the dashboard to refresh. We replaced HTTP polling with Server-Sent Events, so the TDD dashboard updates the instant your tests capture a screenshot. The connection auto-reconnects if it drops, and gracefully falls back to polling if SSE isn't available. Under the hood, this eliminated ~90% of HTTP traffic between your tests and the dashboard.

What’s new

  • ✓ Instant updates when screenshots are captured (100ms debounce)
  • ✓ Auto-reconnect with exponential backoff if connection drops
  • ✓ Graceful fallback to polling if SSE isn't supported
  • ✓ ~90% reduction in HTTP traffic during test runs
  • ✓ Native EventSource (browser) and fs.watch (Node) – zero dependencies

TDD Dashboard Design Refresh

The TDD dashboard was aligned with the shared visual review language used across the site. Same comparison modes (overlay, toggle, onion-skin), but running locally. We also redesigned the screenshot list with smart variant grouping, added browser/device icons to filters, and gave the settings page a proper two-column layout.

What’s new

  • ✓ Shared visual review language and local token set
  • ✓ Redesigned screenshot list with variant grouping for easier navigation
  • ✓ Browser and device icons in filter dropdowns
  • ✓ Two-column settings page layout
  • ✓ ActionBanner for bulk accept-all functionality
  • ✓ 23 local design-system files deleted (code reuse for the win)

Delete Unwanted Screenshots

Captured a screenshot you didn't mean to? Now you can delete it right from the TDD dashboard. Hit the Delete button and it removes the comparison from the report and cleans up all associated files (baseline, current, diff). Previously, new screenshots had no action buttons – now you can Accept or Delete them.

What’s new

  • ✓ Delete button for unwanted screenshots in TDD mode
  • ✓ Removes comparison from report and deletes all files
  • ✓ Auto-navigates back to list after deletion
  • ✓ Works for new screenshots that don't have baselines yet

Branded CLI Output

The CLI got a facelift. Run vizzly --help and you'll see our grizzly bear mascot, commands grouped by category, quick start examples, and dynamic context showing your TDD server status, project, and baseline count. We also built a complete TUI toolkit with helpers for lists, key-value tables, progress bars, and status badges that match the same visual review language as the rest of the product.

What’s new

  • ✓ Bear mascot ʕ□ᴥ□ʔ with square eyes matching the logo
  • ✓ Commands grouped by category (Core, Setup, Account, Projects, Plugins)
  • ✓ Quick start examples section with copy-paste commands
  • ✓ Dynamic context: TDD server status, project name, baseline count
  • ✓ TUI toolkit: list(), keyValue(), progressBar(), badge(), and more
  • ✓ Better contrast with white commands, neutral descriptions, and cyan options

Smart Variant Tree Hierarchy

When you capture the same screenshot across multiple viewports or devices, the screenshot table now groups them into a collapsible tree. Click the parent row to expand and see all variants. Much easier to navigate when you've got a matrix of viewports × browsers × themes.

What’s new

  • ✓ Automatic tree hierarchy for screenshots with multiple variants
  • ✓ Collapsible parent rows with expand/collapse controls
  • ✓ Variant count badge on parent rows
  • ✓ Works across viewport, browser, device, and custom properties

Mobile-First Fullscreen Review

Review screenshots on your phone or tablet with a proper mobile-first fullscreen UI. Collapsible menus, bottom sheet comments, touch-friendly controls, and optimized layouts for every screen size. We also improved the desktop fullscreen experience with better navigation and clear change descriptions.

What’s new

  • ✓ Mobile-first responsive design for tablets and phones
  • ✓ Bottom sheet for comments on small screens
  • ✓ Collapsible menu system for more screenshot real estate
  • ✓ Touch-friendly approval/rejection buttons
  • ✓ Enhanced change descriptions in fullscreen mode
  • ✓ Improved navigation between screenshots

Open Source Licenses Page

Transparency matters. We added a /licenses page that lists all 41 production dependencies with their licenses. Color-coded badges for MIT, Apache, BSD, and others, plus links to each package's repository. Auto-generated at build time so it's always up to date.

What’s new

  • ✓ Lists all 41 production dependencies with license info
  • ✓ Color-coded license badges (MIT, Apache-2.0, BSD, etc.)
  • ✓ Searchable table with repository links
  • ✓ Auto-generated at build time via Vite plugin
  • ✓ Linked from footer under Legal section

Keyboard-Driven Review Mode

Power users, this one's for you. We added a full keyboard-driven review mode for blazing through screenshot approvals. Press Space to enter review mode, then A to approve and R to reject – with auto-advance so you never have to reach for the mouse. Toggle diffs with D, switch view modes with T, and navigate with arrow keys. It's like vim for visual testing.

What’s new

  • ✓ Space to enter review mode with visual indicator badge
  • ✓ A/R to approve/reject with auto-advance through the queue
  • ✓ D toggles diff overlay or baseline/current view
  • ✓ T cycles between overlay and toggle view modes
  • ✓ Arrow keys navigate between screenshots (always active)
  • ✓ Keyboard hints panel shows available shortcuts
  • ✓ Touch-friendly mobile UI remains unchanged

Unified Public & Authenticated Views

We consolidated public and authenticated views into one unified UI. No more separate code paths for public vs. logged-in users – just one clean interface that adapts based on your permissions. Authenticated non-members can now view public content (previously got 403 errors), and everyone saw the same polished visual review system. We deleted over 700 lines of redundant component code in the process.

What’s new

  • ✓ Single unified UI for all access levels – members, authenticated non-members, and public visitors
  • ✓ "Public" badge shows when viewing as non-member (desktop breadcrumb, mobile subnav)
  • ✓ "Sign In" button for unauthenticated users instead of empty avatar
  • ✓ Authenticated non-members can now view public orgs, projects, and builds
  • ✓ Backend enforces all permissions – frontend just shows/hides UI elements
  • ✓ 700+ lines of duplicate component code removed

Quiet-by-Default CLI Output

The CLI now stays quiet while your tests run and only speaks up when it has something useful to say. Zero output during test execution (your test runner owns the terminal), then a clean ASCII summary at the end. No emojis, no noise – just the facts. We also removed static HTML reports in favor of the live TDD dashboard (vizzly tdd start --open).

What’s new

  • ✓ Zero output during test execution – test runner owns the terminal
  • ✓ Clean ASCII summary shows passed/failed counts and change names
  • ✓ Professional formatting without emojis
  • ✓ Static HTML reports removed – use live TDD dashboard instead
  • ✓ Dashboard opens at root URL (vizzly tdd start --open)

Per-Screenshot Comparison Overrides

Not all screenshots are created equal. Now you can override threshold and minClusterSize on individual screenshots. Strict 1.0 threshold for your checkout button, permissive 5.0 for that ad banner with dynamic content. The hierarchy is simple: screenshot-level beats config-level beats defaults. Thanks again to Kael from Vuetify for pushing us on this.

What’s new

  • ✓ Override threshold per screenshot for fine-grained control
  • ✓ Override minClusterSize per screenshot for noise filtering
  • ✓ Clear priority: screenshot-level > config > defaults
  • ✓ Comparison results show which settings were actually used
  • ✓ signatureProperties now configurable in root config

Cluster-Based Noise Filtering

Scattered single-pixel differences causing false positives? The new minClusterSize option filters out isolated pixels that are likely noise – anti-aliasing artifacts, font rendering variance, sub-pixel shifts. If diff pixels aren't grouped together, they're probably not real changes. Thanks to Kael from Vuetify for suggesting this feature.

What’s new

  • ✓ New minClusterSize option to filter isolated pixel noise
  • ✓ Default of 2 filters scattered single pixels while detecting solid clusters
  • ✓ Tune from 1 (exact matching) to 3+ (more permissive)
  • ✓ A 5x5 block of changes (25 connected pixels) always gets detected
  • ✓ Dramatically reduces false positives from font rendering and anti-aliasing

Documentation Redesign

The docs redesign remains. References to the old review system are retired.

We completely rewrote the docs. Every page has been reviewed, rewritten for clarity, and updated with the latest features. The new docs use the BearDen-inspired local token language for a consistent look, and we added MCP API endpoints so AI assistants can search and read the docs directly.

What’s new

  • ✓ Complete rewrite of all documentation pages
  • ✓ BearDen-inspired local token styling for consistency
  • ✓ Improved Getting Started guides and SDK documentation
  • ✓ CLI documentation rewrite with accurate command references
  • ✓ MCP API endpoints for AI assistant access to docs
  • ✓ Better FAQ and troubleshooting sections

Comparison Threshold Settings UI

Configure your comparison thresholds directly in the project settings UI. No more digging through config files or environment variables – just set your preferred sensitivity level and Vizzly remembers it for all your builds.

What’s new

  • ✓ Set comparison thresholds in the project settings page
  • ✓ Slider UI for easy threshold adjustment
  • ✓ Applies to all builds in the project automatically
  • ✓ Override per-screenshot when needed via SDK options
  • ✓ Updated defaults optimized for CIEDE2000 color science

Swift SDK Auto-Detection

The Swift SDK now automatically captures device model, OS version, screen dimensions, and scale factor without configuration. Just call app.vizzlyScreenshot(name: "screen") and it figures out the rest.

What’s new

  • ✓ Auto-detects device model, OS version, screen dimensions, and scale factor
  • ✓ Zero configuration required for device metadata
  • ✓ TDD dashboard now shows exactly which build you're working on
  • ✓ Build metadata discovery file for better local development experience
  • ✓ Smoother integration between Swift tests and TDD mode

CIEDE2000 Perceptual Color Difference

Honeydiff now uses CIEDE2000 for color difference calculations instead of YIQ. CIEDE2000 models how humans actually perceive color differences – your eyes are more sensitive to some colors than others, and CIEDE2000 accounts for that. The result: fewer false positives from colors that look identical but differ in RGB values, and better detection of changes that actually matter.

What’s new

  • ✓ Perceptual color difference that matches human vision
  • ✓ Fewer false positives from anti-aliasing and sub-pixel rendering
  • ✓ Better detection of meaningful visual changes
  • ✓ Default thresholds updated for CIEDE2000 scaling
  • ✓ Shipped in Honeydiff v0.5.0 and now the default across Vizzly

Custom Baseline Signature Properties

Testing the same screen with different data? Running visual tests in different environments? Testing A/B variations? Custom baseline signature properties let you pass metadata when capturing screenshots and configure which properties matter for baseline matching. Vizzly creates separate baselines for each variation automatically.

What’s new

  • ✓ Define custom metadata when capturing screenshots
  • ✓ Configure which properties matter for baseline matching
  • ✓ Separate baselines for different user roles, feature flags, or test data
  • ✓ Authenticated dashboard screenshots won't get compared against visitor baselines
  • ✓ Works with all SDKs – JavaScript, Swift, Ruby, and more

Platform Stability & Infrastructure

Behind the scenes improvements to make Vizzly more reliable. Graceful shutdown means zero downtime during deployments. Better error handling for GitHub integration handles network issues, API rate limits, and temporary outages. Plus fixes for edge cases in TDD cleanup, screenshot reporting, and JWT handling.

What’s new

  • ✓ Graceful shutdown – servers finish in-flight requests before shutting down
  • ✓ Zero downtime deployments – builds don't fail mid-upload during updates
  • ✓ Robust GitHub PR integration with intelligent retry logic
  • ✓ Handles network issues, API rate limits, and temporary GitHub outages
  • ✓ Edge case fixes for TDD run cleanup, screenshot reporting, and JWT tokens

Hand-Written TypeScript Types for the CLI

The CLI now ships with hand-written TypeScript types instead of auto-generated ones. The auto-generated types were technically correct but hard to read and navigate. The new types are clean, documented, and actually helpful when you're integrating Vizzly into your tests.

What’s new

  • ✓ Hand-written TypeScript types that are easy to read and navigate
  • ✓ Full documentation for all public APIs
  • ✓ Better IDE autocompletion and inline hints
  • ✓ Automated tsd testing ensures types stay accurate
  • ✓ Cleaner integration experience for TypeScript projects

Hotspot Filtering for TDD Mode

This feature is no longer part of Vizzly.

Ever get false positives from timestamps, animations, or other dynamic content? We taught Vizzly to reuse confirmed hot spot learning from the cloud in local TDD mode. Sync your baselines and TDD mode can pass comparisons when the meaningful changes are contained inside regions your team already accepted.

What’s new

  • ✓ Confirmed noise filtering – timestamps, spinners, and dynamic IDs can be ignored after review
  • ✓ Cloud-learned hotspots – Vizzly analyzes your build history to identify frequently-changing region candidates
  • ✓ Coverage-based passing – if 80%+ of the diff is in confirmed hotspots, the comparison passes
  • ✓ Visual feedback shows exactly what got filtered: "95% in hotspots" right in the output
  • ✓ Works with baseline sync – run `vizzly tdd sync` to download hotspot data alongside baselines
  • ✓ Zero config required – if you're connected to the cloud, it just works

Multi-Project GitHub Integration

Got a monorepo? Now multiple Vizzly projects can connect to the same GitHub repository. Each project posts its own status check, so you can have separate visual testing for your web app, mobile web, and component library – all in one repo.

What’s new

  • ✓ Connect multiple Vizzly projects to the same GitHub repository
  • ✓ Each project posts its own PR status check
  • ✓ Perfect for monorepos with multiple apps or packages
  • ✓ Separate baselines and builds for each project
  • ✓ Independent review workflows per project

TDD Dashboard Redesign & Remote Builds Browser

We completely rebuilt the TDD dashboard to match the Vizzly cloud experience – same design system, same comparison viewer, same everything. Plus, there's a new Builds page that lets you browse your cloud builds and download baselines directly from the dashboard. Local and cloud finally feel like one product.

What’s new

  • ✓ Pixel-perfect match with Vizzly cloud – same colors, components, and interactions
  • ✓ New Builds page for browsing remote builds and downloading baselines without leaving TDD mode
  • ✓ Redesigned comparison viewer with proper zoom controls, filmstrip navigation, and metadata panels
  • ✓ Shared visual review components – Cards, Buttons, Badges, Alerts, and more
  • ✓ Health ring visualizations for quick status at a glance
  • ✓ TanStack Query under the hood – faster data fetching, smarter caching, better UX

Smarter Auto-Approval with SSIM Guard

This feature is no longer part of Vizzly.

Auto-approval just got smarter. We added an SSIM (Structural Similarity) guard that prevents layout shifts from being auto-approved – even if the pixel difference is within threshold, structural changes get flagged for review. Plus, builds now auto-approve when all comparisons pass, saving you a click.

What’s new

  • ✓ SSIM guard detects structural changes that pixel diffing might miss
  • ✓ Layout shifts get flagged for review even with low pixel differences
  • ✓ Builds auto-approve when all comparisons are auto-approved
  • ✓ Fewer false approvals, less manual review of obvious changes
  • ✓ Works alongside existing hotspot and threshold-based auto-approval

Enhanced Flaky Screenshot Detection

This feature is no longer part of Vizzly.

Flaky tests are the worst. We upgraded our flaky detection to classify why screenshots are flaky and score their instability. Now you can see at a glance which screenshots are genuinely unstable vs. which ones just had a one-time blip.

What’s new

  • ✓ Instability scoring shows how flaky each screenshot really is
  • ✓ Classification explains why a screenshot is marked as flaky
  • ✓ Distinguishes between one-time failures and chronic instability
  • ✓ Better signal for prioritizing which flaky tests to fix first
  • ✓ Historical analysis across your build history

Reviewed UI Design System

We built the first shared design system layer for Vizzly. It gave us a complete component library with consistent theming, accessibility baked in, and documentation. We migrated the platform piece by piece: builds list, build detail view, settings pages, auth pages, dashboard, and navigation. The result was a UI that felt cohesive and loaded faster, and it informed the BearDen-inspired token language used on the marketing site today.

What’s new

  • ✓ Complete component library with consistent theming
  • ✓ Accessibility built into every component
  • ✓ Migrated builds list, build detail view, settings, auth, dashboard, and navigation
  • ✓ Faster page loads and more cohesive feel across the platform
  • ✓ Foundation for faster feature development going forward

Redesigned Screenshot Review Experience

We completely rebuilt the screenshot comparison viewer from the ground up. New zoom controls, filmstrip navigation, and a comments sidebar that actually helps you review changes. Oh, and it works beautifully on mobile now – review screenshots from anywhere, even on your phone.

What’s new

  • ✓ Zoom controls with fit-to-screen, presets (25%-200%), and keyboard shortcuts (+/-/0/9)
  • ✓ Filmstrip navigation for quick jumping between screenshots with lazy-loaded thumbnails
  • ✓ Comments sidebar with list view, hover-to-highlight markers, and threaded navigation
  • ✓ Unified comparison modes (overlay, toggle, slide) with consistent zoom and comment positioning
  • ✓ Mobile-first responsive design with collapsible menu and bottom sheet comments
  • ✓ Touch-friendly controls that actually work on tablets and phones

Swift SDK for iOS and macOS

Visual regression testing is now available for native iOS and macOS apps. The Swift SDK integrates directly with XCTest, bringing the same TDD-first workflow that web developers have been using to native app development. Add one line to your tests and get instant visual feedback. Check out the Swift docs →

What’s new

  • ✓ Native XCTest integration – extends XCUIApplication and XCUIElement directly
  • ✓ Local TDD mode with instant visual feedback at localhost:47392/dashboard
  • ✓ Automatic mode switching – no config changes between local dev and CI/CD
  • ✓ Multi-device support with separate baselines for iPhone, iPad, and different OS versions
  • ✓ Dark mode and appearance testing with automatic device metadata capture
  • ✓ Element-level screenshots for testing specific UI components
  • ✓ CI/CD ready with GitHub Actions and Fastlane examples
  • ✓ Swift Package Manager installation with zero runtime dependencies

MCP HTTP Endpoint for AI Assistants

This endpoint is no longer the supported agent workflow. Use the Vizzly CLI.

What if your AI assistant could just look at your failed visual tests and tell you what's going on? Now it can. We built an MCP HTTP endpoint that gives AI assistants direct access to your visual regression test data. Query build status, analyze failures, inspect actual screenshots, and get AI-powered debugging help – all through natural conversation. Check out the MCP docs →

What’s new

  • ✓ Works with AI assistants that support MCP
  • ✓ AI can actually see your screenshots and analyze visual changes (includeImages: true)
  • ✓ 6 specialized tools: build status, list builds, comparison details, failure analysis, flaky detection, hot spots
  • ✓ Real-world examples: Slack alert bots, auto-triage dashboards, nightly flaky test reports
  • ✓ Generous rate limits: 300 requests/minute (~5 req/sec) per API token
  • ✓ Simple setup: add your API token to your AI assistant's config and you're done

Passkey Login Support

Passwords are officially overrated. We just added passkey authentication so you can sign in with Face ID, Touch ID, or your device's built-in security. One tap and you're in – no passwords to remember, no 2FA codes to fumble with. Your phone already knows it's you.

What’s new

  • ✓ One-tap login with Face ID, Touch ID, or Windows Hello
  • ✓ Works across all your devices (phone, laptop, tablet – wherever)
  • ✓ Zero passwords to remember or manage
  • ✓ Phishing-resistant authentication (seriously, it's basically unhackable)
  • ✓ Faster than typing a password (we benchmarked it, trust us)
  • ✓ Automatic fallback to password login if you need it

Vitest SDK

Vitest 4 just shipped visual testing, and we built a drop-in replacement that brings the full Vizzly experience to your Vitest tests. Same API you already use (toMatchScreenshot), but with local TDD workflows, team collaboration, and the Honeydiff engine under the hood. Zero code changes, way better features. Check out the Vitest docs →

What’s new

  • ✓ True drop-in replacement – uses Vitest's standard toMatchScreenshot API
  • ✓ Local TDD mode with instant visual feedback (under 100ms comparisons)
  • ✓ Automatic team builds from CI with position-based comments and review workflows
  • ✓ Honeydiff engine with dynamic content detection, SSIM scoring, and smart anti-aliasing
  • ✓ Multi-variant testing with properties object (themes, viewports, user states)
  • ✓ Zero runtime dependencies – lightweight bridge between Vitest and Vizzly CLI
  • ✓ Works with Vitest 4.0+ and requires Node.js 22+ for Honeydiff compatibility

README Badges for OSS Projects

Want to show off your visual testing setup? Now you can! Add a badge to your README that displays real-time status from your Vizzly builds. Static badge for branding or dynamic badge with live screenshot counts – both work great. Check out the badge docs →

What’s new

  • ✓ Static "visual testing 🐻 | vizzly" badge in brand colors – always available
  • ✓ Dynamic status badges showing project name and passing screenshot count
  • ✓ Smart fallback logic: baseline build → last completed build → static badge
  • ✓ One-click copy-to-clipboard markdown in project settings
  • ✓ Works just like GitHub badges (public projects only)
  • ✓ 5-minute cache for fresh status, 24-hour cache for static badges

CLI Authentication with OAuth

Managing API tokens across projects got a lot easier. Log in once with vizzly login, map projects to directories, and the CLI handles authentication for you. No more copying tokens between projects or setting up environment variables everywhere. Check out the authentication docs →

What’s new

  • ✓ OAuth login that actually works – one command and you're authenticated
  • ✓ Project mappings so the CLI knows which token to use based on your directory
  • ✓ Auto-refresh on token expiry (you'll never have to log in again)
  • ✓ New commands: vizzly whoami, vizzly project:select, and friends
  • ✓ Token priority system that makes sense: CLI flag → env var → project mapping → user token
  • ✓ CI/CD stays the same – keep using VIZZLY_TOKEN like always

Static Site SDK

Got a static site? Now you can visually test every page without writing a single test. Our new Static Site SDK works with Gatsby, Astro, Jekyll, Next.js – basically anything that spits out HTML. Point it at your build directory and it discovers pages, captures screenshots, and handles the comparisons. Check out the Static Site docs →

What’s new

  • ✓ Auto-discovery from sitemap.xml and HTML files – zero config required
  • ✓ Multi-viewport screenshots because mobile matters
  • ✓ Interaction hooks for dynamic content and user flows
  • ✓ Pattern-based filtering to test exactly what you need
  • ✓ Works with Gatsby, Astro, Jekyll, Next.js, Hugo, Eleventy, and more
  • ✓ Parallel processing for when you've got hundreds of pages

AI Assistant Integrations

The old integration details are retired. Use the current Vizzly CLI context commands.

What if your AI assistant could help you debug visual regressions? Now it can. We built agent-ready visual testing workflows that bring AI-powered review into your editor. Get intelligent suggestions on whether to accept or fix changes, spot test coverage gaps, and set up Vizzly without leaving your flow. Check out the AI integration docs →

What’s new

  • ✓ AI-assisted debugging that analyzes visual diffs and suggests fixes
  • ✓ Smart TDD status checks with contextual recommendations
  • ✓ Test coverage suggestions that find gaps in your visual testing
  • ✓ Interactive setup wizard that configures Vizzly for your project
  • ✓ Works seamlessly with both local TDD mode and cloud builds
  • ✓ MCP (Model Context Protocol) integration with 15+ specialized tools

Storybook SDK

Running Storybook? Now you can visually test every story automatically. Our new Storybook SDK auto-discovers your stories and captures screenshots across viewports – no manual configuration required. Just point it at your static build and watch it work. Check out the Storybook docs →

What’s new

  • ✓ Auto-discovery from your Storybook build (v6, v7, and v8 supported)
  • ✓ Multi-viewport screenshots with configurable dimensions
  • ✓ Per-story configuration right in your story files
  • ✓ Interaction hooks for testing hover states and dynamic content
  • ✓ Pattern-based filtering to test exactly what you need
  • ✓ Parallel processing because nobody likes waiting

Ruby SDK

Ruby developers, we see you. We built a lightweight Ruby SDK that works with RSpec, Minitest, Cucumber, and any other testing framework you throw at it. Same architecture, same simplicity – just POST screenshots to the CLI and let it handle the rest. Check out the Ruby docs →

What’s new

  • ✓ Zero dependencies – uses only Ruby stdlib
  • ✓ Auto-discovery finds your running TDD server automatically
  • ✓ Works with RSpec, Minitest, Cucumber, Watir, you name it
  • ✓ Helper module patterns for clean test integration
  • ✓ Published to RubyGems for easy installation

Interactive TDD Dashboard

TDD mode just got a major upgrade. We built a real-time React dashboard that gives you instant visual feedback while you code. No more waiting for builds or refreshing static reports – just code, save, and watch your visual diffs appear live. Check out the new TDD mode →

What’s new

  • ✓ Real-time dashboard that updates as your tests run (seriously, it's instant)
  • ✓ Two views: Comparisons for diffs, Statistics for baseline management
  • ✓ Visual diff modes: overlay, side-by-side, onion skin, and toggle
  • ✓ Accept individual baselines or bulk-accept all changes from the UI
  • ✓ Reset baselines button when you need a fresh start
  • ✓ Filter and search through screenshots by status, name, browser, or viewport
  • ✓ Auto-open flag (--open) to launch dashboard automatically

Google OAuth Authentication

We just added Google OAuth to make signing up and signing in as smooth as possible. One click and you're in – no more password forms to fill out. Your future self will definitely thank you for this one.

What’s new

  • ✓ One-click Google sign up and sign in (seriously, it's that easy)
  • ✓ Skip the tedious account creation forms
  • ✓ Rock-solid security with Google handling the heavy lifting
  • ✓ Your profile info gets populated automatically – pretty sweet!

Build Your Own SDK Documentation

Ever wanted to build a Vizzly SDK in your favorite language? Now you can! We created a comprehensive guide that walks you through building custom SDKs using our HTTP API. Ruby, Python, Go – we've got examples for all of them. Check out the guide →

What’s new

  • ✓ Real implementation examples in Ruby, Python, and Go
  • ✓ Works with any testing framework or language you love
  • ✓ Complete HTTP API docs with all the best practices

New Comprehensive Documentation Site

Good documentation shouldn't be a luxury. We built docs.vizzly.dev from the ground up to be the kind of docs you'll actually want to read. Clear, practical guides that respect your time.

What’s new

  • ✓ Integration guides for every major testing framework
  • ✓ CI/CD examples for 7+ providers – GitHub Actions, GitLab, Jenkins, you name it
  • ✓ Parallel testing docs that actually make sense
  • ✓ Team management guides with real-world examples
  • ✓ Security and billing info that's actually accurate
  • ✓ Troubleshooting guides for when things go sideways
  • ✓ FAQ section with live chat support (because sometimes you just need to talk to a human)

Public Properties for Embeddable Screenshots

Need to embed screenshots in your docs or share them publicly? We've got you covered with public properties. Clean public access without the security concerns – you only share exactly what you intend to.

What’s new

  • ✓ Smart property-based filtering so you only share what you mean to
  • ✓ Non-guessable UUIDs because security matters
  • ✓ Zero risk of accidental exposure (your secrets stay secret)
  • ✓ Clean, embeddable screenshot viewer that just works

OSS Plan & Automated Eligibility

Building something for the open source community? We love supporting that! Our new OSS plan automatically detects if your project qualifies and streamlines the application process. Open source projects deserve great tooling.

What’s new

  • ✓ Smart eligibility detection that actually works
  • ✓ Streamlined application process that's actually pleasant
  • ✓ Special pricing for qualifying projects
  • ✓ Community support from developers who get it

Enhanced Team Review System

This review system is no longer part of Vizzly.

We completely reworked our review system to make team collaboration actually enjoyable. Assign multiple reviewers, get notifications that matter, and work through approvals without the usual friction.

What’s new

  • ✓ Multi-reviewer assignment (because teamwork makes the dream work)
  • ✓ Notifications that actually help instead of annoy
  • ✓ Clean build detail UI that's easy on the eyes
  • ✓ SDK improvements that you'll definitely notice

Redesigned Build Detail Page

You spend a lot of time reviewing build details, so we made sure they look good and work well. Complete redesign with improved UX and a visual hierarchy that guides you naturally through the information.

What’s new

  • ✓ Modern UI with a clean, contemporary feel
  • ✓ Table layout that organizes info the way your brain expects
  • ✓ Navigation that doesn't require a PhD to figure out
  • ✓ Visual comparison tools that highlight what matters

User Profile Pictures & UI Polish

Small things make a big difference. We added profile pictures throughout the platform and polished up the comment styling. It's amazing how much better everything feels when you can actually see who you're working with.

What’s new

  • ✓ Profile pictures throughout the interface
  • ✓ Comment modals that don't fight with your cursor
  • ✓ Visual hierarchy that guides your eye naturally
  • ✓ Team member identification that actually works

Parallel Build Support

Nobody likes waiting for builds to finish. We made them run in parallel so multiple builds can process simultaneously. Faster feedback means you can ship with confidence.

What’s new

  • ✓ Multiple builds running at once (because time is money)
  • ✓ Smarter finalization process that doesn't drop the ball
  • ✓ Better deduplication so you don't see duplicate work
  • ✓ Build counts that actually add up correctly

GitHub-like Review Assignment System

Review assignments are no longer part of Vizzly.

If you've used GitHub's review system, this will feel familiar. We took their best ideas and built a review assignment system that's genuinely pleasant to use.

What’s new

  • ✓ GitHub-style interface (if it ain't broke, don't fix it)
  • ✓ Smart reviewer assignment based on your team setup
  • ✓ Review status tracking that keeps everyone in the loop
  • ✓ Database backup improvements (boring but important)

Mentions & Notification System

Mentions and replies remain. Review assignment notifications were retired.

Getting someone's attention shouldn't be a guessing game. We built @mentions and a notification system that cuts through the noise so you can stay connected with your team without the chaos.

What’s new

  • ✓ @mention system for when you need someone's attention
  • ✓ Centralized inbox so nothing gets lost
  • ✓ Real-time alerts that matter (not the spam kind)
  • ✓ Redesigned settings page that's actually intuitive

Screenshot-Level Comments

You know that feeling when you spot an issue in a screenshot but can only point and gesture? Those days are over. Comment directly on screenshots with threaded discussions and visual markers. Game changer.

What’s new

  • ✓ Click anywhere on a screenshot to leave a comment
  • ✓ Threaded discussions so conversations stay organized
  • ✓ Visual markers that show exactly what you're talking about
  • ✓ Redesigned build view that ties everything together

Build Pipeline & CLI Improvements

No more builds failing for mysterious reasons. We improved reliability and added restart capabilities. Plus, our CLI graduated from prototype to genuinely useful. Your debugging sessions are about to get much smoother.

What’s new

  • ✓ Restart failed builds without starting from scratch
  • ✓ Pipeline reliability that won't let you down
  • ✓ CLI tooling that developers will actually want to use
  • ✓ Error handling that gives you clues, not cryptic messages

GitHub Integration

Connect your Vizzly projects to GitHub for seamless workflow integration. Automatic status updates on your PRs and repository connections that just work – your tools finally play nice together.

What’s new

  • ✓ Status updates that show up right in your PRs
  • ✓ Automatic reporting so you don't have to remember
  • ✓ Repository connections that don't require a PhD
  • ✓ Integration logging for when you need to debug

Vizzly Platform Launch

After months of building and testing, we're officially launching! Vizzly is here to make visual testing something you'll actually enjoy. Built by developers, for developers who care about shipping quality work.

What’s new

  • ✓ Visual regression testing that catches the sneaky bugs
  • ✓ Team organization that doesn't make you want to flip tables
  • ✓ Screenshot comparison with diff detection that actually works
  • ✓ User registration and authentication system

Ready to try Vizzly?

Start building visual regression testing with your team. Free plan available, no credit card required.