Files
superset2/docs/developer_portal/testing/storybook.md
Evan Rusackas 85764701f5 docs(ci): complete bun/turborepo/changesets migration docs and workflows
- Update all CI workflows (pre-commit, tech-debt) to use Bun
- Update build scripts (js_build.sh, cypress_build.sh, eslint.sh) for Bun
- Add sync-package-versions.js script for release version alignment
- Simplify package.json scripts (build:packages, publish:packages)
- Add gitTag: false to changesets config to avoid repo tag clutter
- Remove obsolete Lerna scripts (build.js, lernaVersion.sh)
- Update RELEASING/README.md with comprehensive npm publishing guide
- Update all developer documentation for Bun usage
- Update LLM instruction files (AGENTS.md, dev-standard.mdc)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 23:20:33 -08:00

2.9 KiB

title, sidebar_position
title sidebar_position
Storybook 5

Storybook

Superset uses Storybook for developing and testing UI components in isolation. Storybook provides a sandbox to build components independently, outside of the main application.

Public Storybook

A public Storybook with components from the master branch is available at:

apache-superset.github.io/superset-ui

Running Locally

Main Superset Storybook

To run the main Superset Storybook locally:

cd superset-frontend

# Start Storybook (opens at http://localhost:6006)
bun run storybook

# Build static Storybook
bun run build-storybook

@superset-ui Package Storybook

The @superset-ui packages have a separate Storybook for component library development:

cd superset-frontend

# Install dependencies and build packages
bun install && bun run turbo:build

# Start the @superset-ui Storybook (opens at http://localhost:9001)
bun run plugins:storybook

Adding Stories

To an Existing Package

If stories already exist for the package, extend the examples array in the package's story file:

storybook/stories/<package>/index.js

To a New Package

  1. Add package dependencies:

    bun add <package>
    
  2. Create a story folder matching the package name:

    mkdir storybook/stories/superset-ui-<package>/
    
  3. Create an index.js file with the story configuration:

    export default {
      examples: [
        {
          storyPath: '@superset-ui/package',
          storyName: 'My Story',
          renderStory: () => <MyComponent />,
        },
      ],
    };
    

    Use the | separator for nested stories:

    storyPath: '@superset-ui/package|Category|Subcategory'
    

Best Practices

  • Isolate components: Stories should render components in isolation, without application context
  • Show variations: Create stories for different states, sizes, and configurations
  • Document props: Use Storybook's controls to expose configurable props
  • Test edge cases: Include stories for loading states, error states, and empty states