What is @storybook/react?
@storybook/react is a development environment for UI components. It allows developers to create components independently and showcase components interactively in an isolated development environment. Storybook helps in building UI components in isolation from the business logic and context of the app, which makes it easier to develop hard-to-reach states and edge cases.
What are @storybook/react's main functionalities?
Component Story Format (CSF)
CSF is an ES Module-based standard for defining component examples. This format is simple and portable. Developers can write their component stories in plain JavaScript objects.
import React from 'react';
import { Button } from './Button';
export default {
title: 'Example/Button',
component: Button,
};
const Template = (args) => <Button {...args} />;
export const Primary = Template.bind({});
Primary.args = {
primary: true,
label: 'Button',
};
Addons
Addons are essentially plugins that extend Storybook's core functionalities. With addons, developers can add features like knobs to dynamically change props, accessibility checks, and story source code display.
import { withKnobs, text, boolean, number } from '@storybook/addon-knobs';
export default {
title: 'Example/Button',
decorators: [withKnobs],
};
export const DynamicVariables = () => {
const name = text('Name', 'Aragon');
const age = number('Age', 30);
const content = `I am ${name} and I'm ${age} years old.`;
return <div>{content}</div>;
};
Controls
Controls give the ability to interact with a component's arguments dynamically without needing to code. It's a more robust version of the addon-knobs but built into Storybook by default.
export default {
title: 'Example/Button',
component: Button,
argTypes: {
backgroundColor: { control: 'color' },
size: {
control: { type: 'select', options: ['small', 'medium', 'large'] },
},
},
};
export const Primary = (args) => <Button {...args} />;
Primary.args = {
primary: true,
label: 'Button',
};
Other packages similar to @storybook/react
react-cosmos
React Cosmos is a development tool for creating reusable React components. It scans your project for components and enables you to render components with any context or state. Compared to @storybook/react, React Cosmos focuses more on the component's lifecycle and state rather than the component's variations.
docz
Docz leverages MDX files to help you document your components easily. It's more focused on documentation than interactive development. Unlike @storybook/react, Docz provides a more straightforward approach to documenting components using markdown, but it lacks some of the interactive development features that Storybook offers.
Storybook for React
Storybook for React is a UI development environment for your React components.
With it, you can visualize different states of your UI components and develop them interactively.
Storybook runs outside of your app.
So you can develop UI components in isolation without worrying about app specific dependencies and requirements.
Getting Started
cd my-react-app
npx -p @storybook/cli@rc sb init
For more information visit: storybook.js.org
Storybook also comes with a lot of addons and a great API to customize as you wish.
You can also build a static version of your storybook and deploy it anywhere you want.
Here are some featured storybooks that you can reference to see how Storybook works:
Typescript
If you are using Typescript, make sure you have the type definitions installed via yarn add @types/node @types/react @types/storybook__react --dev
.
Docs