Mobile — Snapshot / Visual Regression Testing
Paparazzi, Roborazzi, swift-snapshot-testing, golden_toolkit, Loki — visual diff testing for mobile.
Snapshot testing renders UI to images and compares to known-good baselines. It's the cheapest way to catch unintended visual regressions. Per-platform tools dominate; Compose Multiplatform and RN have a thinner ecosystem here. For non-visual testing see Mobile — Testing Frameworks.
iOS / SwiftUI
- ★ swift-snapshot-testing (Point-Free) — the de-facto Swift snapshot tool; renders SwiftUI / UIKit / images / text / JSON. MIT.
- iOSSnapshotTestCase — Facebook's older library; less hot.
- SnapshotPreviews (EmergeTools) — automatic snapshots from
#Previewmacros; free + paid tier.
Android / Compose
- ★ Paparazzi (Square) — render Compose to PNG on the JVM (no device); fast feedback. Apache 2.0.
- ★ Roborazzi — Robolectric-based snapshot testing; works with Compose; supports interaction recording. Free.
- Shot (Karumi) — older instrumented snapshot library.
- Showkase — catalog of all your
@Previewcomposables; not snapshotting per se but pairs well.
React Native
- Jest + react-test-renderer — snapshot the React tree (text-shaped, not pixel).
- Loki — visual snapshot for React Native via Storybook.
- Storybook for RN + Chromatic — paid; visual diff hosted.
- react-native-owl — pixel snapshot tool.
Flutter
- ★ flutter_test golden tests — built-in;
matchesGoldenFile. - golden_toolkit — better defaults, font loading, multi-device golden tests.
- alchemist — modern golden testing helper.
Compose Multiplatform / KMP
- Paparazzi — Android JVM only; works on the Android target.
- For iOS snapshots in CMP, use swift-snapshot-testing on the iOS app target.
- Cross-platform CMP visual tests are an open gap as of 2026.
Visual regression hosted services
- Chromatic — Storybook visual testing; works with Storybook for RN. Paid.
- Argos — open-source visual diff service; free OSS + paid hosted.
- Percy (BrowserStack) — paid.
- Lost Pixel — open-source visual regression CI.
- Emerge Tools — iOS / Android perf + size + snapshot platform; paid.
What snapshots catch (and don't)
- Catch: layout regressions, theming bugs, font/locale issues, accessibility-tree changes.
- Miss: animation correctness, timing-dependent UI, real input/gesture behavior. Pair with Maestro.
Tips
- Render at multiple device sizes / locales to catch RTL and small-screen bugs.
- Render in light + dark + high-contrast to catch theming gaps.
- Use deterministic data and frozen clocks — randomness ruins snapshots.
- Commit baselines to the repo; review diffs in PRs.
Pick this if…
- iOS/SwiftUI: swift-snapshot-testing.
- Android/Compose: Paparazzi for fastest feedback; Roborazzi if you need interaction.
- Flutter: golden_toolkit or alchemist on top of
flutter_test. - RN with Storybook: Loki or Chromatic.
- Need a hosted UI for diffs: Chromatic, Argos, or Lost Pixel.
- iOS-Android per-platform parity matters: run Paparazzi + swift-snapshot-testing on the same screen specs.