It has three different modes:
- CRA - the mode for Create React App apps specifically
- V6 - the default mode for version 6.x and below
- V7 - a new mode slated to become the default in SB7.x
CRA apps configured with
@storybook/preset-create-react-app use CRA's babel handling to behave as close as possible to your actual application. None of the other documentation on this page applies.
Storybook works with evergreen browsers by default.
Here are some key features of Storybook's Babel configurations.
We have added ES2016 support with Babel for transpiling your JS code.
Check out our source to learn more about these plugins.
If your project has a
.babelrc file, we'll use that instead of the default config file.
You can also place a
.storybook/.babelrc file to use a unique configuration for Storybook only.
If you need, you can customize the default Babel configuration used by Storybook. Update your
.storybook/main.js and add the
babel field with the options you want to use:
V7 mode is a new option available in Storybook 6.4+ behind a feature flag.
Its goal is to make the Babel configuration simpler, less buggy, easier to troubleshoot, and more consistent with the rest of the JS ecosystem.
In V7 mode, you are responsible for configuring Babel using your
.babelrc file, and Storybook does not provide any default. Storybook's frameworks and addons may provide minor programmatic modifications to the babel configuration.
To activate V7 mode, set the feature flag in your
For detailed instructions on migrating from
V6 mode, please see MIGRATION.md.
If your app does not include a babelrc file, and you need one, you can create it by running the following command in your project directory:
Once the command completes, you should have a
.babelrc.json file created in the root directory of your project, similar to the following example:
Depending on your environment, you may need to install additional package dependencies.
Babel has two different configuration modes: babelrc and babel config. As explained in more detail in the docs:
- babelrc configures babel for files in the same folder (or descendant folders) of the location of the babelrc
- babel config configures babel globally
Babel recommends to use babelrc, and it's what Storybook generates when you run
npx storybook babelrc to migrate from v6 mode. If your stories are located in the current project directory (e.g.,
stories: ['../src/**/*.stories.js']) this approach will work well.
However, when your Storybook refers to files outside of the current project directory (e.g.,
stories: ['../../some-other-directory/**/*.stories.js']), the babelrc will not apply to those files. However, a babel config will, and is the recommended approach in that situation.
To troubleshoot your babel configuration, set the
BABEL_SHOW_CONFIG_FOR environment variable. For example, to see how Storybook is transpiling your
.storybook/preview.js file, add the following environment variable:
When the command finishes running, it will display the available babel configuration for the
.storybook/preview.js file. You can use this information to debug issues with transpilation.
For more info, please refer to the Babel documentation.