Solutions

Host Storybook behind company SSO

One command in your CI workflow. Your Storybook build becomes a permanent authenticated URL — accessible to designers, PMs, and engineers with a company email. No GitHub account needed for viewers.

Free tier available$49/month flat for TeamsGoogle + Microsoft SSOUnlimited viewers
terminal
$ display publish ./report.html
 
Uploading    47kb
Auth       Google Workspace ✓
 
✓ Published
 
→ https://view.display.dev/p/f474hfd/8f3kx9
 
Viewers    anyone at acme.com
Expires    never
Version    1
 
$ 

The command

dsp publish ./storybook-static/ --name "storybook-main"

Anyone with a @yourco.com email clicks the link, authenticates once with Google or Microsoft, and sees the full interactive Storybook — all stories, canvas, docs.


Storybook builds to a static directory. Hosting it with auth is the hard part.

npx storybook build produces a storybook-static/ directory. It's a complete static web app. The question is where it lives after that.

  • GitHub Pages (private): Requires Enterprise Cloud. Every viewer needs a GitHub account. PMs and designers don't have them.
  • Vercel: Requires a git project. SSO is a $300/month add-on.
  • Chromatic: Built for visual testing. Storybook hosting is a byproduct. Pricing scales with snapshot count.
  • S3 + CloudFront + Cognito: 1–2 days of setup, ongoing maintenance.

Display publishes the storybook-static/ directory at an authenticated URL in 15 seconds. $49/month flat for the entire team.


Display vs. alternatives for Storybook hosting

DisplayChromaticVercel + SSOGitHub Pages (private)
Storybook hosting
Google SSO✅ ($49/mo)✅ (paid)❌ ($300/mo add-on)
Microsoft SSO✅ ($49/mo)⚠️ Limited❌ ($300/mo add-on)
Visual regression testing
Any other HTML artifacts
Non-GitHub viewer access
Flat pricing (unlimited viewers)
Setup time15 sec~30 min20+ mingit push

CI/CD setup

GitHub Actions — publish on every merge to main:

name: Publish Storybook
 
on:
  push:
    branches: [main]
 
jobs:
  storybook:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
 
      - name: Install dependencies
        run: npm ci
 
      - name: Build Storybook
        run: npx storybook build --output-dir storybook-static
 
      - name: Install Display CLI
        run: npm install -g @display-dev/cli
 
      - name: Publish Storybook
        run: |
          dsp publish ./storybook-static/ \
            --name "storybook-main" \
            --title "Storybook (main)"
        env:
          DISPLAY_TOKEN: ${{ secrets.DISPLAY_TOKEN }}

Per-branch publishing:

- name: Publish Storybook (branch)
  run: |
    dsp publish ./storybook-static/ \
      --name "storybook-${{ github.ref_name }}" \
      --title "Storybook (${{ github.ref_name }})"
  env:
    DISPLAY_TOKEN: ${{ secrets.DISPLAY_TOKEN }}

This gives every branch its own URL — yourco.display.dev/storybook-main stays current, yourco.display.dev/storybook-feature-auth shows the feature branch state.


What designers and PMs see

A designer or PM receives the Storybook URL in a Slack message or Linear comment. They click it.

They're prompted to sign in with their company Google or Microsoft account — once, five seconds. They see the full interactive Storybook:

  • All component stories browsable in the sidebar
  • Interactive canvas with controls
  • Docs pages and prop tables
  • Dark/light mode switching

Everything Storybook built. No GitHub account. No CLI. No npm.


Pricing

Free — one-time password auth, 50MB, unlimited viewers
Teams ($49/month) — Google + Microsoft SSO, 25GB, custom domain, unlimited viewers

See all pricing →


Publish your Storybook build free →


Common questions.

Does Display render Storybook correctly?+

Yes. Storybook's build output (storybook-static/) is a self-contained static site with all assets. dsp publish ./storybook-static/ serves the directory at a URL with all relative paths resolved. The full Storybook UI renders as intended.

Can I publish both a main branch and feature branches?+

Yes. Use unique names per branch. --name storybook-main for main, --name storybook-feature-x for feature branches. Each gets its own permanent URL.

What about Storybook addons that make network requests?+

Static Storybook builds don't require a running server. Addons that make external API calls (MSW, API mocking) work if they mock responses in the static build. Addons that require a dev server won't work in a static export.

How large is a typical Storybook build?+

10–100MB depending on the number of stories, assets, and whether --no-minify is used. Display's Teams tier includes 25GB — enough for hundreds of builds in parallel.

Can I use Display for Storybook AND Playwright reports?+

Yes. Same CLI, same authentication layer. dsp publish ./storybook-static/ --name storybook-main and dsp publish ./playwright-report/ --name playwright-run-42. Both appear in your Display dashboard under the same workspace.

Publish your first artifact in 15 seconds.

Free tier. No credit card. One-time password auth on free, Google + Microsoft SSO on Teams ($49/month flat).