Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
ef260c3
Update ./docs/versions/next.json for v10.4.0-alpha.0
storybook-bot Mar 18, 2026
69d6f37
Update ./docs/versions/next.json for v10.4.0-alpha.1
storybook-bot Mar 19, 2026
3b5c56e
Update ./docs/versions/next.json for v10.4.0-alpha.2
storybook-bot Mar 19, 2026
e9b881a
Merge pull request #34153 from storybookjs/fix-persistent-story-viewport
ghengeveld Mar 19, 2026
c4d4fbd
Merge pull request #34214 from storybookjs/fix/repro-command
yannbf Mar 19, 2026
52ac06b
Merge pull request #34179 from storybookjs/norbert/test-runner-ci-flake
yannbf Mar 17, 2026
c1ad926
Write changelog for 10.3.1 [skip ci]
storybook-bot Mar 19, 2026
05a91dd
Merge pull request #34210 from storybookjs/version-patch-from-10.3.0
yannbf Mar 19, 2026
24c2c2c
Bump version from "10.3.0" to "10.3.1" [skip ci]
storybook-bot Mar 19, 2026
71180f5
Merge pull request #34231 from dannyhw/dannyhw/fix/rnw-vite8-support
shilman Mar 20, 2026
56512d8
Merge pull request #34236 from storybookjs/shilman/cli-tweak
yannbf Mar 20, 2026
2f97e32
Merge pull request #34158 from storybookjs/ci-danger-release-jobs
yannbf Mar 20, 2026
1d33cb1
Write changelog for 10.3.2 [skip ci]
storybook-bot Mar 20, 2026
c7de38c
Merge pull request #34237 from storybookjs/version-patch-from-10.3.1
yannbf Mar 23, 2026
308656f
Bump version from "10.3.1" to "10.3.2" [skip ci]
storybook-bot Mar 23, 2026
415e48b
Merge pull request #34269 from storybookjs/shilman-patch-1
yannbf Mar 23, 2026
6a398c5
Merge pull request #34193 from storybookjs/valentin/streamline-config…
valentinpalkovic Mar 23, 2026
dcd184d
Write changelog for 10.3.3 [skip ci]
storybook-bot Mar 23, 2026
ae2e79c
Merge pull request #34272 from storybookjs/version-patch-from-10.3.2
yannbf Mar 23, 2026
b0acfb4
Bump version from "10.3.2" to "10.3.3" [skip ci]
storybook-bot Mar 23, 2026
c9d07af
Update ./docs/versions/next.json for v10.4.0-alpha.3
storybook-bot Mar 23, 2026
14febc1
Merge pull request #34212 from storybookjs/norbert/dts-sequential-gen…
yannbf Mar 23, 2026
5bc8686
Merge pull request #34281 from storybookjs/fix-stackblitz-websocket
ghengeveld Mar 23, 2026
4ce1648
Merge pull request #34274 from chida09/fix/34270-builder-vite-hash-co…
valentinpalkovic Mar 25, 2026
bf06f9a
Merge pull request #34203 from mixelburg/fix/a11y-context-clear-timeo…
valentinpalkovic Mar 26, 2026
756f6e3
Merge pull request #34335 from beeswhacks/upgrade-vite-plugin-react-d…
valentinpalkovic Mar 26, 2026
ff9d121
Merge pull request #34316 from storybookjs/jeppe/fix-error-reports-on…
JReinhold Mar 27, 2026
7ad88e9
Merge pull request #33841 from storybookjs/kasper/docs-rdt-monorepo-faq
kylegach Mar 27, 2026
4fb52a2
Merge pull request #34393 from mixelburg/fix/docgen-resolver-tsx-fall…
valentinpalkovic Mar 30, 2026
4eb227b
Build: Move prettier to oxfmt
huang-julien Mar 19, 2026
21d37fd
Merge pull request #34224 from storybookjs/chore/removeprettierrc
kasperpeulen Mar 20, 2026
f997746
Merge pull request #34273 from storybookjs/fix/recast_windows_lf_crlf
yannbf Mar 23, 2026
60e8c15
Write changelog for 10.3.4 [skip ci]
storybook-bot Mar 31, 2026
a1ca843
Merge pull request #34361 from storybookjs/valentin/fix-csf4-vitest-i…
valentinpalkovic Mar 27, 2026
7a820b1
Merge pull request #34245 from storybookjs/chore/root_oxfmt
huang-julien Mar 24, 2026
729b118
Merge pull request #34306 from storybookjs/nx/fmt
huang-julien Mar 24, 2026
18f4fd9
Dedupe lock file
valentinpalkovic Mar 31, 2026
31ea1c0
Merge pull request #34275 from storybookjs/version-patch-from-10.3.3
valentinpalkovic Apr 2, 2026
4eff9cd
Bump version from "10.3.3" to "10.3.4" [skip ci]
storybook-bot Apr 2, 2026
e085c39
Update ./docs/versions/next.json for v10.4.0-alpha.7
storybook-bot Apr 2, 2026
a549681
Merge pull request #34363 from storybookjs/fix-versions-formatting
JReinhold Mar 27, 2026
ee73b65
Merge pull request #34455 from seojcarlos/fix/remove-duplicate-words
valentinpalkovic Apr 7, 2026
525647e
Write changelog for 10.3.5 [skip ci]
storybook-bot Apr 7, 2026
4e957ee
Apply suggestion from @JReinhold
JReinhold Apr 7, 2026
0b3ac65
Merge pull request #34408 from storybookjs/yann/disable-component-man…
JReinhold Apr 7, 2026
9df76e2
Update ./docs/versions/next.json for v10.4.0-alpha.8
storybook-bot Apr 7, 2026
972f84f
Merge pull request #34444 from storybookjs/version-patch-from-10.3.4
JReinhold Apr 7, 2026
e486d38
Bump version from "10.3.4" to "10.3.5" [skip ci]
storybook-bot Apr 7, 2026
9d95713
Merge branch 'latest-release'
storybook-bot Apr 7, 2026
4ba9069
Update ./docs/versions/next.json for v10.4.0-alpha.9
storybook-bot Apr 14, 2026
cb56662
Update ./docs/versions/next.json for v10.4.0-alpha.10
storybook-bot Apr 16, 2026
5ff489b
Merge pull request #34502 from storybookjs/docs/ai_contribution_guide
huang-julien Apr 8, 2026
e20dc8d
Merge pull request #34071 from Axadali/33735-global-style-issue
JReinhold Apr 23, 2026
951c27c
Merge pull request #34430 from venkat22022202/fix/eslint-deprecated-s…
valentinpalkovic Apr 27, 2026
2a4bacd
Write changelog for 10.3.6 [skip ci]
storybook-bot Apr 29, 2026
f7809a8
Merge pull request #34509 from storybookjs/fix/vite-plus-detection
huang-julien Apr 13, 2026
4cd495a
Merge pull request #34550 from storybookjs/fix/vite-plus-devdepsoxfmt
huang-julien Apr 15, 2026
8879a0f
remove .ts extension
JReinhold Apr 29, 2026
b5aca63
Merge pull request #34511 from storybookjs/version-patch-from-10.3.5
JReinhold Apr 29, 2026
b8748e4
Bump version from "10.3.5" to "10.3.6" [skip ci]
storybook-bot Apr 29, 2026
0b9896d
Merge pull request #34641 from storybookjs/copilot/fix-peer-dependenc…
JReinhold Apr 28, 2026
6ed309b
Write changelog for 10.3.7 [skip ci]
storybook-bot May 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/fork-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
- name: check
run: yarn task --task check

