What is @storybook/cli?
The @storybook/cli package, also known as Storybook CLI, is a command-line tool that helps developers to quickly set up and configure Storybook in their project. Storybook is an open-source tool for developing UI components in isolation for React, Vue, Angular, and many other frameworks. The CLI automates many of the initial setup and configuration processes, making it easier to integrate Storybook into a project.
What are @storybook/cli's main functionalities?
Initialize Storybook
This command sets up Storybook in your project by detecting the project type (e.g., React, Vue, Angular) and installing the necessary dependencies and adding default configurations and examples.
npx -p @storybook/cli sb init
Add Storybook support for a specific type of project
This command explicitly sets up Storybook for a React project. You can replace 'react' with 'vue', 'angular', etc., depending on the project type you are working on.
npx -p @storybook/cli sb init --type react
Addons installation
This command helps in adding specific Storybook addons to enhance its functionality, such as '@storybook/addon-essentials' which includes a set of essential addons.
npx -p @storybook/cli sb add @storybook/addon-essentials
Other packages similar to @storybook/cli
react-scripts
Similar to @storybook/cli, react-scripts is used in the setup and configuration of React applications created with Create React App. It abstracts complex configurations for Babel, Webpack, and other tools. However, it does not specifically focus on component development environments like Storybook.
angular-cli
Angular CLI is a command-line interface tool that is used to initialize, develop, scaffold, and maintain Angular applications directly. It provides a similar ease of setup for Angular projects as @storybook/cli does for setting up Storybook in Angular projects.
vue-cli
Vue CLI is a full system for rapid Vue.js development, similar to Angular CLI for Angular. It provides project scaffolding, development tools, and build optimizations. It is similar to @storybook/cli in that it helps in setting up a development environment but is focused on Vue.js applications rather than component libraries.
Storybook
CLI
Storybook CLI (Command Line Interface) is the easiest way to add Storybook to your project.

