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