prettier:
formatting:
name: Core Formatting
if: github.repository_owner != 'storybookjs'
runs-on: ubuntu-latest
Expand All @@ -39,8 +39,8 @@ jobs:
with:
install-code-deps: true

- name: prettier
run: cd code && yarn lint:prettier --check .
- name: oxfmt
run: cd code && yarn lint:fmt

test:
strategy:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
runs-on: ubuntu-latest
env:
ALL_TASKS: compile,check,knip,test,pretty-docs,lint,sandbox,build,e2e-tests,e2e-tests-dev,test-runner,vitest-integration,check-sandbox,e2e-ui,jest,vitest,playwright-ct,cypress
ALL_TASKS: compile,check,knip,test,lint,fmt,sandbox,build,e2e-tests,e2e-tests-dev,test-runner,vitest-integration,check-sandbox,e2e-ui,jest,vitest,playwright-ct,cypress
steps:
- uses: actions/checkout@v4
with:
Expand Down
4 changes: 0 additions & 4 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
if [ -z "$SKIP_STORYBOOK_GIT_HOOKS" ]; then
cd code
yarn lint-staged

cd ../scripts
yarn lint-staged
fi
11 changes: 11 additions & 0 deletions .lintstagedrc.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { detectAgent } from 'std-env';

const fmtCmd = detectAgent().name ? 'oxfmt' : 'oxfmt --check';

