Loki

What Loki is
Loki checks Storybook projects for visual regressions by capturing story screenshots and comparing them with reference images. It produces visual differences for review, so teams can create reference screenshots, run comparisons, examine changes, and approve updated references. Capture options include Chrome in Docker, local Chrome, Chrome in AWS Lambda, the iOS simulator, and the Android emulator. A remote AWS Lambda renderer is available for large test suites. Loki is designed for continuous integration, where a test can fail if reference images are missing. It supports pixel comparison modes and documents pixelmatch, gm, and looks-same as diff engines. The getting started guide lists Node 16 or later as a prerequisite. Recent Storybook versions need no extra integration for non-React Native projects; React Native projects use an import in `storybook/storybook.js`. Loki does not launch Storybook or simulator and emulator servers, so those need to be running before tests. The software is MIT-licensed and free.
Who it suits
Loki suits teams that maintain Storybook projects and want to check story appearances in CI or on supported browser and mobile targets. It is also suited to React Native projects that can set up the documented integration.
What it does well
- Compares story screenshots with reference images.
- Supports Chrome, iOS simulator, and Android emulator captures.
- Can run in continuous integration.
- Free and MIT-licensed.
What to know first
- Requires Node 16 or later.
- Does not start Storybook or simulator servers.
- Looping animations, GIFs, and SVG animations have documented limits.
- The gm diff engine requires GraphicsMagick.
Limits
Loki requires Node 16 or later, and it does not start Storybook or simulator and emulator servers. Its documented animation limitations include looping requestAnimationFrame animations, GIFs, SVG animations, native Lottie animations, and React Native Animated. GraphicsMagick is required when using the `gm` diff engine.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Loki | MIT-licensed open-source software · Node 16+ | Free |
As loki.js.org lists them, read 5 Oct 2026. The maker's own page has the final word.
Getting started
- Install or use Node 16 or later.
- Open https://loki.js.org/ and follow its getting started guide.
- Ensure Storybook and any required simulator or emulator servers are running.
- For a React Native project, import `loki/configure-react-native` in `storybook/storybook.js`.
- Configure Loki in `package.json`, `.lokirc`, `.lokirc.json`, or `loki.config.js`.
- Create reference screenshots, run comparisons, review the visual differences, and approve updated references.
Loki is a free visual-regression tool for teams building Storybook projects, including React Native apps. Its reference-image workflow suits teams that want visual checks in CI and can manage their own browser and simulator setup; look elsewhere if you need cross-browser coverage or a service that starts test infrastructure for you.
Overview
Loki captures Storybook stories and compares them with approved screenshots, producing visual differences for review. Teams can approve updated references as interfaces change, while CI can fail tests when references are missing. That makes baseline changes deliberate, but it also means someone must review and accept legitimate updates.
The trade-off is operational responsibility: Loki will not start Storybook, an iOS simulator, or an Android emulator. Those servers need to be running before tests begin. For teams with an established Storybook and CI workflow, this is a focused way to catch unintended visual changes; teams seeking a turnkey capture service may find the setup burden a poor fit.
Key features
Storybook screenshots and review
The workflow runs from creating reference screenshots through comparison and diff review to approving changed references. Recent Storybook versions need no extra integration for non-React Native projects; older versions may require a React configuration import. React Native projects can integrate by importing loki/configure-react-native in storybook/storybook.js. This makes Loki well suited to teams already organizing UI examples in Storybook, rather than teams looking for a general-purpose web-page comparator.
Capture and comparison choices
Capture targets include Chrome in Docker, local Chrome, the iOS simulator, and the Android emulator. Chrome on AWS Lambda offers remote rendering for large suites. The documented diff engines are pixelmatch, gm, and looks-same; gm requires GraphicsMagick, while Docker is optional if using the Docker Chrome target. The options give teams flexibility to match an existing environment, but Loki does not provide cross-browser capture.
Configuration and CI
Configuration can live in the loki section of package.json or in .lokirc, .lokirc.json, or loki.config.js. Loki is designed for continuous integration and can fail when reference images are missing, a useful safeguard against unreviewed baselines. Node 16 or later is required.
Animation limits
Known limitations cover looping requestAnimationFrame animations, GIFs, SVG animations, native Lottie animations, and React Native Animated. Projects that depend on these moving elements should account for the limits before relying on screenshot diffs as a complete visual check.
Pricing
Loki: free. The plan is MIT-licensed open-source software and requires Node 16 or later. There is no paid tier or trial; this is a free tool for teams prepared to operate it within their own setup, not a priced managed service.
Platforms
Loki supports Android and iOS capture through their emulators or simulator, Linux and macOS, Windows, web, and self-hosted environments. These are not interchangeable capture modes: the documented browser options are Chrome in Docker, local Chrome, and Chrome in AWS Lambda, alongside the mobile targets.
Who it's for
Loki is the strongest fit for Storybook teams that want a free, configurable visual-regression step in CI, especially when they need mobile simulator or emulator captures and can keep the required servers running. It is a weaker choice for teams needing cross-browser comparisons, animation coverage across the documented limitations, or infrastructure managed by the tool.
Pros and cons
- Pro: Reference screenshots, visual diffs, and approval of updated baselines give teams a defined review loop for interface changes.
- Pro: Chrome, iOS simulator, and Android emulator targets, plus AWS Lambda rendering for large suites, cover several useful environments without a subscription.
- Pro: MIT licensing and configurable setup make Loki adaptable for teams that can maintain their own workflow.
- Con: Storybook and simulator or emulator servers must already be running, adding setup work to local and CI workflows.
- Con: There is no cross-browser capture, and several animation types are documented limitations, narrowing its usefulness for motion-heavy interfaces or broad browser checks.
Alternatives
Visual Regression Testing Software is a broader category to explore when comparing tools beyond Storybook-oriented workflows.
- Diffy is worth considering if a monthly allowance of 500 screenshots, two environments, team management, and one-month data retention better matches the workflow.
- Happo may suit teams seeking 5,000 monthly snapshots, Chrome, and visual and accessibility testing on its free plan, with no credit card or time limit.
- Percy is an option for teams whose needs fit its free allowance of 5,000 screenshots per month, unlimited users, and unlimited projects.
- SmartUI may fit a project that can work within 2,000 lifetime screenshots, one month of build history, and limited user seats on its free plan.
- Frontend Regression Validator is another free, open-source option, licensed under Apache-2.0 and runnable locally or with Docker.
- Screenster has a free plan with one concurrent test, one user, and monthly local or cloud run limits.
- Argos is an alternative whose platform and SDKs are open source and MIT-licensed.
- BackstopJS is another free, MIT-licensed project installed with npm.
Verdict
Choose Loki if your team uses Storybook and wants a free reference-image workflow that can run in CI, with Chrome and mobile capture options. Its strongest reason to choose it is that focused, configurable review loop; its clearest reason to look elsewhere is the need to manage running servers yourself, alongside the absence of cross-browser capture.
Verdict
Loki offers a defined screenshot-comparison workflow for Storybook projects, with browser and mobile capture options. Check its prerequisites and animation limitations, and ensure required servers are already running before tests.
Questions
How much does Loki cost?
Loki is listed as free, and the project identifies it as MIT-licensed open-source software.
What does Loki do?
It tests Storybook projects for visual regressions by comparing story screenshots with reference images and producing visual differences for review.
Which capture targets does Loki support?
Targets include Chrome in Docker, local Chrome, Chrome in AWS Lambda, the iOS simulator, and the Android emulator.
Does Loki work with continuous integration?
Yes. It is designed for continuous integration servers, and tests can fail when reference images are missing.
What does Loki require to get started?
The getting started guide lists Node 16 or later. Storybook and any simulator or emulator servers needed for captures must already be running.
Which license and maintainers does Loki list?
The repository identifies Loki as MIT-licensed, lists Joel Arvidsson as author, and Tomas Echeverri Valencia as maintainer.
Facts from Loki's own pages
- Animation limits
- Documented known animation limitations include looping requestAnimationFrame animations, GIFs, SVG animations, native Lottie animations, and React Native Animated. · loki.js.org, 4 Oct 2026
- AWS Lambda
- A remote renderer using AWS Lambda is available for large test suites. · loki.js.org, 4 Oct 2026
- Browser targets
- Supported browser targets include Chrome in Docker, local Chrome, and Chrome in AWS Lambda. · github.com, 5 Oct 2026
- CI
- Loki is designed to run on continuous integration servers, where tests can require reference images. · loki.js.org, 4 Oct 2026
- Continuous integration
- Loki is designed to run on continuous integration servers and can fail tests when reference images are missing. · loki.js.org, 5 Oct 2026
- Custom configuration
- Projects can configure Loki through a `loki` section in `package.json` or through `.lokirc`, `.lokirc.json`, or `loki.config.js`. · loki.js.org, 5 Oct 2026
- Image comparison
- Loki documents pixelmatch, GraphicsMagick, and looks-same as image comparison engines. · loki.js.org, 5 Oct 2026
- License
- The project repository identifies Loki as MIT licensed. · github.com, 4 Oct 2026
- License and maintainer
- The repository identifies Loki as MIT-licensed and lists Joel Arvidsson as author and Tomas Echeverri Valencia as maintainer. · github.com, 5 Oct 2026
- Maintainer
- The repository lists Joel Arvidsson as author and Tomas Echeverri Valencia as maintainer. · github.com, 4 Oct 2026
- Mobile targets
- Loki supports screenshots from the iOS simulator and Android emulator. · loki.js.org, 5 Oct 2026
- Optional dependencies
- GraphicsMagick is optional for the `gm` diffing engine, and Docker is optional for the `chrome.docker` target. · loki.js.org, 5 Oct 2026
- Prerequisite
- The getting-started guide lists Node 16 or newer as a prerequisite. · loki.js.org, 5 Oct 2026
- Purpose
- Loki tests Storybook projects for visual regressions by comparing screenshots with reference images. · loki.js.org, 5 Oct 2026
- React Native integration
- React Native projects can integrate Loki by importing `loki/configure-react-native` in `storybook/storybook.js`. · loki.js.org, 5 Oct 2026
- Reference images
- Loki compares screenshots of stories with reference images and creates visual diffs for review. · loki.js.org, 4 Oct 2026
- Security
- The command-line reference documents a `chromeDockerWithoutSeccomp` option, which defaults to false. · loki.js.org, 5 Oct 2026
- Storybook integration
- For recent Storybook versions, the documentation says no further integration is needed; older versions may require a React configuration import. · loki.js.org, 5 Oct 2026
- Storybook setup
- The getting started guide says recent Storybook versions need no extra integration for non React Native projects; React Native setup imports loki/configure-react-native. · loki.js.org, 4 Oct 2026
- Support
- The project provides documentation and a GitHub repository for its community and development. · loki.js.org, 5 Oct 2026
- Targets
- Supported targets include Chrome in Docker, local Chrome, the iOS simulator, and the Android emulator. · loki.js.org, 4 Oct 2026
- Test workflow
- The workflow creates reference screenshots, tests stories against them, reviews visual differences, and approves updated references. · loki.js.org, 5 Oct 2026
- Workflow limitation
- Loki does not start Storybook or simulator/emulator servers, so these must be running before tests. · github.com, 4 Oct 2026
Where Loki stands on Freedom251
- Visual Testing#3 of 17
- Visual Regression Testing Software#7 of 26
