Storybook CLI: Develop, document, and test UI components in isolation
—
Add, remove, and manage Storybook addons with automatic configuration and dependency handling. The addon management system handles package installation, configuration updates, and postinstall scripts to seamlessly integrate addons into your Storybook setup.
Installs and configures a Storybook addon in your project.
storybook add <addon> [options]
Parameters:
addon Name of the addon package to install
Options:
--package-manager <npm|pnpm|yarn1|yarn2|bun> Force package manager for installing dependencies
-c, --config-dir <dir-name> Directory where to load Storybook configurations from
--skip-install Skip installing deps
-s, --skip-postinstall Skip package specific postinstall config modifications
-y, --yes Skip prompting the user
--skip-doctor Skip doctor checkUsage Examples:
# Add a popular addon
npx storybook add @storybook/addon-docs
# Add addon with version specifier
npx storybook add @storybook/addon-controls@^7.0.0
# Add addon and skip dependency installation
npx storybook add @storybook/addon-actions --skip-install
# Add addon with specific package manager
npx storybook add @storybook/addon-viewport --package-manager yarn1
# Add addon in custom config directory
npx storybook add @storybook/addon-knobs --config-dir .custom-storybook
# Add addon without prompts
npx storybook add @storybook/addon-backgrounds --yes
# Add addon and skip postinstall configuration
npx storybook add @storybook/addon-links --skip-postinstallUninstalls and removes a Storybook addon from your project.
storybook remove <addon> [options]
Parameters:
addon Name of the addon package to remove
Options:
--package-manager <npm|pnpm|yarn1|yarn2|bun> Force package manager for installing dependencies
-c, --config-dir <dir-name> Directory where to load Storybook configurations from
-s, --skip-install Skip installing depsUsage Examples:
# Remove an addon
npx storybook remove @storybook/addon-docs
# Remove addon with specific package manager
npx storybook remove @storybook/addon-controls --package-manager pnpm
# Remove addon and skip dependency uninstallation
npx storybook remove @storybook/addon-actions --skip-install
# Remove addon from custom config directory
npx storybook remove @storybook/addon-viewport --config-dir .custom-storybookThe system can parse addon names with version specifiers:
# Different version specification formats
npx storybook add @storybook/addon-docs@7.0.1 # Exact version
npx storybook add @storybook/addon-docs@^7.0.0 # Compatible version
npx storybook add @storybook/addon-docs@latest # Latest version
npx storybook add addon-name@beta # Beta versionWhen adding addons, Storybook automatically:
Common addons you can install:
# Essential addons
npx storybook add @storybook/addon-essentials # Bundle of common addons
npx storybook add @storybook/addon-docs # Documentation
npx storybook add @storybook/addon-controls # Interactive controls
npx storybook add @storybook/addon-actions # Action logging
# UI addons
npx storybook add @storybook/addon-viewport # Viewport simulation
npx storybook add @storybook/addon-backgrounds # Background colors
npx storybook add @storybook/addon-toolbars # Custom toolbar items
# Testing addons
npx storybook add @storybook/addon-a11y # Accessibility testing
npx storybook add @storybook/addon-jest # Jest test results
npx storybook add chromatic # Visual testing
# Design system addons
npx storybook add @storybook/addon-design-tokens # Design tokens
npx storybook add @storybook/addon-figma # Figma integrationAddons can define postinstall scripts for automatic configuration:
Full integration with all major package managers:
import { add } from "@storybook/cli";
/**
* Add an addon programmatically
* @param addon - The addon name/package
* @param options - Configuration options
*/
function add(addon: string, options: PostinstallOptions): Promise<void>;
interface PostinstallOptions {
packageManager: PackageManagerName;
configDir: string;
yes?: boolean;
skipInstall?: boolean;
}
/**
* Extract addon name and version specifier from input string
* @param addon - The input string (e.g., "@storybook/addon-docs@7.0.1")
* @returns Tuple of [addonName, versionSpecifier]
*/
function getVersionSpecifier(addon: string): readonly [string, string | undefined];Programmatic Examples:
import { add, getVersionSpecifier } from "@storybook/cli";
// Add addon programmatically
await add("@storybook/addon-docs", {
packageManager: "npm",
configDir: ".storybook",
yes: true
});
// Parse addon name and version
const [name, version] = getVersionSpecifier("@storybook/addon-docs@7.0.1");
// name: "@storybook/addon-docs", version: "7.0.1"Install with Tessl CLI
npx tessl i tessl/npm-storybook--cli