export default {
'code/**/*.{js,jsx,mjs,ts,tsx,html,json}': [fmtCmd, 'yarn --cwd code lint:js:cmd'],
'scripts/**/*.{html,js,json,jsx,mjs,ts,tsx}': ['yarn --cwd scripts lint:js:cmd'],
'docs/_snippets/**/*.{js,jsx,mjs,ts,tsx,html,json}': [fmtCmd],
'**/*.ejs': ['yarn --cwd scripts exec ejslint'],
'**/package.json': ['yarn --cwd scripts lint:package'],
};
1 change: 0 additions & 1 deletion .nx/workflows/distribution-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ assignment-rules:
- compile
- check
- lint
- pretty-docs
- knip
run-on:
- agent: linux-js
Expand Down
69 changes: 69 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"printWidth": 100,
"tabWidth": 2,
"bracketSpacing": true,
"trailingComma": "es5",
"singleQuote": true,
"arrowParens": "always",
"sortPackageJson": false,
"ignorePatterns": [
"*.bundle.js",
"*.js.map",
".yarn",
".vscode",
".nx/cache",
".nx/workspace-data",
"dist",
"build",
"bench",
"coverage",
"node_modules",
"storybook-static",
"built-storybooks",
"ember-output",
"code/core/assets",
"code/core/report",
"code/core/src/core-server/presets/common-manager.ts",
"code/core/src/core-server/utils/__search-files-tests__",
"code/core/src/core-server/utils/__mockdata__/src/Empty.stories.ts",
"code/lib/codemod/src/transforms/__testfixtures__",
"code/frameworks/angular/template/**",
"code/lib/eslint-plugin",
"docs/versions/*.json",
".prettierrc",
"test-storybooks",
"*.yml",
"*.yaml",
"*.md",
"*.mdx",
"!docs/_snippets/**"
],
"overrides": [
{
"files": ["docs/_snippets/**"],
"options": {
"trailingComma": "all"
}
},
{
"files": ["*.md", "*.mdx"],
"options": {
"importOrderSeparation": false,
"importOrderSortSpecifiers": false
}
},
{
"files": ["*.component.html"],
"options": {
"parser": "angular"
}
},
{
"files": ["**/frameworks/angular/src/**/*.ts", "**/frameworks/angular/template/**/*.ts"],
"options": {
"parser": "babel-ts"
}
}
]
}
2 changes: 1 addition & 1 deletion .serena/memories/project_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Current version: 10.2.x (as of March 2026)
- **Monorepo Tool**: NX (with `--no-cloud` flag required to avoid NX Cloud login issues)
- **Test Runner**: Vitest (primary), Playwright (E2E)
- **Linting**: ESLint 8
- **Formatting**: Prettier 3.7+
- **Formatting**: Oxfmt
- **Bundlers**: Vite 7, Webpack 5, esbuild
- **UI Libraries**: React 18, react-aria (use specific submodules, not root imports)
- **Build System**: Custom build via `jiti ./scripts/build/build-package.ts`
Expand Down
5 changes: 3 additions & 2 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig",
"unifiedjs.vscode-mdx",
"yzhang.markdown-all-in-one"
"yzhang.markdown-all-in-one",
"oxc.oxc-vscode"
]
}
}
42 changes: 21 additions & 21 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,30 +1,25 @@
{
"[javascript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"editor.formatOnSave": true
},
"[javascriptreact]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"editor.formatOnSave": true
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[typescriptreact]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"[javascript][javascriptreact][typescript][typescriptreact][json][jsonc]": {
"editor.defaultFormatter": "oxc.oxc-vscode",
"editor.formatOnSave": true
},
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
"source.fixAll.eslint": "explicit",
"source.fixAll.oxc": "explicit"
},
"editor.formatOnSave": true,
"editor.tabSize": 2,
"eslint.format.enable": true,
"eslint.options": {
"cache": true,
"cacheLocation": ".cache/eslint",
"extensions": [".js", ".jsx", ".mjs", ".json", ".ts", ".tsx"]
"extensions": [
".js",
".jsx",
".mjs",
".json",
".ts",
".tsx"
]
},
"eslint.useESLintClass": true,
"eslint.validate": [
Expand All @@ -35,14 +30,17 @@
"typescript",
"typescriptreact"
],
"eslint.workingDirectories": ["./code", "./scripts"],
"eslint.workingDirectories": [
"./code",
"./scripts"
],
"files.associations": {
"*.js": "javascriptreact"
"*.js": "javascriptreact",
".oxfmtrc.json": "json"
},
"javascript.preferences.importModuleSpecifier": "relative",
"javascript.preferences.quoteStyle": "single",
"js/ts.implicitProjectConfig.target": "ESNext",
"prettier.ignorePath": "./code/.prettierignore",
"storyExplorer.storybookConfigDir": "./code/.storybook",
"typescript.format.enable": false,
"typescript.preferences.importModuleSpecifier": "relative",
Expand All @@ -52,4 +50,6 @@
"typescript.tsdk": "./typescript/lib",
"vitest.workspaceConfig": "./code/vitest.workspace.ts",
"vitest.rootConfig": "./code/vitest.workspace.ts",
}
"oxc.fmt.configPath": ".oxfmtrc.json",
"oxc.enable.oxlint": false,
}
4 changes: 3 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ When writing tests:

