10.0.0
Storybook 10 contains one breaking change: it’s ESM-only. This simplifies our distribution and reduces install size by 29% while simultaneously unminifying dist code for easier debugging.
It also includes features to level up your UI development, documentation, and testing workflows:
- 🧩 Module automocking for easier testing
- 🏭 Typesafe CSF factories Preview for React
- 💫 UI editing and sharing optimizations
- 🏷️ Tag filtering exclusion and configuration for sidebar management
- 🔀 Next 16, Vitest 4, Svelte async components, and more!
List of all updates
- A11Y: Bugfix missing `manager.js` entry-file - #32780, thanks @ndelangen!
- A11y: Persist tab/highlight across docs navigation - #32762, thanks @404Dealer!
- Addon A11y: Prevent setting highlights for old results - #32178, thanks @ghengeveld!
- Addon Docs: Fix Symbol conversion issue in docs page and controls panel - #32220, thanks @yannbf!
- Addon Vitest: Fix incorrect file modifications during setup - #32844, thanks @yannbf!
- Addon Vitest: Support modifying mergeConfig on addon setup - #32753, thanks @yannbf!
- Addon-docs: Add eject button to canvas toolbar - #29825, thanks @mihkeleidast!
- AddonA11Y: Fix postinstall - #32309, thanks @ndelangen!
- AddonViewport: Stricter types - #32324, thanks @hpohlmeyer!
- Angular: Add fileURLToPath for preview annotation paths - #32812, thanks @brandonroberts!
- Angular: Fix `entry.polyfills` undefined error - #32230, thanks @sk-pub!
- Angular: Inherit options from browserTarget - #32108, thanks @gingeekrishna!
- AutoMigration: Fix sb10 migration when main config contains `require` - #32558, thanks @ndelangen!
- Build: Fix dts bundling external detection - #32366, thanks @mrginglymus!
- Cleanup: Remove duplicated entrypoints in core - #32507, thanks @ndelangen!
- CLI: Add addon-console automigration - #32083, thanks @Sidnioulz!
- CLI: Avoid mixed CSF in files with unconventional stories - #32716, thanks @yannbf!
- CLI: Change message in downgrade-blocker - #32745, thanks @ndelangen!
- CLI: CSF factories codemod - support annotations in npx context - #32741, thanks @yannbf!
- CLI: Fix CSF factories addon syncing in storybook add command - #32728, thanks @yannbf!
- CLI: Fix throwing in readonly environments - #31785, thanks @JReinhold!
- CLI: Init not running `dev` when it should fixed - #32457, thanks @ndelangen!
- CLI: Make relative imports default in csf-factories codemod - #32610, thanks @copilot-swe-agent!
- CLI: Switch over to modern-tar - #32763, thanks @ayuhito!
- Codemod: Replace `globby` with `tinyglobby` - #31407, thanks @benmccann!
- Controls: Allow primitive values of ReactNode argType - #31931, thanks @alexey-kozlenkov!
- Controls: Fix adding new values to arrays - #32512, thanks @takashi-kasajima!
- Core: Add "open in editor" feature - #32452, thanks @yannbf!
- Core: Add parameter typings for addon-pseudo-state - #32384, thanks @mrginglymus!
- Core: Dedupe aria-query and @testing-library/dom packages - #32801, thanks @mrginglymus!
- Core: Enhance warning for Testing Library's `screen` usage in docs mode - #32851, thanks @yannbf!
- Core: Ensure valid QR code URL - #32661, thanks @ghengeveld!
- Core: Fix `external-globals-plugin` handle `undefined` cache dir - #32579, thanks @walkerburgin!
- Core: Fix Node 24 deprecation warning - #32382, thanks @JReinhold!
- Core: Fix staticCopy not copying `index.html` to sub directory - #32259, thanks @ndelangen!
- Core: Fix stepping back through story interactions panel - #32793, thanks @ia319!
- Core: Improve addon detection in automigrations on windows - #31937, thanks @mrginglymus!
- Core: Improve es-toolkit usage for better tree-shaking - #32787, thanks @mrginglymus!
- Core: Join framework preset path with slash - #32838, thanks @brandonroberts!
- Core: Make `subtype` an optional property on an index input - #32602, thanks @JReinhold!
- Core: Mark pnp support as deprecated - #32645, thanks @ndelangen!
- Core: Prevent `BAIL` state from showing in interactions panel when switching stories - #32172, thanks @ghengeveld!
- Core: Prevent navigating to hidden (filtered) item - #32715, thanks @ghengeveld!
- Core: Remove CJS bundles, only ship ESM - #31819, thanks @ndelangen!
- Core: Replace es-toolkit compat imports with non-compat - #32837, thanks @mrginglymus!
- Core: Switch from `mlly` to `exsolve` - #32383, thanks @mrginglymus!
- Core: Update tags filter UI - #32343, thanks @ghengeveld!
- Core: Use `exsolve` `resolveModulePath` for `safeResolveModule` - #32477, thanks @mrginglymus!
- Core: Various QA fixes - #32629, thanks @ghengeveld!
- CoreServer: Fix `Arc can't get every window` - #32508, thanks @ndelangen!
- CSF: Add Storybook test syntax (Storybook v10) - #32455, thanks @yannbf!
- CSF: Enhance config-to-csf-factory to support type wrappers - #32543, thanks @yannbf!
- Dev: Improve the browser opening experience - #32488, thanks @ndelangen!
- Dts: Ensure `.tsx` files emit `.d.ts` type files - #32461, thanks @mrginglymus!
- Fix: Allow proceeding without selecting automigrations in upgrade command - #32597, thanks @copilot-swe-agent!
- Fix: ESLint plugin homepage URL updates - #32445, thanks @VivekKavala!
- Fix: Incorrect URLS for the upgrade command - #32624, thanks @jonniebigodes!
- Maintenance: Fix bundle size bloat caused by `SyntaxHighlighter` (`createElement`) - #32800, thanks @mrginglymus!
- Maintenance: Hotfix for missing nextjs dts files, thanks @ndelangen!
- Maintenance: Remove globalization for dropped entrypoints - #32491, thanks @ndelangen!
- Mock: Catch errors when transforming preview files - #32216, thanks @valentinpalkovic!
- Modernize: Replace `fs-extra` with native APIs - #32296, thanks @y-hsgw!
- Move: Addon jest into it's own repository - #32646, thanks @ndelangen!
- Next.js-vite: Use `fileURLToPath` for module resolution in preset - #32386, thanks @ndelangen!
- Next.js: Avoid multiple webpack versions at runtime - #32313, thanks @valentinpalkovic!
- Next.js: Remove next/config usage in Next.js >=v16 projects - #32547, thanks @valentinpalkovic!
- Next.js: Return mocked router instead of actual router in useRouter - #32131, thanks @JulioJ11!
- Nextjs: Fix config access for Vite - #32759, thanks @valentinpalkovic!
- Nextjs: Fix Nextjs version detection with prereleases - #32724, thanks @yannbf!
- Onboarding: Prevent confetti overlay from intercepting pointer events - #32660, thanks @ghengeveld!
- Onboarding: Tweak referral wording in survey - #32185, thanks @shilman!
- PreactVite: Add `node` entry point - #32534, thanks @ndelangen!
- Presets: Support extensionless imports in TS-based presets - #32641, thanks @JReinhold!
- React Native: Fix document reference error in open-in-editor - #32572, thanks @dannyhw!
- React: Simplify version detection - #32802, thanks @mrginglymus!
- Replace: Use `empathic` over `find-up` - #31338, thanks @beeequeue!
- Svelte: Improve support for async components - #31476, thanks @JReinhold!
- Svelte: Simplify public types - use modern `Component` - #31394, thanks @xeho91!
- SvelteKit: Add support for mocking `$app/state` - #31369, thanks @xeho91!
- SvelteKit: Fix `set_context_after_init` error when experimental async is enabled - #32513, thanks @Jakeii!
- Tags: Remove undocumented x-only tags - #32360, thanks @shilman!
- Telemetry: Improve dev cancellation handling - #32218, thanks @shilman!
- Telemetry: Send index stats on dev exit - #32168, thanks @shilman!
- UI: Allow showing or hiding the addon panel - #32348, thanks @Sidnioulz!
- UI: Improve sidebar empty state - #32548, thanks @ghengeveld!
- UI: Improve syntax-highlighter bundling - #32776, thanks @mrginglymus!
- Update: Satellite repos after major version bump - #32303, thanks @ndelangen!
- Upgrade: Enhance ESM compatibility checks and banner generation - #32694, thanks @ndelangen!
- Upgrade: Packages `open` - #32484, thanks @ndelangen!
- Upgrades: Packages `boxen` `commander` `giget` - #32469, thanks @ndelangen!
- Vite: Optimize @storybook/addon-docs/blocks dependency - #32798, thanks @mrginglymus!