UI Verify
All docs
Recipes2 min readUpdated

Hosted Storybook with a stable per-branch URL

Browse, share, or point a CI test-runner at your Storybook: UI Verify re-hosts every build at a stable per-branch URL that always serves the latest build.

When UI Verify captures a build it keeps the built Storybook and re-serves it, so the exact Storybook behind any build stays browsable: open a story, run its play function, flip its controls, not just look at the captured screenshot. Each build gets its own URL, and each branch gets a stable one that always points at its latest build.

Two URLs: one per build, one per branch

A per-build URL, https://<build-id>.storybook.uiverify.ai, serves that one build forever and never changes, so it is the permalink to link from a specific pull request. A per-branch URL, https://<branch>--<project-id>.storybook.uiverify.ai, is the stable reference: it always serves the branch's latest build, so a link to main--<project-id> follows main as new builds land.

The per-branch URL uses your project ID, not its name, so renaming the project never breaks a bookmarked or CI-configured link. It works for a default branch whose name is a valid host label (main, develop); a branch with a slash or other special characters uses the per-build URL instead.

Where do I find my Storybook URL?

Open your project's API settings (Manage, then API key). Next to your project API key, UI Verify shows the stable live-Storybook URL for your default branch, ready to copy. It appears once your default branch has a build with a Storybook to serve, so the link never points at nothing.

Who can open it?

For a public project both URLs open to anyone with no login, so the link is shareable and a headless tool can load it. For a private project a signed-in member opens it from the build page with Open Storybook; the bundle is not open to anonymous requests.

Point a Storybook test-runner at a public project's stable URL

Because the per-branch URL always serves the branch's latest Storybook, a CI job on a public project can run Storybook's test-runner against it instead of building Storybook again. Point --url at your branch alias:

bash
npx test-storybook --url https://main--<project-id>.storybook.uiverify.ai
This headless recipe is for public projects, which serve with no credential. The test-runner has no way to attach your API key to the many asset and per-story requests it makes, so a private project's hosted Storybook is for browsing by signed-in members, not for pointing a headless test-runner at.

How is this different from the captured screenshot?

The hosted Storybook is a live render: opening a story runs its play function and real DOM, exactly as your local Storybook would. The screenshot UI Verify diffs on your pull request is the frozen capture, taken with capture-time determinism (a pinned clock, settled animations). So the hosted view is for exploring and sharing, and the diff on the pull request is the exact reviewed pixels. See how visual testing works and set up Storybook visual testing.

Visual testing for agents

UI Verify captures your UI on every pull request and an AI judge tells an intended change from a real regression. See how it works.

Get started