After changing files:

1. Format with `yarn prettier --write <file>`
1. Format with `cd code && oxfmt`
2. Lint with `yarn --cwd code lint:js:cmd <file-relative-to-code-folder> --fix` or `cd code && yarn lint:js:cmd <file-relative-to-code-folder>`
3. Run relevant tests before submitting a PR

Expand All @@ -243,6 +243,8 @@ Use Storybook loggers instead of raw `console.*` in normal code paths:
- Server-side: `storybook/internal/node-logger`
- Client-side: `storybook/internal/client-logger`

The pre-commit hook automatically detects AI agents (via `std-env`) and switches from check-only to write mode, so formatting is auto-fixed when agents commit.

Avoid `console.log`, `console.warn`, and `console.error` unless the file is isolated enough that importing the logger is not reasonable.

## Troubleshooting
Expand Down
44 changes: 43 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,46 @@
## 10.3.7

- Fix: Add vite-plus vendored libraries version detection - [#34509](https://github.com/storybookjs/storybook/pull/34509), thanks @huang-julien!
- React: Add optional React type peers to packages that publish React-based declarations - [#34641](https://github.com/storybookjs/storybook/pull/34641), thanks @copilot-swe-agent!

## 10.3.6

- ESLint: Update deprecated @storybook/test reference to storybook/test - [#34430](https://github.com/storybookjs/storybook/pull/34430), thanks @venkat22022202!
- React: Add optional React type peers to packages that publish React-based declarations - [#34641](https://github.com/storybookjs/storybook/pull/34641), thanks @copilot-swe-agent!
- UI: Fix global background + color styles affecting stories - [#34071](https://github.com/storybookjs/storybook/pull/34071), thanks @Axadali!

## 10.3.5

- Core: Disable component manifest by default - [#34408](https://github.com/storybookjs/storybook/pull/34408), thanks @yannbf!

> [!NOTE]
> [Version >=0.5.0 of `@storybook/addon-mcp`](https://github.com/storybookjs/mcp/releases/tag/%40storybook%2Faddon-mcp%400.5.0) enables component manifests again. If you're upgrading Storybook from version >= 10.3.0 to >= 10.3.5 and are using the MCP addon, you should also upgrade `@storybook/addon-mcp` to keep the docs toolset in the MCP server.

## 10.3.4

- Addon-a11y: Clear status transition timer on unmount to prevent test flake - [#34203](https://github.com/storybookjs/storybook/pull/34203), thanks @mixelburg!
- Bug: Skip re-processing already transformed config files for CSF factories - [#34273](https://github.com/storybookjs/storybook/pull/34273), thanks @huang-julien!
- Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - [#34274](https://github.com/storybookjs/storybook/pull/34274), thanks @chida09!
- CLI: Prompt for init crash reports - [#34316](https://github.com/storybookjs/storybook/pull/34316), thanks @JReinhold!
- CSF4: Fix duplicate preview loading issue in Vitest - [#34361](https://github.com/storybookjs/storybook/pull/34361), thanks @valentinpalkovic!
- Core: Fix WebSocket connection for StackBlitz/WebContainers - [#34281](https://github.com/storybookjs/storybook/pull/34281), thanks @ghengeveld!
- React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - [#34393](https://github.com/storybookjs/storybook/pull/34393), thanks @mixelburg!
- React-Vite: Upgrade @joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - [#34335](https://github.com/storybookjs/storybook/pull/34335), thanks @beeswhacks!

## 10.3.3

- Addon-Vitest: Streamline vite(st) config detection across init and postinstall - [#34193](https://github.com/storybookjs/storybook/pull/34193), thanks @valentinpalkovic!

## 10.3.2

- CLI: Shorten CTA link messages - [#34236](https://github.com/storybookjs/storybook/pull/34236), thanks @shilman!
- React Native Web: Fix vite8 support by bumping vite-plugin-rnw - [#34231](https://github.com/storybookjs/storybook/pull/34231), thanks @dannyhw!

## 10.3.1

- CLI: Use npm info to fetch versions in repro command - [#34214](https://github.com/storybookjs/storybook/pull/34214), thanks @yannbf!
- Core: Prevent story-local viewport from persisting in URL - [#34153](https://github.com/storybookjs/storybook/pull/34153), thanks @ghengeveld!

## 10.3.0

_> Improved developer experience, AI-assisting tools, and broader ecosystem support_
Expand All @@ -8,7 +51,6 @@ Storybook 10.3 contains hundreds of fixes and improvements including:
- ⚡ Vite 8 support
- ▲ Next.js 16.2 support
- 📝 ESLint 10 support
- 🧪 React: Experimental `react-component-meta` prop extraction tool for accurate controls and args tables
- 〰️ Addon Pseudo-States: Tailwind v4 support
- 🔧 Addon-Vitest: Simplified configuration - no more setup files required
- ♿ Numerous accessibility improvements across the UI
Expand Down
16 changes: 14 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,18 @@ If you're not sure where to start, you can always help us by:

> **Note**: Before you start contributing, please read the [Code of Conduct](./CODE_OF_CONDUCT.md) and reach out to the maintainers if you have any questions or concerns about the project or the contribution process on the [`#contributing`](https://discord.com/channels/486522875931656193/839297503446695956) channel on Discord.

## About AI contributions: Never let an LLM speak for you

The team welcomes the use of AI as a personal assistant when contributing to Storybook. However, we strongly believe that a real person must be behind every issue and pull request.

All issues and pull requests must be opened by a real person using the official templates. If AI assisted in creating a pull request, please disclose the tool used (e.g. Claude, Codex, Copilot).

Pull requests or issues entirely generated by AI with no human involvement (e.g. by an automated agent) will be labeled by maintainers and closed automatically after 3 days unless a real person responds.

AI-generated comments on issues, pull requests or discussions that add no value or contain incorrect information will be hidden by the maintainers and can be subject to a ban if this becomes a spam behavior.

These measures help reduce maintenance burden and keep the team's work efficient.

## Quick guide

### Prerequisites
Expand Down Expand Up @@ -86,7 +98,7 @@ Here's a highlight of notable directories and files:
│ ├── package.json
│ ├── playwright.config.ts
│ ├── presets # Preset packages
│ ├── prettier.config.mjs
│ ├── .oxfmtrc.json
│ ├── renderers # Storybook renderers for different frameworks
│ ├── sandbox # Sandboxes for Bug Reproductions or experimentation
│ ├── tsconfig.json
Expand Down Expand Up @@ -117,7 +129,7 @@ Here's a highlight of notable directories and files:
│ └── writing-tests
├── node_modules
├── package.json # Root of the yarn monorepo
├── prettier.config.mjs
├── .oxfmtrc.json
├── scripts # Build and Helper Scripts
├── test-storybooks
│ ├── ember-cli
Expand Down
16 changes: 0 additions & 16 deletions code/.prettierignore

This file was deleted.

2 changes: 1 addition & 1 deletion code/addons/a11y/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-a11y",
"version": "10.3.0",
"version": "10.3.6",
"description": "Storybook Addon A11y: Test UI component compliance with WCAG web accessibility standards",
"keywords": [
"a11y",
Expand Down
Loading