close

Configuration

Storybook Rsbuild provides several ways to customize the build process and behavior. This guide covers the configuration options available in your .storybook/main.ts.

Storybook Documentation

This guide focuses on Rsbuild-specific configurations. For general Storybook configuration (stories, addons, refs, etc.), please refer to the Storybook Configure documentation.

rsbuildFinal

The rsbuildFinal field gives you direct access to the Rsbuild configuration. You can use it to customize the build config, similar to webpackFinal in the Webpack builder.

This function receives the current Rsbuild config and an options object, and should return the modified config.

.storybook/main.ts
import type { 
import StorybookConfig
StorybookConfig
} from 'storybook-react-rsbuild';
const
const config: StorybookConfig
config
:
import StorybookConfig
StorybookConfig
= {
framework: string
framework
: 'storybook-react-rsbuild',
stories: string[]
stories
: ['../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
addons: never[]
addons
: [],
async
function rsbuildFinal(config: any, { configType }: {
    configType: any;
}): Promise<any>
rsbuildFinal
(
config: any
config
, {
configType: any
configType
}) {
// Customize Rsbuild config here if (
configType: any
configType
=== 'PRODUCTION') {
config: any
config
.performance = {
...
config: any
config
.performance,
removeConsole: boolean
removeConsole
: true,
}; } // You can modify config.source, config.tools, etc. // config.source = { ...config.source, alias: { ... } }; return
config: any
config
;
}, }; export default
const config: StorybookConfig
config
;

Builder Options

You can configure the underlying Rsbuild builder through the core.builder options.

.storybook/main.ts
import type { 
import StorybookConfig
StorybookConfig
} from 'storybook-react-rsbuild';
const
const config: StorybookConfig
config
:
import StorybookConfig
StorybookConfig
= {
framework: string
framework
: 'storybook-react-rsbuild',
stories: never[]
stories
: [],
core: {
    builder: {
        name: string;
        options: {
            rsbuildConfigPath: string;
            fsCache: boolean;
        };
    };
}
core
: {
builder: {
    name: string;
    options: {
        rsbuildConfigPath: string;
        fsCache: boolean;
    };
}
builder
: {
name: string
name
: 'storybook-builder-rsbuild',
options: {
    rsbuildConfigPath: string;
    fsCache: boolean;
}
options
: {
// Path to your existing rsbuild.config.ts // Defaults to the root rsbuild.config.ts if found
rsbuildConfigPath: string
rsbuildConfigPath
: './custom-rsbuild.config.ts',
// Enable filesystem cache for faster rebuilds // Default: false
fsCache: boolean
fsCache
: true,
// Enable lazy compilation (experimental) // lazyCompilation: true, // Specify Rsbuild environment to use (for multi-environment configs) // environment: 'web', }, }, }, }; export default
const config: StorybookConfig
config
;

Option Reference

OptionTypeDefaultDescription
rsbuildConfigPathstringcwd/rsbuild.config.tsPath to an existing Rsbuild config file to merge.
fsCachebooleanfalseEnables Rspack's persistent filesystem cache.
lazyCompilationbooleanfalseEnables lazy compilation for faster dev startup.
environmentstringundefinedSelects a specific environment from Rsbuild config.

Webpack Addons Compatibility

Since Rspack is compatible with the webpack loader/plugin API, you can often use Storybook addons designed for Webpack. To do this, use the webpackAddons field instead of addons.

.storybook/main.ts
import type { 
import StorybookConfig
StorybookConfig
} from 'storybook-react-rsbuild';
const
const config: StorybookConfig
config
:
import StorybookConfig
StorybookConfig
= {
framework: string
framework
: 'storybook-react-rsbuild',
stories: never[]
stories
: [],
// Addons that depend on Webpack loaders/plugins
webpackAddons: string[]
webpackAddons
: [
'@storybook/addon-coverage', ], }; export default
const config: StorybookConfig
config
;

Framework Options

Framework-specific options allow you to tailor the behavior for React, Vue, etc.

React Options

For storybook-react-rsbuild, you can configure reactDocgen and legacy root API.

.storybook/main.ts
import type { 
import StorybookConfig
StorybookConfig
} from 'storybook-react-rsbuild';
const
const config: StorybookConfig
config
:
import StorybookConfig
StorybookConfig
= {
framework: {
    name: string;
    options: {
        strictMode: boolean;
        legacyRootApi: boolean;
    };
}
framework
: {
name: string
name
: 'storybook-react-rsbuild',
options: {
    strictMode: boolean;
    legacyRootApi: boolean;
}
options
: {
// Configure strict mode
strictMode: boolean
strictMode
: true,
// Use legacy ReactDOM.render instead of createRoot (React 18+)
legacyRootApi: boolean
legacyRootApi
: false,
}, },
stories: never[]
stories
: [],
typescript: {
    reactDocgen: string;
    reactDocgenTypescriptOptions: {
        propFilter: (prop: any) => boolean;
    };
}
typescript
: {
// Configure docgen for TypeScript // 'react-docgen-typescript' | 'react-docgen' | false
reactDocgen: string
reactDocgen
: 'react-docgen-typescript',
// Pass options to react-docgen-typescript-plugin
reactDocgenTypescriptOptions: {
    propFilter: (prop: any) => boolean;
}
reactDocgenTypescriptOptions
: {
propFilter: (prop: any) => boolean
propFilter
: (
prop: any
prop
) => {
return
prop: any
prop
.parent ? !/node_modules/.
RegExp.test(string: string): boolean

Returns a Boolean value that indicates whether or not a pattern exists in a searched string.

@paramstring String on which to perform the search.
test
(
prop: any
prop
.parent.fileName) : true;
}, }, } }; export default
const config: StorybookConfig
config
;

TypeScript Options

Storybook Rsbuild uses @rsbuild/plugin-type-check for type checking. You can configure it via the typescript field.

.storybook/main.ts
import type { 
import StorybookConfig
StorybookConfig
} from 'storybook-react-rsbuild';
const
const config: StorybookConfig
config
:
import StorybookConfig
StorybookConfig
= {
framework: string
framework
: 'storybook-react-rsbuild',
stories: never[]
stories
: [],
typescript: {
    check: boolean;
    checkOptions: {
        typescript: {
            memoryLimit: number;
        };
    };
}
typescript
: {
// Enable/disable fork-ts-checker-webpack-plugin
check: boolean
check
: true,
// Options passed to fork-ts-checker-webpack-plugin
checkOptions: {
    typescript: {
        memoryLimit: number;
    };
}
checkOptions
: {
typescript: {
    memoryLimit: number;
}
typescript
: {
memoryLimit: number
memoryLimit
: 4096,
}, }, }, }; export default
const config: StorybookConfig
config
;

See Storybook TypeScript Docs for general TypeScript configuration.