> **Version 10.3** — **React** / **TypeScript**
> Also available:
- `?renderer=angular` for angular, vue, web-components
- `?language=js` for JavaScript
- `?codeOnly=true` for code snippets only
- other versions: Version 9 (`/docs/9/api/main-config/main-config.md`), Version 8 (`/docs/8/api/main-config/main-config.md`)

# Main configuration

The main configuration defines a Storybook project's behavior, including the location of stories, addons to use, feature flags, and other project-specific settings.

## The main configuration file: `main.js` or `main.ts`

This file must be valid ESM. In other words, it must use `import` instead of `require`, and neither `__dirname` nor `__filename` are available.

This configuration is defined in `.storybook/main.js|ts`, which is located relative to the root of your project.

A typical Storybook configuration file looks like this:

```ts
// .storybook/main.ts — CSF 3
// Replace your-framework with the framework you are using, e.g. react-vite, nextjs, vue3-vite, etc.

const config: StorybookConfig = {
  // Required
  framework: '@storybook/your-framework',
  stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
  // Optional
  addons: ['@storybook/addon-docs'],
  staticDirs: ['../public'],
};

export default config;
```

```ts
// .storybook/main.ts — CSF Next 🧪
// Replace your-framework with the framework you are using (e.g., react-vite, nextjs, nextjs-vite)

export default defineMain({
  // Required
  framework: '@storybook/your-framework',
  stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
  // Optional
  addons: ['@storybook/addon-docs'],
  staticDirs: ['../public'],
});
```

## config

An object to configure Storybook containing the following properties:

* [`framework`](./main-config-framework.mdx) (Required)
* [`stories`](./main-config-stories.mdx) (Required)
* [`addons`](./main-config-addons.mdx)
* [`babel`](./main-config-babel.mdx)
* [`babelDefault`](./main-config-babel-default.mdx)
* [`build`](./main-config-build.mdx)
* [`core`](./main-config-core.mdx)
* [`docs`](./main-config-docs.mdx)
* [`env`](./main-config-env.mdx)
* [`features`](./main-config-features.mdx)
* [`indexers`](./main-config-indexers.mdx) (⚠️ Experimental)
* [`logLevel`](./main-config-log-level.mdx)
* [`managerHead`](./main-config-manager-head.mdx)
* [`previewAnnotations`](./main-config-preview-annotations.mdx)
* [`previewBody`](./main-config-preview-body.mdx)
* [`previewHead`](./main-config-preview-head.mdx)
* [`refs`](./main-config-refs.mdx)
* [`staticDirs`](./main-config-static-dirs.mdx)
* [`swc`](./main-config-swc.mdx)
* [`tags`](./main-config-tags.mdx)
* [`typescript`](./main-config-typescript.mdx)
* [`viteFinal`](./main-config-vite-final.mdx)
* [`webpackFinal`](./main-config-webpack-final.mdx)