For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /guide/integrations/rslib.md.
close

Rslib

This addon loads the reusable parts of the Rsbuild config from your Rslib configuration file while keeping library-only settings out of the Storybook preview build.

It also lets you develop the mf (Module Federation) format inside Storybook.

See the React component library example for a full reference implementation.

Getting started

Installation

npm
yarn
pnpm
bun
deno
npm install @rsbuild/core storybook-addon-rslib -D

Install @rsbuild/core directly so the version that the addon and your framework package use is pinned in your own lockfile. Use this alongside the framework package from your project's framework guide (e.g. storybook-react-rsbuild).

Setup .storybook/main.ts

.storybook/main.ts
export default {
  
addons: string[]
addons
: ['storybook-addon-rslib'],
}

Before the selected Rslib config is merged into Storybook, it passes through the same inherited-config boundary documented in Builder Options. Plugins remain inherited; use the Storybook CLI's process.env.STORYBOOK flag to conditionally omit an app-only side-effect plugin. Use modifyLibRsbuildConfig to restore a stripped field explicitly for Storybook, or use Storybook's rsbuildFinal for final configuration. Both hooks run after inherited fields are stripped.

Or configure the addon manually:

.storybook/main.ts
export default {
  
addons: {
    name: string;
    options: {};
}[]
addons
: [
{
name: string
name
: 'storybook-addon-rslib',
options: {}
options
: {
// Check options section. }, }, ], }

Module Federation

Review the Rslib Module Federation documentation to prepare the mf output before loading it in Storybook.

Options

export interface AddonOptions {
  rslib?: {
    /**
     * `cwd` passed to loadConfig of Rslib
     * @default undefined
     */
    cwd?: string
    /**
     *  `path` passed to loadConfig of Rslib
     * @default undefined
     */
    configPath?: string
    /**
     * The lib config index in `lib` field to use, will be merged with the other fields in the config.
     * Set to a number to use the lib config at that index.
     * Set to `false` to disable using the lib config.
     * @default 0
     */
    libIndex?: number | false
    /**
     * Modify the Rslib lib config before transforming it to Rsbuild config which will be merged
     * with Storybook. You can modify the configuration in the config parameters in place.
     * @experimental subject to change at any time
     * @default undefined
     */
    modifyLibConfig?: (config: LibConfig) => void
    /**
     * Modify the Rsbuild config transformed from lib config after inherited fields are stripped
     * and before merging with Storybook config. You can modify the configuration in the config
     * parameters in place, including explicitly restoring stripped fields.
     * @experimental subject to change at any time
     * @default undefined
     */
    modifyLibRsbuildConfig?: (config: RsbuildConfig) => void
  }
}