Go to your project and run:
cd my-app
npx storybook@latest init
In addition to init
, the CLI also has other commands:
add
- add an addon and register itinfo
- print out system information for bug reportsupgrade
- upgrade to the latest version of Storybook (or a specific version)migrate
- run codemods to migrate your code
See the command-line help with -h
(including other useful commands) for details.
Core APIs
This package has multiple sub-exports to can be used to gain access to storybook's APIs.
storybook/components
This export contains a list of components very useful for building out addons.
We recommend addon-authors to use these components to ensure a consistent look and feel, and to reduce the amount of code they need to write.
storybook/theming
This export exposes a few utility functions to help writing components that automatically adapt to the current theme.
Useful for addon authors who want to make their addons theme-aware.
storybook/preview-api
This export contains the API that is available in the preview iframe.
storybook/manager-api
This export contains the API that is available in the manager iframe.
storybook/types
This export exposes a lot of TypeScript interfaces used throughout storybook, including for storybook configuration, addons etc.
8.6.0
The 8.6 release focuses on Storybook Test, which brings realtime component, accessibility, and visual UI tests to your favorite component workshop.
Here’s what’s new:
- 🎁 Storybook Test installer for out-of-the-box tests in new projects
- 🦾 Accessibility “todo” workflow to systematically fix a11y violations
- 🗜️ 80% smaller create-storybook package for much faster installs
- 🧪 Dozens of Test fixes based on user feedback
- 📕 Docs fixes for table of contents, code snippets, and more
- 🚨 Key security fixes for Vite and ESbuild
- 💯 Hundreds more improvements
<details>
<summary>List of all updates</summary>
- Addon A11y: Introduce parameters.a11y.test - #30516, thanks @valentinpalkovic!
- Addon-A11y: Fix preset loading when loaded via getAbsolutePath - #30563, thanks @valentinpalkovic!
- Addon-Docs: Change URL hash when TOC item is clicked, and fix TOC loading bugs - #30130, thanks @Sidnioulz!
- Addon-docs: Consider custom code snippet in story code panel and update styles - #30179, thanks @larsrickert!
- Addon-Test: Add telemetry data for Focused Tests - #30568, thanks @JReinhold!
- Addon-Test: Fix config and watch mode inconsistencies - #30491, thanks @JReinhold!
- Addon-Test: Fix console error in build mode - #30625, thanks @JReinhold!
- Addon-Test: Make sure that only one global portable story config is ever loaded - #30582, thanks @kasperpeulen!
- Angular: Fix accent character issue - #30276, thanks @valentinpalkovic!
- Angular: Support experimental zoneless mode - #28657, thanks @anedomansky!
- Angular: Support v19.2 when @angular/animations is not installed - #30611, thanks @valentinpalkovic!
- Builder-Vite: Fix resolve id warning - #30511, thanks @valentinpalkovic!
- Builder-Vite: Fix runtime and iframe 404 on first load - #30567, thanks @valentinpalkovic!
- Bun: Add support for text lock file - #30160, thanks @Arctomachine!
- Cleanup: Remove unused constants in viewport addon - #30479, thanks @Guria!
- CLI: Don't initially select Documentation and Testing features - #30599, thanks @ghengeveld!
- CLI: Fix peer dep issues for npm users during upgrade - #30616, thanks @valentinpalkovic!
- CLI: Fix printing of selected features - #30605, thanks @ghengeveld!
- CLI: Make telemetry data an object - #30581, thanks @ndelangen!
- CLI: Prompt users for RN vs RNW on init - #30635, thanks @shilman!
- CLI: Reimplement features prompt logic to handle
--yes
and fix --features
- #30534, thanks @ghengeveld! - CLI: Remove Storybook dependencies before adding re-adding them - #30600, thanks @valentinpalkovic!
- CLI: Use correct storybook internals import in automigration - #30290, thanks @yannbf!
- Codemod: Always get real path of files - #30650, thanks @yannbf!
- Codemod: Handle addon essentials differently in csf factories - #30649, thanks @yannbf!
- Codemod: Migrate meta.args to meta.input.args in csf factories - #30641, thanks @yannbf!
- Codemod: Use real path from symbolic links - #30642, thanks @yannbf!
- Core: Add
UniversalStore
API to sync state/events between multiple environments - #30445, thanks @JReinhold! - Core: Add connection timeout notification - #30288, thanks @valentinpalkovic!
- Core: Allow empty render functions in CSF factories - #30565, thanks @kasperpeulen!
- Core: Always place cache dir inside
node_modules
- #30643, thanks @ndelangen! - Core: Don't set process.env.NODE_ENV and process.env.DEV - #30651, thanks @valentinpalkovic!
- Core: Fix addon essentials preview preset - #30647, thanks @yannbf!
- Core: Fix extracting import path when it's not a core addon - #30640, thanks @yannbf!
- Core: Fix invalid Websocket termination - #30408, thanks @valentinpalkovic!
- Core: Fix statically serving single files and multiple dirs on the same endpoint - #30467, thanks @JReinhold!
- Core: Fix undeclared internal dependencies - #30566, thanks @kasperpeulen!
- Core: Improve type compatibility with React 19 - #30031, thanks @mrginglymus!
- Core: Move CSF to monorepo - #30488, thanks @kasperpeulen!
- Csf Tools: Allow ConfigFile to create more import syntaxes - #30204, thanks @yannbf!
- CSF: Add support for CSF factories - #30197, thanks @kasperpeulen!
- Essentials: Fix
addon-essentials
not working when used with getAbsolutePath
- #30557, thanks @JReinhold! - Manager: Escape single quotes in dynamic import paths in wrapManagerEntries function - #30278, thanks @valentinpalkovic!
- Manager: Fix escaping of single quotes in dynamic import paths - #30278, thanks @valentinpalkovic!
- Manager: Fix panel reactivity - #30638, thanks @valentinpalkovic!
- React: Fix incorrect import in preview.ts - #30542, thanks @mrginglymus!
- Svelte: Fix conflicting variable names and support for
+page.svelte
files - #30369, thanks @xeho91! - Test addon: Only update
vitest.config.ts
with workspaces, otherwise create vitest.workspace.ts
- #30583, thanks @ghengeveld!
</details>