Skip to content

[master] Michijs Dependabot changes#114

Closed
michijs[bot] wants to merge 1 commit into
masterfrom
michijs-dependabot
Closed

[master] Michijs Dependabot changes#114
michijs[bot] wants to merge 1 commit into
masterfrom
michijs-dependabot

Conversation

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump @​michijs/dev-server from 0.8.7 to 0.8.29

Changelog:
Sourced from releases.
        ### 0.8.29## What's Changed

Full Changelog: https://github.com/michijs/dev-server/compare/0.8.28...0.8.29

        ### 0.8.28## What's Changed

Full Changelog: https://github.com/michijs/dev-server/compare/0.8.22...0.8.28

        ### 0.8.22**Full Changelog**: https://github.com/michijs/dev-server/compare/0.8.19...0.8.22


        ### 0.8.19**Full Changelog**: https://github.com/michijs/dev-server/compare/0.8.18...0.8.19


        ### 0.8.18**Full Changelog**: https://github.com/michijs/dev-server/compare/0.8.17...0.8.18


        ### 0.8.17## What's Changed

Full Changelog: https://github.com/michijs/dev-server/compare/0.8.16...0.8.17

        ### 0.8.16## What's Changed

Full Changelog: https://github.com/michijs/dev-server/compare/0.8.15...0.8.16

        ### 0.8.15**Full Changelog**: https://github.com/michijs/dev-server/compare/v0.8.14...0.8.15


        ### v0.8.14## What's Changed

Full Changelog: https://github.com/michijs/dev-server/compare/0.8.13...%220.8.14%22

        ### 0.8.13## What's Changed

Full Changelog: https://github.com/michijs/dev-server/compare/0.8.12...0.8.13

        ### 0.8.12## What's Changed

Full Changelog: https://github.com/michijs/dev-server/compare/0.8.11...0.8.12

        ### 0.8.11## What's Changed

Full Changelog: https://github.com/michijs/dev-server/compare/0.8.10...0.8.11

        ### 0.8.10**Full Changelog**: https://github.com/michijs/dev-server/compare/0.8.9...0.8.10


        ### 0.8.9## What's Changed

New Contributors

Full Changelog: https://github.com/michijs/dev-server/compare/v0.8.8...0.8.9

        ### v0.8.8-beta.9Automatic release


        ### v0.8.8-beta.8Automatic release


        ### v0.8.8Automatic release


        ### v0.8.8-beta.7Automatic release


        ### v0.8.8-beta.6Automatic release


        ### v0.8.8-beta.5Automatic release


        ### v0.8.8-beta.4Automatic release


        ### v0.8.8-beta.3Automatic release


        ### v0.8.8-beta.2Automatic release


        ### v0.8.8-beta.0Automatic release


        ### v0.8.7Added '/index.html', '/assets/*', '/manifest.json', '/favicon.ico' to external as default


        ### v0.8.7-beta.9Automatic release


        ### v0.8.7-beta.10Automatic release


        ### v0.8.7-beta.8Automatic release


        ### v0.8.7-beta.7Automatic release


        ### v0.8.7-beta.6Automatic release
Commit history:

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump @​michijs/shared-configs from 0.0.24 to 0.0.37

Changelog:
Sourced from releases.
        ### 0.0.37## What's Changed

Full Changelog: https://github.com/michijs/shared-configs/compare/0.0.36...0.0.37

        ### 0.0.36## What's Changed

New Contributors

Full Changelog: https://github.com/michijs/shared-configs/compare/0.0.34...0.0.36

        ### 0.0.34**Full Changelog**: https://github.com/michijs/shared-configs/compare/0.0.33...0.0.34


        ### 0.0.33**Full Changelog**: https://github.com/michijs/shared-configs/compare/0.0.32...0.0.33


        ### 0.0.32**Full Changelog**: https://github.com/michijs/shared-configs/compare/0.0.31...0.0.32


        ### 0.0.31**Full Changelog**: https://github.com/michijs/shared-configs/compare/0.0.30...0.0.31


        ### 0.0.30## What's Changed

Full Changelog: https://github.com/michijs/shared-configs/compare/0.0.29...0.0.30

        ### 0.0.29**Full Changelog**: https://github.com/michijs/shared-configs/compare/0.0.28...0.0.29


        ### 0.0.28**Full Changelog**: https://github.com/michijs/shared-configs/compare/0.0.27...0.0.28


        ### 0.0.27**Full Changelog**: https://github.com/michijs/shared-configs/compare/0.0.26...0.0.27


        ### 0.0.26**Full Changelog**: https://github.com/michijs/shared-configs/compare/0.0.25...0.0.26


        ### 0.0.25**Full Changelog**: https://github.com/michijs/shared-configs/compare/0.0.24...0.0.25


        ### 0.0.24Automatic release
Commit history:
  • d732fa chore: Release 0.0.24
  • c74f5c Disable useStrictMode in biome.json
  • 919c97 chore: Release 0.0.25
  • 003bc2 chore: Release 0.0.26
  • c601c1 noTsIgnore turned off
  • ac061b chore: Release 0.0.27
  • fa0f0e Small changes
  • 1a77b8 chore: Release 0.0.28
  • c88e83 Added noConfusingLabels
  • f05d1c chore: Release 0.0.29
  • f38b1d Updated rules
  • 54e144 chore: Autofixes (Revert "Bump @storybook/addon-a11y from 6.5.16 to 7.0.2" #14)

    Co-authored-by: michijs[bot] <235342604+michijs[bot]@​users.noreply.github.com>

  • b6b596 chore: Release 0.0.30
  • 26d0b7 Updated rules
  • 8184c1 Merge branch 'master' of https://github.com/michijs/shared-configs
  • 73436f chore: Release 0.0.31
  • 6977ec small changes
  • cee0ab chore: Release 0.0.32
  • b20c26 Updated includes
  • d491ed chore: Release 0.0.33
  • 872315 Bump
  • 6a69fe chore: Release 0.0.34
  • b020cb Updated options
  • 2d8f65 Updated tsconfig
  • 9988b3 Update package.json (Bump @storybook/builder-vite from 7.0.2 to 7.0.5 #15)

    What is the purpose of this pull request?

    Screenshots or example usage

    Types of changes

    • Bug fix (non-breaking change which fixes an issue)
    • New feature (non-breaking change which adds functionality)
    • Quality improvement (tests or refactors)
    • Breaking change (fix or feature that would cause existing
      functionality to change)
    • Trivial change (small fix or feature that doesn't impact
      functionalities)
    • Requires change to documentation, which has been updated
      accordingly

    Signed-off-by: Lucas Segurado <lsegurado1996@​gmail.com>

  • 7a9e7e chore: Release 0.0.36
  • bf294a Update tsconfig.json (Bump @storybook/addon-controls from 7.0.2 to 7.0.5 #16)

    What is the purpose of this pull request?

    Screenshots or example usage

    Types of changes

    • Bug fix (non-breaking change which fixes an issue)
    • New feature (non-breaking change which adds functionality)
    • Quality improvement (tests or refactors)
    • Breaking change (fix or feature that would cause existing
      functionality to change)
    • Trivial change (small fix or feature that doesn't impact
      functionalities)
    • Requires change to documentation, which has been updated
      accordingly

    Signed-off-by: Lucas Segurado <lsegurado1996@​gmail.com>

  • 3c3aca chore: Release v0.0.37

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump storybook from 9.1.3 to 10.3.6

Changelog:
Sourced from releases.
        ### v10.4.0-alpha.15## 10.4.0-alpha.15
  • Vitest: Fix agent detection breaking runs - #34681, thanks @​JReinhold!

          ### v10.4.0-alpha.14## 10.4.0-alpha.14
    
  • CLI: Fix agentic check - #34678, thanks @​yannbf!

          ### v10.4.0-alpha.13## 10.4.0-alpha.13
    
  • Addon-Vitest: Use Vitest's provide-API for injecting values - #34518, thanks @​JReinhold!

  • Telemetry: Fix delayed init events - #34670, thanks @​JReinhold!

          ### v10.4.0-alpha.12## 10.4.0-alpha.12
    
  • CLI: Introduce Agentic Setup workflow - #34297, thanks @​yannbf!

          ### v10.4.0-alpha.11## 10.4.0-alpha.11
    
  • CLI: Change mock event detection - #34586, thanks @​yannbf!

  • Core: Ensure process termination on SIGINT when telemetry is disabled - #34585, thanks @​ghengeveld!

  • Core: Show "new" status on newly added individual stories - #34504, thanks @​ghengeveld!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • Telemetry: Add sidebar filter telemetry for change detection - #34533, thanks @​valentinpalkovic!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.3.6## 10.3.6
    
  • ESLint: Update deprecated @​storybook/test reference to storybook/test - #34430, thanks @​venkat22022202!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.4.0-alpha.10## 10.4.0-alpha.10
    
  • Sidebar: Fix clear status button to only clear test statuses - #34478, thanks @​valentinpalkovic!

  • Telemetry: Centralize disable logic with module-level flag - #34485, thanks @​valentinpalkovic!

          ### v10.4.0-alpha.9## 10.4.0-alpha.9
    
  • A11y: Improve boolean control contrast in forced colors mode - #34204, thanks @​anchmelev!

  • Addon-Docs: Avoid rerendering static Source blocks - #34206, thanks @​anchmelev!

  • CLI: Streamline Node.js version detection code - #34440, thanks @​Sidnioulz!

  • Core: Improve startup performance by deferring change detection initialization - #34498, thanks @​ghengeveld!

  • Core: Normalize file paths in ChangeDetectionService and trace-changed for Windows support - #34445, thanks @​ghengeveld!

  • Fix: Add vite-plus vendored libraries version detection - #34509, thanks @​huang-julien!

  • Nextjs: Handle node builtin webpack imports - #34494, thanks @​JReinhold!

  • React: Add subcomponents to component manifests - #34428, thanks @​kasperpeulen!

  • Vue3: Clear stale args/globals when nextArgs is empty in updateArgs - #34409, thanks @​whdjh!

          ### v10.4.0-alpha.8## 10.4.0-alpha.8
    
  • A11y: Add aria-live announcements via @​react-aria/live-announcer - #33970, thanks @​copilot-swe-agent!

  • Actions: Fix state mutation and keep newest actions when limit reached - #34286, thanks @​Sidnioulz!

  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

  • Core: Implement Git change detection - #34420, thanks @​ghengeveld!

  • Core: Rename preview.ts to preview.tsx in generated projects - #34396, thanks @​Sidnioulz!

  • Sidebar: Add dual-slot status icons for change detection and test results - #34346, thanks @​valentinpalkovic!

  • UI: Improve interactions panel accessibility - #34110, thanks @​anchmelev!

          ### v10.3.5## 10.3.5
    
  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

[!NOTE]
Version >=0.5.0 of @&ZeroWidthSpace;storybook/addon-mcp 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 @&ZeroWidthSpace;storybook/addon-mcp to keep the docs toolset in the MCP server.

        ### v10.4.0-alpha.7## 10.4.0-alpha.7
  • CLI: Explicitly tell whether smoke tests passed or failed - #34419, thanks @​Sidnioulz!

  • Core: Add `ChangeDetectionService` and wire up builder-vite - #34369, thanks @​ghengeveld!

  • Maintenance: Extract parseFilterParam shared helper from tags and statuses modules - #34436, thanks @​mixelburg!

  • Sidebar: Add status-based filtering with refactored status architecture - #34339, thanks @​valentinpalkovic!

  • UI: Fix global shortcuts not showing region focus indicator - #34201, thanks @​Sidnioulz!

          ### v10.3.4## 10.3.4
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

          ### v10.4.0-alpha.6## 10.4.0-alpha.6
    
  • Builder-Vite: Add onModuleGraphChange method - #34323, thanks @​ghengeveld!

  • CLI: Add automigrate check for 'storybook' package name conflict - #34290, thanks @​whdjh!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Maintenance: Add assertions outside step incorrectly nested in interactions panel - #34296, thanks @​majiayu000!

  • Maintenance: Extract getBuilderOptions helper across framewo… - #34260, thanks @​alex-js-ltd!

  • Maintenance: Use errorToErrorLike in boot-test-runner for consistent stack deduplication - #34385, thanks @​mixelburg!

  • Onboarding: Fix checklist MDX instructions - #33193, thanks @​kylegach!

  • React-Docgen: Add tsconfig fallback chain and warning for monorepos - #34353, thanks @​viditkbhatnagar!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • UI: Fix mobile navigation when renderLabel returns a React node - #34262, thanks @​Nathan54Villaume!

  • Vite: Use vite hook filter for performance improvements - #34022, thanks @​huang-julien!

          ### v10.4.0-alpha.5## 10.4.0-alpha.5
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Fix Next.js Vite automigration corrupting configs already using `@​storybook/nextjs-vite` - #34249, thanks @​nathanjessen!

  • Core: Add changeDetection feature flag - #34314, thanks @​valentinpalkovic!

  • Manager: URL-based tag filter state + filter-aware initial story selection - #34283, thanks @​valentinpalkovic!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

  • Refactor: Extract shared `PseudoStateGrid` component in pseudo-states stories - #34334, thanks @​copilot-swe-agent!

          ### v10.4.0-alpha.4## 10.4.0-alpha.4
    
  • Addon-Docs: Add Reset story button to re-render stories in docs - #34086, thanks @​6810779s!

  • Code: Fix inline code blocks inside links removing link affordance - #33903, thanks @​yatishgoel!

  • Controls: Add maxPresetColors option to ColorControl - #33998, thanks @​mixelburg!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • Dependencies: Update `vite-plugin-storybook-nextjs` to ^3.2.4 - #34280, thanks @​k35o!

  • React: Add component metadata extraction via Volar-style LanguageService - #33914, thanks @​kasperpeulen!

  • StatusValue: Add 'status-value:<new|modified|affected>' - #34305, thanks @​valentinpalkovic!

  • UI: Ensure Controls panel can scroll horizontally for now - #34248, thanks @​Sidnioulz!

          ### v10.4.0-alpha.3## 10.4.0-alpha.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

  • Angular: Use Story ID for renderer IDs (including standalone stories) - #33982, thanks @​ValentinFunk!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.3.3## 10.3.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

          ### v10.3.2## 10.3.2
    
  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.4.0-alpha.2## 10.4.0-alpha.2
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

  • Maintenance: Remove dead-code copy of wrap-getAbsolutePath-utils - #34168, thanks @​mixelburg!

  • Security: Makes sure `serialize-javascript` is at latest version - #34034, thanks @​50bbx!

          ### v10.4.0-alpha.1## 10.4.0-alpha.1
    
  • Docs: Ensure unique control id attributes across multiple Controls blocks - #34021, thanks @​TheSeydiCharyyev!

          ### v10.3.1## 10.3.1
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

          ### v10.4.0-alpha.0## 10.4.0-alpha.0
    
    
    
    
          ### v10.3.0## 10.3.0
    

> Improved developer experience, AI-assisting tools, and broader ecosystem support

Storybook 10.3 contains hundreds of fixes and improvements including:

  • 🤖 Storybook MCP: Agentic component dev, docs, and test (Preview release for React)
  • ⚡ Vite 8 support
  • ▲ Next.js 16.2 support
  • 📝 ESLint 10 support
  • 〰️ Addon Pseudo-States: Tailwind v4 support
  • 🔧 Addon-Vitest: Simplified configuration - no more setup files required
  • ♿ Numerous accessibility improvements across the UI
List of all updates
  • A11y: Add ScrollArea prop focusable for when it has static children - #33876, thanks @​Sidnioulz!
  • A11y: Ensure popover dialogs have an ARIA label - #33500, thanks @​gayanMatch!
  • A11y: Make resize handles for addon panel and sidebar accessible #33980
  • A11y: Underline MDX links for WCAG SC 1.4.1 compliance - #33139, thanks @​NikhilChowdhury27!
  • Actions: Add expandLevel parameter to configure tree depth - #33977, thanks @​mixelburg!
  • Actions: Fix HandlerFunction type to support async callback props - #33864, thanks @​mixelburg!
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!
  • Addon-Docs: Add support for `sourceState: 'none'` to canvas block parameters - #33627, thanks @​quisido!
  • Addon-docs: Restore `docs.components` overrides for doc blocks #34111
  • Addon-Vitest: Add channel API to programmatically trigger test runs - #33206, thanks @​JReinhold!
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!
  • Addon-Vitest: Make Playwright `--with-deps` platform-aware to avoid `sudo` prompt on Linux #34121
  • Addon-Vitest: Refactor Vitest setup to eliminate the need for a dedicated setup file - #34025, thanks @​valentinpalkovic!
  • Addon-Vitest: Support Vitest canaries - #33833, thanks @​valentinpalkovic!
  • Angular: Add moduleResolution: bundler to tsconfig - #34085, thanks @​valentinpalkovic!
  • Angular: only load webpack dependencies on demand - #34043, thanks @​sod!
  • Angular: Storybook fails with unknown option silent - #33736, thanks @​tanujbhaud!
  • Build: Update @​types/node - #34037, thanks @​valentinpalkovic!
  • Builder-Vite: Centralize Vite plugins for builder-vite and addon-vitest - #33819, thanks @​valentinpalkovic!
  • Builder-Vite: Fix cold-cache vitest failures for story paths containing glob special characters - #34044, thanks @​copilot-swe-agent!
  • Builder-Vite: Use preview annotations as entry points for optimizeDeps - #33875, thanks @​copilot-swe-agent!
  • CI: declare explicit permissions for stale and weekly cron workflows - #33902, thanks @​Rohan5commit!
  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!
  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!
  • CLI: Fix onboarding not opening - #33609, thanks @​ndelangen!
  • CLI: Show multiple favicons warning as debug message - #34069, thanks @​remino!
  • Cli: Use npm for registry URL in PNPMProxy to avoid workspace errors - #33571, thanks @​ia319!
  • Controls: Allow story argTypes to override control: false from meta - #33729, thanks @​jonathan-fulton!
  • Controls: Fix Object contrast issue and tidy up code - #33923, thanks @​Sidnioulz!
  • Core: Ensure telemetry is never triggered on initial load of checklist data - #33918, thanks @​ghengeveld!
  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105
  • Core: Fix false-positive CJS warning when 'exports' appears in strings or comments - #33572, thanks @​reeseo3o!
  • Core: Fix handling complex viewport sizes #33615
  • Core: Fix iframe reference for composed Storybook on a subpath #34100
  • Core: Fix typos: occured -> occurred, recieves -> receives - #33727, thanks @​jonathan-fulton!
  • Core: Handle BROWSER=none correctly and improve error messages - #33730, thanks @​jonathan-fulton!
  • Core: Ignore empty files when indexing - #33782, thanks @​JReinhold!
  • Core: Register CORS middleware before index.json route - #33728, thanks @​jonathan-fulton!
  • Core: Revert Pull Request #33420 from Maelryn/fix/copy-button-overlap - #33877, thanks @​Sidnioulz!
  • Core: Zoom tool refinements - Hide reset button when value is initial - #33635, thanks @​superLipbalm!
  • Docs: Edit JSON button is now accessible at 320x256 viewport (WCAG 2.1 Reflow test) - #33707, thanks @​TheSeydiCharyyev!
  • Docs: Make CSS ordering in DocsContainer more predictable #34015
  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!
  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!
  • HMR: Fix race conditions causing stale play functions to fire on re-rendered stories - #33930, thanks @​copilot-swe-agent!
  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!
  • Maintenance: Use std-env for AI agent detection in telemetry #34114
  • Manifest: Add docs entries to debugger - #33607, thanks @​JReinhold!
  • Manifest: Rename `experimentalComponentsManifest` → `componentsManifest`, default to `true` #33974
  • Manifests: Fix Attached MDX causing wrong component entries #34101
  • Next.js-Vite: Fix failing postcss mutation - #33879, thanks @​valentinpalkovic!
  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!
  • Preact: Support inferring props from component types - #33828, thanks @​JoviDeCroock!
  • React Native Web: Fix inconsistent example stories - #33891, thanks @​danielalanbates!
  • React: Add react-docgen-typescript to component manifest - #33818, thanks @​kasperpeulen!
  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!
  • Test: Fix clearing mocks in Vitest #34078
  • Test: Update @​testing-library/jest-dom - #33928, thanks @​valentinpalkovic!
  • Theming: Export interface declaration for `ThemesGlobals` - #33343, thanks @​icopp!
  • Toolbar: Remove extra toolbar divider when zoom controls not shown - #33731, thanks @​jonathan-fulton!
  • UI: Allow direct kb/mouse actions on zoom tool button - #33496, thanks @​Sidnioulz!
  • UI: Avoid large animation for reduced motion users - #33530, thanks @​Sidnioulz!
  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!
  • UI: Fix `z-index` problem with `popover`s and `modal`s nesting - #33757, thanks @​ndelangen!
  • UI: Fix code/copy buttons overlap with content - #33889, thanks @​Sidnioulz!
  • UI: Fix Copy button overlapping code in portrait mode - #33420, thanks @​Maelryn!
  • UI: Fix modal text selection - #33967, thanks @​Sidnioulz!
  • UI: Fix tab navigation after closing addon panel - #33971, thanks @​copilot-swe-agent!
  • UI: Handle kb nav edge cases when preview and panel are hidden - #33588, thanks @​Sidnioulz!
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!
  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!
  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!
  • UI: Make TagsFilter state persistent #33374
  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!
  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!
  • Viewport: Skip viewport validation before parameters load - #33794, thanks @​ia319!
  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!
  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!
        ### v10.3.0-beta.3## 10.3.0-beta.3
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!

  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!

  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!

  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!

  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!

  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!

          ### v10.3.0-beta.2## 10.3.0-beta.2
    
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!

  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!

  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!

  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!

  • Vue: Make globals reactive in decorators - #34116, thanks @​Sidnioulz!

          ### v10.3.0-beta.1## 10.3.0-beta.1
    
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!

  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!

          ### v10.3.0-beta.0## 10.3.0-beta.0
    
  • Test: Fix clearing mocks in Vitest #34078

  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105

  • UI: Make TagsFilter state persistent #33374

  • A11y: Make resize handles for addon panel and sidebar accessible #33980

  • Maintenance: Use std-env for AI agent detection in telemetry #34114

  • Addon-Vitest: Make Playwright --with-deps platform-aware to avoid sudo prompt on Linux #34121

  • Addon-docs: Restore docs.components overrides for doc blocks #34111

  • Maintenance: Support vite-plugin-svelte7 which supports Vite 8 #34115

  • Core: Fix handling complex viewport sizes #33615

  • Core: Fix iframe reference for composed Storybook on a subpath #34100

  • Manifest: Rename experimentalComponentsManifestcomponentsManifest, default to true #33974

  • Manifests: Fix Attached MDX causing wrong component entries #34101

  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!

  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!

  • Docs: Make CSS ordering in DocsContainer more predictable #34015

          ### v10.3.0-alpha.17## 10.3.0-alpha.17
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!

  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!

  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!

          ### v10.2.19## 10.2.19
    
  • Maintenance: Support vite-plugin-svelte@​7 which supports Vite 8 - #34115, thanks @​valentinpalkovic!

  • Vite: Support Vite 8 - #33788, thanks @​valentinpalkovic!

          ### v10.2.18## 10.2.18
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • Core: Fix error reporting in ManagerErrorBoundary - #33915, thanks @​ghengeveld!

Commit history:
  • f9060d Merge pull request #34632 from rohanadepu/docs/unit-test-user-event-guidance

    docs: prefer userEvent in unit test examples

  • f1363a Bump version from "10.4.0-alpha.14" to "10.4.0-alpha.15" [skip ci]
  • b16225 Merge pull request #34682 from storybookjs/version-non-patch-from-10.4.0-alpha.14

    Release: Prerelease 10.4.0-alpha.15

  • 9681b6 Write changelog for 10.4.0-alpha.15 [skip ci]
  • 4dfac8 Merge pull request #34681 from storybookjs/jeppe/fix-vitest-provide-agent

    Vitest: Fix agent detection breaking runs

  • 1d5ea9 move agent detection to config hook instead of configureVitest

    Co-authored-by: Copilot <copilot@​github.com>

  • 549170 Bump version from "10.4.0-alpha.13" to "10.4.0-alpha.14" [skip ci]
  • fdaa90 Merge pull request #34679 from storybookjs/version-non-patch-from-10.4.0-alpha.13

    Release: Prerelease 10.4.0-alpha.14

  • 075111 Write changelog for 10.4.0-alpha.14 [skip ci]
  • e9fdd8 Merge pull request #34678 from storybookjs/yann/ai-steps-fix

    CLI: Fix agentic check

  • 3ab056 Bump version from "10.4.0-alpha.12" to "10.4.0-alpha.13" [skip ci]
  • b214e9 Merge pull request #34672 from storybookjs/version-non-patch-from-10.4.0-alpha.12

    Release: Prerelease 10.4.0-alpha.13

  • 51bc0e Merge branch 'yann/ai-steps-fix' of github.com:storybookjs/storybook into yann/ai-steps-fix
  • 8981b4 Merge branch 'next' into yann/ai-steps-fix
  • 4ba44a Revert "revert"

    This reverts commit e248e58e6831a723c4f2b7a7c1e0c696eff07606.

  • 52d60c Write changelog for 10.4.0-alpha.13 [skip ci]
  • e0791c Merge pull request #34670 from storybookjs/jeppe/fix-init-telemetry

    Telemetry: Fix delayed init events

  • 79a2f7 fix tests
  • e248e5 revert
  • 870322 fix steps collection
  • 80b733 fix formatting
  • 0457c8 Merge pull request #34652 from storybookjs/rename-affected-related
  • b3365c Use same icon for modified and related
  • a81263 Merge branch 'next' into jeppe/fix-init-telemetry
  • ed0c34 Replace icon for "related" changes
  • e88aee always resolve telemetry state immediately
  • 151d4f Merge pull request #34674 from storybookjs/jeppe/add-addon-mcp

    Build: Add addon-mcp to internal UI Storybook

  • 8174f8 Merge branch 'next' into jeppe/add-addon-mcp
  • a5bc66 add addon-mcp to internal UI Storybook
  • 722b7a Merge branch 'next' into jeppe/fix-init-telemetry

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author
Changelog:
Sourced from releases.
        ### v10.4.0-alpha.15## 10.4.0-alpha.15
  • Vitest: Fix agent detection breaking runs - #34681, thanks @​JReinhold!

          ### v10.4.0-alpha.14## 10.4.0-alpha.14
    
  • CLI: Fix agentic check - #34678, thanks @​yannbf!

          ### v10.4.0-alpha.13## 10.4.0-alpha.13
    
  • Addon-Vitest: Use Vitest's provide-API for injecting values - #34518, thanks @​JReinhold!

  • Telemetry: Fix delayed init events - #34670, thanks @​JReinhold!

          ### v10.4.0-alpha.12## 10.4.0-alpha.12
    
  • CLI: Introduce Agentic Setup workflow - #34297, thanks @​yannbf!

          ### v10.4.0-alpha.11## 10.4.0-alpha.11
    
  • CLI: Change mock event detection - #34586, thanks @​yannbf!

  • Core: Ensure process termination on SIGINT when telemetry is disabled - #34585, thanks @​ghengeveld!

  • Core: Show "new" status on newly added individual stories - #34504, thanks @​ghengeveld!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • Telemetry: Add sidebar filter telemetry for change detection - #34533, thanks @​valentinpalkovic!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.3.6## 10.3.6
    
  • ESLint: Update deprecated @​storybook/test reference to storybook/test - #34430, thanks @​venkat22022202!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.4.0-alpha.10## 10.4.0-alpha.10
    
  • Sidebar: Fix clear status button to only clear test statuses - #34478, thanks @​valentinpalkovic!

  • Telemetry: Centralize disable logic with module-level flag - #34485, thanks @​valentinpalkovic!

          ### v10.4.0-alpha.9## 10.4.0-alpha.9
    
  • A11y: Improve boolean control contrast in forced colors mode - #34204, thanks @​anchmelev!

  • Addon-Docs: Avoid rerendering static Source blocks - #34206, thanks @​anchmelev!

  • CLI: Streamline Node.js version detection code - #34440, thanks @​Sidnioulz!

  • Core: Improve startup performance by deferring change detection initialization - #34498, thanks @​ghengeveld!

  • Core: Normalize file paths in ChangeDetectionService and trace-changed for Windows support - #34445, thanks @​ghengeveld!

  • Fix: Add vite-plus vendored libraries version detection - #34509, thanks @​huang-julien!

  • Nextjs: Handle node builtin webpack imports - #34494, thanks @​JReinhold!

  • React: Add subcomponents to component manifests - #34428, thanks @​kasperpeulen!

  • Vue3: Clear stale args/globals when nextArgs is empty in updateArgs - #34409, thanks @​whdjh!

          ### v10.4.0-alpha.8## 10.4.0-alpha.8
    
  • A11y: Add aria-live announcements via @​react-aria/live-announcer - #33970, thanks @​copilot-swe-agent!

  • Actions: Fix state mutation and keep newest actions when limit reached - #34286, thanks @​Sidnioulz!

  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

  • Core: Implement Git change detection - #34420, thanks @​ghengeveld!

  • Core: Rename preview.ts to preview.tsx in generated projects - #34396, thanks @​Sidnioulz!

  • Sidebar: Add dual-slot status icons for change detection and test results - #34346, thanks @​valentinpalkovic!

  • UI: Improve interactions panel accessibility - #34110, thanks @​anchmelev!

          ### v10.3.5## 10.3.5
    
  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

[!NOTE]
Version >=0.5.0 of @&ZeroWidthSpace;storybook/addon-mcp 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 @&ZeroWidthSpace;storybook/addon-mcp to keep the docs toolset in the MCP server.

        ### v10.4.0-alpha.7## 10.4.0-alpha.7
  • CLI: Explicitly tell whether smoke tests passed or failed - #34419, thanks @​Sidnioulz!

  • Core: Add `ChangeDetectionService` and wire up builder-vite - #34369, thanks @​ghengeveld!

  • Maintenance: Extract parseFilterParam shared helper from tags and statuses modules - #34436, thanks @​mixelburg!

  • Sidebar: Add status-based filtering with refactored status architecture - #34339, thanks @​valentinpalkovic!

  • UI: Fix global shortcuts not showing region focus indicator - #34201, thanks @​Sidnioulz!

          ### v10.3.4## 10.3.4
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

          ### v10.4.0-alpha.6## 10.4.0-alpha.6
    
  • Builder-Vite: Add onModuleGraphChange method - #34323, thanks @​ghengeveld!

  • CLI: Add automigrate check for 'storybook' package name conflict - #34290, thanks @​whdjh!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Maintenance: Add assertions outside step incorrectly nested in interactions panel - #34296, thanks @​majiayu000!

  • Maintenance: Extract getBuilderOptions helper across framewo… - #34260, thanks @​alex-js-ltd!

  • Maintenance: Use errorToErrorLike in boot-test-runner for consistent stack deduplication - #34385, thanks @​mixelburg!

  • Onboarding: Fix checklist MDX instructions - #33193, thanks @​kylegach!

  • React-Docgen: Add tsconfig fallback chain and warning for monorepos - #34353, thanks @​viditkbhatnagar!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • UI: Fix mobile navigation when renderLabel returns a React node - #34262, thanks @​Nathan54Villaume!

  • Vite: Use vite hook filter for performance improvements - #34022, thanks @​huang-julien!

          ### v10.4.0-alpha.5## 10.4.0-alpha.5
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Fix Next.js Vite automigration corrupting configs already using `@​storybook/nextjs-vite` - #34249, thanks @​nathanjessen!

  • Core: Add changeDetection feature flag - #34314, thanks @​valentinpalkovic!

  • Manager: URL-based tag filter state + filter-aware initial story selection - #34283, thanks @​valentinpalkovic!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

  • Refactor: Extract shared `PseudoStateGrid` component in pseudo-states stories - #34334, thanks @​copilot-swe-agent!

          ### v10.4.0-alpha.4## 10.4.0-alpha.4
    
  • Addon-Docs: Add Reset story button to re-render stories in docs - #34086, thanks @​6810779s!

  • Code: Fix inline code blocks inside links removing link affordance - #33903, thanks @​yatishgoel!

  • Controls: Add maxPresetColors option to ColorControl - #33998, thanks @​mixelburg!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • Dependencies: Update `vite-plugin-storybook-nextjs` to ^3.2.4 - #34280, thanks @​k35o!

  • React: Add component metadata extraction via Volar-style LanguageService - #33914, thanks @​kasperpeulen!

  • StatusValue: Add 'status-value:<new|modified|affected>' - #34305, thanks @​valentinpalkovic!

  • UI: Ensure Controls panel can scroll horizontally for now - #34248, thanks @​Sidnioulz!

          ### v10.4.0-alpha.3## 10.4.0-alpha.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

  • Angular: Use Story ID for renderer IDs (including standalone stories) - #33982, thanks @​ValentinFunk!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.3.3## 10.3.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

          ### v10.3.2## 10.3.2
    
  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.4.0-alpha.2## 10.4.0-alpha.2
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

  • Maintenance: Remove dead-code copy of wrap-getAbsolutePath-utils - #34168, thanks @​mixelburg!

  • Security: Makes sure `serialize-javascript` is at latest version - #34034, thanks @​50bbx!

          ### v10.4.0-alpha.1## 10.4.0-alpha.1
    
  • Docs: Ensure unique control id attributes across multiple Controls blocks - #34021, thanks @​TheSeydiCharyyev!

          ### v10.3.1## 10.3.1
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

          ### v10.4.0-alpha.0## 10.4.0-alpha.0
    
    
    
    
          ### v10.3.0## 10.3.0
    

> Improved developer experience, AI-assisting tools, and broader ecosystem support

Storybook 10.3 contains hundreds of fixes and improvements including:

  • 🤖 Storybook MCP: Agentic component dev, docs, and test (Preview release for React)
  • ⚡ Vite 8 support
  • ▲ Next.js 16.2 support
  • 📝 ESLint 10 support
  • 〰️ Addon Pseudo-States: Tailwind v4 support
  • 🔧 Addon-Vitest: Simplified configuration - no more setup files required
  • ♿ Numerous accessibility improvements across the UI
List of all updates
  • A11y: Add ScrollArea prop focusable for when it has static children - #33876, thanks @​Sidnioulz!
  • A11y: Ensure popover dialogs have an ARIA label - #33500, thanks @​gayanMatch!
  • A11y: Make resize handles for addon panel and sidebar accessible #33980
  • A11y: Underline MDX links for WCAG SC 1.4.1 compliance - #33139, thanks @​NikhilChowdhury27!
  • Actions: Add expandLevel parameter to configure tree depth - #33977, thanks @​mixelburg!
  • Actions: Fix HandlerFunction type to support async callback props - #33864, thanks @​mixelburg!
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!
  • Addon-Docs: Add support for `sourceState: 'none'` to canvas block parameters - #33627, thanks @​quisido!
  • Addon-docs: Restore `docs.components` overrides for doc blocks #34111
  • Addon-Vitest: Add channel API to programmatically trigger test runs - #33206, thanks @​JReinhold!
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!
  • Addon-Vitest: Make Playwright `--with-deps` platform-aware to avoid `sudo` prompt on Linux #34121
  • Addon-Vitest: Refactor Vitest setup to eliminate the need for a dedicated setup file - #34025, thanks @​valentinpalkovic!
  • Addon-Vitest: Support Vitest canaries - #33833, thanks @​valentinpalkovic!
  • Angular: Add moduleResolution: bundler to tsconfig - #34085, thanks @​valentinpalkovic!
  • Angular: only load webpack dependencies on demand - #34043, thanks @​sod!
  • Angular: Storybook fails with unknown option silent - #33736, thanks @​tanujbhaud!
  • Build: Update @​types/node - #34037, thanks @​valentinpalkovic!
  • Builder-Vite: Centralize Vite plugins for builder-vite and addon-vitest - #33819, thanks @​valentinpalkovic!
  • Builder-Vite: Fix cold-cache vitest failures for story paths containing glob special characters - #34044, thanks @​copilot-swe-agent!
  • Builder-Vite: Use preview annotations as entry points for optimizeDeps - #33875, thanks @​copilot-swe-agent!
  • CI: declare explicit permissions for stale and weekly cron workflows - #33902, thanks @​Rohan5commit!
  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!
  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!
  • CLI: Fix onboarding not opening - #33609, thanks @​ndelangen!
  • CLI: Show multiple favicons warning as debug message - #34069, thanks @​remino!
  • Cli: Use npm for registry URL in PNPMProxy to avoid workspace errors - #33571, thanks @​ia319!
  • Controls: Allow story argTypes to override control: false from meta - #33729, thanks @​jonathan-fulton!
  • Controls: Fix Object contrast issue and tidy up code - #33923, thanks @​Sidnioulz!
  • Core: Ensure telemetry is never triggered on initial load of checklist data - #33918, thanks @​ghengeveld!
  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105
  • Core: Fix false-positive CJS warning when 'exports' appears in strings or comments - #33572, thanks @​reeseo3o!
  • Core: Fix handling complex viewport sizes #33615
  • Core: Fix iframe reference for composed Storybook on a subpath #34100
  • Core: Fix typos: occured -> occurred, recieves -> receives - #33727, thanks @​jonathan-fulton!
  • Core: Handle BROWSER=none correctly and improve error messages - #33730, thanks @​jonathan-fulton!
  • Core: Ignore empty files when indexing - #33782, thanks @​JReinhold!
  • Core: Register CORS middleware before index.json route - #33728, thanks @​jonathan-fulton!
  • Core: Revert Pull Request #33420 from Maelryn/fix/copy-button-overlap - #33877, thanks @​Sidnioulz!
  • Core: Zoom tool refinements - Hide reset button when value is initial - #33635, thanks @​superLipbalm!
  • Docs: Edit JSON button is now accessible at 320x256 viewport (WCAG 2.1 Reflow test) - #33707, thanks @​TheSeydiCharyyev!
  • Docs: Make CSS ordering in DocsContainer more predictable #34015
  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!
  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!
  • HMR: Fix race conditions causing stale play functions to fire on re-rendered stories - #33930, thanks @​copilot-swe-agent!
  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!
  • Maintenance: Use std-env for AI agent detection in telemetry #34114
  • Manifest: Add docs entries to debugger - #33607, thanks @​JReinhold!
  • Manifest: Rename `experimentalComponentsManifest` → `componentsManifest`, default to `true` #33974
  • Manifests: Fix Attached MDX causing wrong component entries #34101
  • Next.js-Vite: Fix failing postcss mutation - #33879, thanks @​valentinpalkovic!
  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!
  • Preact: Support inferring props from component types - #33828, thanks @​JoviDeCroock!
  • React Native Web: Fix inconsistent example stories - #33891, thanks @​danielalanbates!
  • React: Add react-docgen-typescript to component manifest - #33818, thanks @​kasperpeulen!
  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!
  • Test: Fix clearing mocks in Vitest #34078
  • Test: Update @​testing-library/jest-dom - #33928, thanks @​valentinpalkovic!
  • Theming: Export interface declaration for `ThemesGlobals` - #33343, thanks @​icopp!
  • Toolbar: Remove extra toolbar divider when zoom controls not shown - #33731, thanks @​jonathan-fulton!
  • UI: Allow direct kb/mouse actions on zoom tool button - #33496, thanks @​Sidnioulz!
  • UI: Avoid large animation for reduced motion users - #33530, thanks @​Sidnioulz!
  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!
  • UI: Fix `z-index` problem with `popover`s and `modal`s nesting - #33757, thanks @​ndelangen!
  • UI: Fix code/copy buttons overlap with content - #33889, thanks @​Sidnioulz!
  • UI: Fix Copy button overlapping code in portrait mode - #33420, thanks @​Maelryn!
  • UI: Fix modal text selection - #33967, thanks @​Sidnioulz!
  • UI: Fix tab navigation after closing addon panel - #33971, thanks @​copilot-swe-agent!
  • UI: Handle kb nav edge cases when preview and panel are hidden - #33588, thanks @​Sidnioulz!
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!
  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!
  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!
  • UI: Make TagsFilter state persistent #33374
  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!
  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!
  • Viewport: Skip viewport validation before parameters load - #33794, thanks @​ia319!
  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!
  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!
        ### v10.3.0-beta.3## 10.3.0-beta.3
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!

  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!

  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!

  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!

  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!

  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!

          ### v10.3.0-beta.2## 10.3.0-beta.2
    
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!

  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!

  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!

  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!

  • Vue: Make globals reactive in decorators - #34116, thanks @​Sidnioulz!

          ### v10.3.0-beta.1## 10.3.0-beta.1
    
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!

  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!

          ### v10.3.0-beta.0## 10.3.0-beta.0
    
  • Test: Fix clearing mocks in Vitest #34078

  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105

  • UI: Make TagsFilter state persistent #33374

  • A11y: Make resize handles for addon panel and sidebar accessible #33980

  • Maintenance: Use std-env for AI agent detection in telemetry #34114

  • Addon-Vitest: Make Playwright --with-deps platform-aware to avoid sudo prompt on Linux #34121

  • Addon-docs: Restore docs.components overrides for doc blocks #34111

  • Maintenance: Support vite-plugin-svelte7 which supports Vite 8 #34115

  • Core: Fix handling complex viewport sizes #33615

  • Core: Fix iframe reference for composed Storybook on a subpath #34100

  • Manifest: Rename experimentalComponentsManifestcomponentsManifest, default to true #33974

  • Manifests: Fix Attached MDX causing wrong component entries #34101

  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!

  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!

  • Docs: Make CSS ordering in DocsContainer more predictable #34015

          ### v10.3.0-alpha.17## 10.3.0-alpha.17
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!

  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!

  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!

          ### v10.2.19## 10.2.19
    
  • Maintenance: Support vite-plugin-svelte@​7 which supports Vite 8 - #34115, thanks @​valentinpalkovic!

  • Vite: Support Vite 8 - #33788, thanks @​valentinpalkovic!

          ### v10.2.18## 10.2.18
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • Core: Fix error reporting in ManagerErrorBoundary - #33915, thanks @​ghengeveld!

Commit history:
  • f9060d Merge pull request #34632 from rohanadepu/docs/unit-test-user-event-guidance

    docs: prefer userEvent in unit test examples

  • f1363a Bump version from "10.4.0-alpha.14" to "10.4.0-alpha.15" [skip ci]
  • b16225 Merge pull request #34682 from storybookjs/version-non-patch-from-10.4.0-alpha.14

    Release: Prerelease 10.4.0-alpha.15

  • 9681b6 Write changelog for 10.4.0-alpha.15 [skip ci]
  • 4dfac8 Merge pull request #34681 from storybookjs/jeppe/fix-vitest-provide-agent

    Vitest: Fix agent detection breaking runs

  • 1d5ea9 move agent detection to config hook instead of configureVitest

    Co-authored-by: Copilot <copilot@​github.com>

  • 549170 Bump version from "10.4.0-alpha.13" to "10.4.0-alpha.14" [skip ci]
  • fdaa90 Merge pull request #34679 from storybookjs/version-non-patch-from-10.4.0-alpha.13

    Release: Prerelease 10.4.0-alpha.14

  • 075111 Write changelog for 10.4.0-alpha.14 [skip ci]
  • e9fdd8 Merge pull request #34678 from storybookjs/yann/ai-steps-fix

    CLI: Fix agentic check

  • 3ab056 Bump version from "10.4.0-alpha.12" to "10.4.0-alpha.13" [skip ci]
  • b214e9 Merge pull request #34672 from storybookjs/version-non-patch-from-10.4.0-alpha.12

    Release: Prerelease 10.4.0-alpha.13

  • 51bc0e Merge branch 'yann/ai-steps-fix' of github.com:storybookjs/storybook into yann/ai-steps-fix
  • 8981b4 Merge branch 'next' into yann/ai-steps-fix
  • 4ba44a Revert "revert"

    This reverts commit e248e58e6831a723c4f2b7a7c1e0c696eff07606.

  • 52d60c Write changelog for 10.4.0-alpha.13 [skip ci]
  • e0791c Merge pull request #34670 from storybookjs/jeppe/fix-init-telemetry

    Telemetry: Fix delayed init events

  • 79a2f7 fix tests
  • e248e5 revert
  • 870322 fix steps collection
  • 80b733 fix formatting
  • 0457c8 Merge pull request #34652 from storybookjs/rename-affected-related
  • b3365c Use same icon for modified and related
  • a81263 Merge branch 'next' into jeppe/fix-init-telemetry
  • ed0c34 Replace icon for "related" changes
  • e88aee always resolve telemetry state immediately
  • 151d4f Merge pull request #34674 from storybookjs/jeppe/add-addon-mcp

    Build: Add addon-mcp to internal UI Storybook

  • 8174f8 Merge branch 'next' into jeppe/add-addon-mcp
  • a5bc66 add addon-mcp to internal UI Storybook
  • 722b7a Merge branch 'next' into jeppe/fix-init-telemetry

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump typescript from 5.9.2 to 6.0.3

Changelog:
Sourced from releases.
        ### v6.0.3For release notes, check out the [release announcement blog post](https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/).

Downloads are available on:

Downloads are available on:

  • npm

          ### v5.9.3Note: this tag was recreated to point at the correct commit. The npm package contained the correct content.
    

For release notes, check out the release announcement

Downloads are available on:

  • npm

          ### v5.9.2Note: this tag was recreated to point at the correct commit. The npm package contained the correct content.
    

For release notes, check out the release announcement

Downloads are available on:

Commit history:
  • f350b5 Redirect Claude Code to read AGENTS.md (#63446)
  • af087e docs: improve Math.sign JSDoc grammar and clarity (#63433)
  • 55423a Update CONTRIBUTING.md with comment automation policy (#63412)
  • f1a928 Also check package name validity in InstallPackageRequest (#63401)
  • c7a0ae Harden ATA package name filtering (#63368)
  • 5f4350 Require AI disclosure in PR descriptions (#63366)
  • 38c327 Document charCodeAt edge case behavior in first line (#63344)
  • 7b8cb3 Fix redundant leading apostrophe in TS1344 diagnostic message (#63341)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.github.com>
    Co-authored-by: RyanCavanaugh <6685088+RyanCavanaugh@​users.noreply.github.com>

  • 0844c4 Mark class property initializers as outside of CFA containers (#63310)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.github.com>
    Co-authored-by: RyanCavanaugh <6685088+RyanCavanaugh@​users.noreply.github.com>

  • 71586a Bump the github-actions group with 2 updates (#63319)

    Signed-off-by: dependabot[bot] <support@​github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.github.com>

  • 7881fe Add coding agent instructions: refuse PRs unless maintenance mode is acknowledged (#63305)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.github.com>
    Co-authored-by: RyanCavanaugh <6685088+RyanCavanaugh@​users.noreply.github.com>
    Co-authored-by: Ryan Cavanaugh <RyanCavanaugh@​users.noreply.github.com>

  • 77ddb5 Update deps (#63296)
  • 864777 Bump the github-actions group with 3 updates (#63285)

    Signed-off-by: dependabot[bot] <support@​github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.github.com>

  • b103a0 Update readme to note current repo state (#63292)
  • 4f7b41 Bump the github-actions group with 2 updates (#63224)

    Signed-off-by: dependabot[bot] <support@​github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.github.com>

  • 9059e5 Fix missing lib files in reused programs (#63239)
  • c9e742 Port anyFunctionType subtype fix and JSX children NonInferrableType propagation from typescript-go (#63163)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.github.com>
    Co-authored-by: DanielRosenwasser <972891+DanielRosenwasser@​users.noreply.github.com>

  • 206ed1 Deprecate assert in import() (#63172)
  • e688ac Update dependencies (#63156)
  • 29b300 Bump the github-actions group across 1 directory with 2 updates (#63205)

    Signed-off-by: dependabot[bot] <support@​github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.github.com>

  • 0c2c7a DOM update (#63183)
  • 924810 Adds the symbol name to the error message for TS2742 (#63200)
  • 6cf817 discrete pluralizer for lib.esnext.temporal unit unions (#63190)
  • b24015 Eliminate interpolation from workflows (#63188)
  • 347254 Update DOM types (#63137)
  • ad04bf Fix crash in declaration emit with nested binding patterns (#63154)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.github.com>
    Co-authored-by: DanielRosenwasser <972891+DanielRosenwasser@​users.noreply.github.com>

  • 0ed1ee Fix from and with method types of Temporal.PlainMonthDay (#63142)
  • 040c20 Bump github/codeql-action from 4.32.2 to 4.32.3 in the github-actions group (#63145)

    Signed-off-by: dependabot[bot] <support@​github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.github.com>

  • cdc205 Ensure node is installed in release publisher (#63127)
  • cdb583 Bump github/codeql-action from 4.32.0 to 4.32.2 in the github-actions group (#63123)

    Signed-off-by: dependabot[bot] <support@​github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.github.com>

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump @​storybook/addon-docs from 9.1.3 to 10.3.6

Changelog:
Sourced from releases.
        ### v10.4.0-alpha.15## 10.4.0-alpha.15
  • Vitest: Fix agent detection breaking runs - #34681, thanks @​JReinhold!

          ### v10.4.0-alpha.14## 10.4.0-alpha.14
    
  • CLI: Fix agentic check - #34678, thanks @​yannbf!

          ### v10.4.0-alpha.13## 10.4.0-alpha.13
    
  • Addon-Vitest: Use Vitest's provide-API for injecting values - #34518, thanks @​JReinhold!

  • Telemetry: Fix delayed init events - #34670, thanks @​JReinhold!

          ### v10.4.0-alpha.12## 10.4.0-alpha.12
    
  • CLI: Introduce Agentic Setup workflow - #34297, thanks @​yannbf!

          ### v10.4.0-alpha.11## 10.4.0-alpha.11
    
  • CLI: Change mock event detection - #34586, thanks @​yannbf!

  • Core: Ensure process termination on SIGINT when telemetry is disabled - #34585, thanks @​ghengeveld!

  • Core: Show "new" status on newly added individual stories - #34504, thanks @​ghengeveld!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • Telemetry: Add sidebar filter telemetry for change detection - #34533, thanks @​valentinpalkovic!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.3.6## 10.3.6
    
  • ESLint: Update deprecated @​storybook/test reference to storybook/test - #34430, thanks @​venkat22022202!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.4.0-alpha.10## 10.4.0-alpha.10
    
  • Sidebar: Fix clear status button to only clear test statuses - #34478, thanks @​valentinpalkovic!

  • Telemetry: Centralize disable logic with module-level flag - #34485, thanks @​valentinpalkovic!

          ### v10.4.0-alpha.9## 10.4.0-alpha.9
    
  • A11y: Improve boolean control contrast in forced colors mode - #34204, thanks @​anchmelev!

  • Addon-Docs: Avoid rerendering static Source blocks - #34206, thanks @​anchmelev!

  • CLI: Streamline Node.js version detection code - #34440, thanks @​Sidnioulz!

  • Core: Improve startup performance by deferring change detection initialization - #34498, thanks @​ghengeveld!

  • Core: Normalize file paths in ChangeDetectionService and trace-changed for Windows support - #34445, thanks @​ghengeveld!

  • Fix: Add vite-plus vendored libraries version detection - #34509, thanks @​huang-julien!

  • Nextjs: Handle node builtin webpack imports - #34494, thanks @​JReinhold!

  • React: Add subcomponents to component manifests - #34428, thanks @​kasperpeulen!

  • Vue3: Clear stale args/globals when nextArgs is empty in updateArgs - #34409, thanks @​whdjh!

          ### v10.4.0-alpha.8## 10.4.0-alpha.8
    
  • A11y: Add aria-live announcements via @​react-aria/live-announcer - #33970, thanks @​copilot-swe-agent!

  • Actions: Fix state mutation and keep newest actions when limit reached - #34286, thanks @​Sidnioulz!

  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

  • Core: Implement Git change detection - #34420, thanks @​ghengeveld!

  • Core: Rename preview.ts to preview.tsx in generated projects - #34396, thanks @​Sidnioulz!

  • Sidebar: Add dual-slot status icons for change detection and test results - #34346, thanks @​valentinpalkovic!

  • UI: Improve interactions panel accessibility - #34110, thanks @​anchmelev!

          ### v10.3.5## 10.3.5
    
  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

[!NOTE]
Version >=0.5.0 of @&ZeroWidthSpace;storybook/addon-mcp 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 @&ZeroWidthSpace;storybook/addon-mcp to keep the docs toolset in the MCP server.

        ### v10.4.0-alpha.7## 10.4.0-alpha.7
  • CLI: Explicitly tell whether smoke tests passed or failed - #34419, thanks @​Sidnioulz!

  • Core: Add `ChangeDetectionService` and wire up builder-vite - #34369, thanks @​ghengeveld!

  • Maintenance: Extract parseFilterParam shared helper from tags and statuses modules - #34436, thanks @​mixelburg!

  • Sidebar: Add status-based filtering with refactored status architecture - #34339, thanks @​valentinpalkovic!

  • UI: Fix global shortcuts not showing region focus indicator - #34201, thanks @​Sidnioulz!

          ### v10.3.4## 10.3.4
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

          ### v10.4.0-alpha.6## 10.4.0-alpha.6
    
  • Builder-Vite: Add onModuleGraphChange method - #34323, thanks @​ghengeveld!

  • CLI: Add automigrate check for 'storybook' package name conflict - #34290, thanks @​whdjh!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Maintenance: Add assertions outside step incorrectly nested in interactions panel - #34296, thanks @​majiayu000!

  • Maintenance: Extract getBuilderOptions helper across framewo… - #34260, thanks @​alex-js-ltd!

  • Maintenance: Use errorToErrorLike in boot-test-runner for consistent stack deduplication - #34385, thanks @​mixelburg!

  • Onboarding: Fix checklist MDX instructions - #33193, thanks @​kylegach!

  • React-Docgen: Add tsconfig fallback chain and warning for monorepos - #34353, thanks @​viditkbhatnagar!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • UI: Fix mobile navigation when renderLabel returns a React node - #34262, thanks @​Nathan54Villaume!

  • Vite: Use vite hook filter for performance improvements - #34022, thanks @​huang-julien!

          ### v10.4.0-alpha.5## 10.4.0-alpha.5
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Fix Next.js Vite automigration corrupting configs already using `@​storybook/nextjs-vite` - #34249, thanks @​nathanjessen!

  • Core: Add changeDetection feature flag - #34314, thanks @​valentinpalkovic!

  • Manager: URL-based tag filter state + filter-aware initial story selection - #34283, thanks @​valentinpalkovic!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

  • Refactor: Extract shared `PseudoStateGrid` component in pseudo-states stories - #34334, thanks @​copilot-swe-agent!

          ### v10.4.0-alpha.4## 10.4.0-alpha.4
    
  • Addon-Docs: Add Reset story button to re-render stories in docs - #34086, thanks @​6810779s!

  • Code: Fix inline code blocks inside links removing link affordance - #33903, thanks @​yatishgoel!

  • Controls: Add maxPresetColors option to ColorControl - #33998, thanks @​mixelburg!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • Dependencies: Update `vite-plugin-storybook-nextjs` to ^3.2.4 - #34280, thanks @​k35o!

  • React: Add component metadata extraction via Volar-style LanguageService - #33914, thanks @​kasperpeulen!

  • StatusValue: Add 'status-value:<new|modified|affected>' - #34305, thanks @​valentinpalkovic!

  • UI: Ensure Controls panel can scroll horizontally for now - #34248, thanks @​Sidnioulz!

          ### v10.4.0-alpha.3## 10.4.0-alpha.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

  • Angular: Use Story ID for renderer IDs (including standalone stories) - #33982, thanks @​ValentinFunk!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.3.3## 10.3.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

          ### v10.3.2## 10.3.2
    
  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.4.0-alpha.2## 10.4.0-alpha.2
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

  • Maintenance: Remove dead-code copy of wrap-getAbsolutePath-utils - #34168, thanks @​mixelburg!

  • Security: Makes sure `serialize-javascript` is at latest version - #34034, thanks @​50bbx!

          ### v10.4.0-alpha.1## 10.4.0-alpha.1
    
  • Docs: Ensure unique control id attributes across multiple Controls blocks - #34021, thanks @​TheSeydiCharyyev!

          ### v10.3.1## 10.3.1
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

          ### v10.4.0-alpha.0## 10.4.0-alpha.0
    
    
    
    
          ### v10.3.0## 10.3.0
    

> Improved developer experience, AI-assisting tools, and broader ecosystem support

Storybook 10.3 contains hundreds of fixes and improvements including:

  • 🤖 Storybook MCP: Agentic component dev, docs, and test (Preview release for React)
  • ⚡ Vite 8 support
  • ▲ Next.js 16.2 support
  • 📝 ESLint 10 support
  • 〰️ Addon Pseudo-States: Tailwind v4 support
  • 🔧 Addon-Vitest: Simplified configuration - no more setup files required
  • ♿ Numerous accessibility improvements across the UI
List of all updates
  • A11y: Add ScrollArea prop focusable for when it has static children - #33876, thanks @​Sidnioulz!
  • A11y: Ensure popover dialogs have an ARIA label - #33500, thanks @​gayanMatch!
  • A11y: Make resize handles for addon panel and sidebar accessible #33980
  • A11y: Underline MDX links for WCAG SC 1.4.1 compliance - #33139, thanks @​NikhilChowdhury27!
  • Actions: Add expandLevel parameter to configure tree depth - #33977, thanks @​mixelburg!
  • Actions: Fix HandlerFunction type to support async callback props - #33864, thanks @​mixelburg!
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!
  • Addon-Docs: Add support for `sourceState: 'none'` to canvas block parameters - #33627, thanks @​quisido!
  • Addon-docs: Restore `docs.components` overrides for doc blocks #34111
  • Addon-Vitest: Add channel API to programmatically trigger test runs - #33206, thanks @​JReinhold!
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!
  • Addon-Vitest: Make Playwright `--with-deps` platform-aware to avoid `sudo` prompt on Linux #34121
  • Addon-Vitest: Refactor Vitest setup to eliminate the need for a dedicated setup file - #34025, thanks @​valentinpalkovic!
  • Addon-Vitest: Support Vitest canaries - #33833, thanks @​valentinpalkovic!
  • Angular: Add moduleResolution: bundler to tsconfig - #34085, thanks @​valentinpalkovic!
  • Angular: only load webpack dependencies on demand - #34043, thanks @​sod!
  • Angular: Storybook fails with unknown option silent - #33736, thanks @​tanujbhaud!
  • Build: Update @​types/node - #34037, thanks @​valentinpalkovic!
  • Builder-Vite: Centralize Vite plugins for builder-vite and addon-vitest - #33819, thanks @​valentinpalkovic!
  • Builder-Vite: Fix cold-cache vitest failures for story paths containing glob special characters - #34044, thanks @​copilot-swe-agent!
  • Builder-Vite: Use preview annotations as entry points for optimizeDeps - #33875, thanks @​copilot-swe-agent!
  • CI: declare explicit permissions for stale and weekly cron workflows - #33902, thanks @​Rohan5commit!
  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!
  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!
  • CLI: Fix onboarding not opening - #33609, thanks @​ndelangen!
  • CLI: Show multiple favicons warning as debug message - #34069, thanks @​remino!
  • Cli: Use npm for registry URL in PNPMProxy to avoid workspace errors - #33571, thanks @​ia319!
  • Controls: Allow story argTypes to override control: false from meta - #33729, thanks @​jonathan-fulton!
  • Controls: Fix Object contrast issue and tidy up code - #33923, thanks @​Sidnioulz!
  • Core: Ensure telemetry is never triggered on initial load of checklist data - #33918, thanks @​ghengeveld!
  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105
  • Core: Fix false-positive CJS warning when 'exports' appears in strings or comments - #33572, thanks @​reeseo3o!
  • Core: Fix handling complex viewport sizes #33615
  • Core: Fix iframe reference for composed Storybook on a subpath #34100
  • Core: Fix typos: occured -> occurred, recieves -> receives - #33727, thanks @​jonathan-fulton!
  • Core: Handle BROWSER=none correctly and improve error messages - #33730, thanks @​jonathan-fulton!
  • Core: Ignore empty files when indexing - #33782, thanks @​JReinhold!
  • Core: Register CORS middleware before index.json route - #33728, thanks @​jonathan-fulton!
  • Core: Revert Pull Request #33420 from Maelryn/fix/copy-button-overlap - #33877, thanks @​Sidnioulz!
  • Core: Zoom tool refinements - Hide reset button when value is initial - #33635, thanks @​superLipbalm!
  • Docs: Edit JSON button is now accessible at 320x256 viewport (WCAG 2.1 Reflow test) - #33707, thanks @​TheSeydiCharyyev!
  • Docs: Make CSS ordering in DocsContainer more predictable #34015
  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!
  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!
  • HMR: Fix race conditions causing stale play functions to fire on re-rendered stories - #33930, thanks @​copilot-swe-agent!
  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!
  • Maintenance: Use std-env for AI agent detection in telemetry #34114
  • Manifest: Add docs entries to debugger - #33607, thanks @​JReinhold!
  • Manifest: Rename `experimentalComponentsManifest` → `componentsManifest`, default to `true` #33974
  • Manifests: Fix Attached MDX causing wrong component entries #34101
  • Next.js-Vite: Fix failing postcss mutation - #33879, thanks @​valentinpalkovic!
  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!
  • Preact: Support inferring props from component types - #33828, thanks @​JoviDeCroock!
  • React Native Web: Fix inconsistent example stories - #33891, thanks @​danielalanbates!
  • React: Add react-docgen-typescript to component manifest - #33818, thanks @​kasperpeulen!
  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!
  • Test: Fix clearing mocks in Vitest #34078
  • Test: Update @​testing-library/jest-dom - #33928, thanks @​valentinpalkovic!
  • Theming: Export interface declaration for `ThemesGlobals` - #33343, thanks @​icopp!
  • Toolbar: Remove extra toolbar divider when zoom controls not shown - #33731, thanks @​jonathan-fulton!
  • UI: Allow direct kb/mouse actions on zoom tool button - #33496, thanks @​Sidnioulz!
  • UI: Avoid large animation for reduced motion users - #33530, thanks @​Sidnioulz!
  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!
  • UI: Fix `z-index` problem with `popover`s and `modal`s nesting - #33757, thanks @​ndelangen!
  • UI: Fix code/copy buttons overlap with content - #33889, thanks @​Sidnioulz!
  • UI: Fix Copy button overlapping code in portrait mode - #33420, thanks @​Maelryn!
  • UI: Fix modal text selection - #33967, thanks @​Sidnioulz!
  • UI: Fix tab navigation after closing addon panel - #33971, thanks @​copilot-swe-agent!
  • UI: Handle kb nav edge cases when preview and panel are hidden - #33588, thanks @​Sidnioulz!
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!
  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!
  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!
  • UI: Make TagsFilter state persistent #33374
  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!
  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!
  • Viewport: Skip viewport validation before parameters load - #33794, thanks @​ia319!
  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!
  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!
        ### v10.3.0-beta.3## 10.3.0-beta.3
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!

  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!

  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!

  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!

  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!

  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!

          ### v10.3.0-beta.2## 10.3.0-beta.2
    
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!

  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!

  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!

  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!

  • Vue: Make globals reactive in decorators - #34116, thanks @​Sidnioulz!

          ### v10.3.0-beta.1## 10.3.0-beta.1
    
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!

  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!

          ### v10.3.0-beta.0## 10.3.0-beta.0
    
  • Test: Fix clearing mocks in Vitest #34078

  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105

  • UI: Make TagsFilter state persistent #33374

  • A11y: Make resize handles for addon panel and sidebar accessible #33980

  • Maintenance: Use std-env for AI agent detection in telemetry #34114

  • Addon-Vitest: Make Playwright --with-deps platform-aware to avoid sudo prompt on Linux #34121

  • Addon-docs: Restore docs.components overrides for doc blocks #34111

  • Maintenance: Support vite-plugin-svelte7 which supports Vite 8 #34115

  • Core: Fix handling complex viewport sizes #33615

  • Core: Fix iframe reference for composed Storybook on a subpath #34100

  • Manifest: Rename experimentalComponentsManifestcomponentsManifest, default to true #33974

  • Manifests: Fix Attached MDX causing wrong component entries #34101

  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!

  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!

  • Docs: Make CSS ordering in DocsContainer more predictable #34015

          ### v10.3.0-alpha.17## 10.3.0-alpha.17
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!

  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!

  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!

          ### v10.2.19## 10.2.19
    
  • Maintenance: Support vite-plugin-svelte@​7 which supports Vite 8 - #34115, thanks @​valentinpalkovic!

  • Vite: Support Vite 8 - #33788, thanks @​valentinpalkovic!

          ### v10.2.18## 10.2.18
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • Core: Fix error reporting in ManagerErrorBoundary - #33915, thanks @​ghengeveld!

Commit history:
  • f9060d Merge pull request #34632 from rohanadepu/docs/unit-test-user-event-guidance

    docs: prefer userEvent in unit test examples

  • f1363a Bump version from "10.4.0-alpha.14" to "10.4.0-alpha.15" [skip ci]
  • b16225 Merge pull request #34682 from storybookjs/version-non-patch-from-10.4.0-alpha.14

    Release: Prerelease 10.4.0-alpha.15

  • 9681b6 Write changelog for 10.4.0-alpha.15 [skip ci]
  • 4dfac8 Merge pull request #34681 from storybookjs/jeppe/fix-vitest-provide-agent

    Vitest: Fix agent detection breaking runs

  • 1d5ea9 move agent detection to config hook instead of configureVitest

    Co-authored-by: Copilot <copilot@​github.com>

  • 549170 Bump version from "10.4.0-alpha.13" to "10.4.0-alpha.14" [skip ci]
  • fdaa90 Merge pull request #34679 from storybookjs/version-non-patch-from-10.4.0-alpha.13

    Release: Prerelease 10.4.0-alpha.14

  • 075111 Write changelog for 10.4.0-alpha.14 [skip ci]
  • e9fdd8 Merge pull request #34678 from storybookjs/yann/ai-steps-fix

    CLI: Fix agentic check

  • 3ab056 Bump version from "10.4.0-alpha.12" to "10.4.0-alpha.13" [skip ci]
  • b214e9 Merge pull request #34672 from storybookjs/version-non-patch-from-10.4.0-alpha.12

    Release: Prerelease 10.4.0-alpha.13

  • 51bc0e Merge branch 'yann/ai-steps-fix' of github.com:storybookjs/storybook into yann/ai-steps-fix
  • 8981b4 Merge branch 'next' into yann/ai-steps-fix
  • 4ba44a Revert "revert"

    This reverts commit e248e58e6831a723c4f2b7a7c1e0c696eff07606.

  • 52d60c Write changelog for 10.4.0-alpha.13 [skip ci]
  • e0791c Merge pull request #34670 from storybookjs/jeppe/fix-init-telemetry

    Telemetry: Fix delayed init events

  • 79a2f7 fix tests
  • e248e5 revert
  • 870322 fix steps collection
  • 80b733 fix formatting
  • 0457c8 Merge pull request #34652 from storybookjs/rename-affected-related
  • b3365c Use same icon for modified and related
  • a81263 Merge branch 'next' into jeppe/fix-init-telemetry
  • ed0c34 Replace icon for "related" changes
  • e88aee always resolve telemetry state immediately
  • 151d4f Merge pull request #34674 from storybookjs/jeppe/add-addon-mcp

    Build: Add addon-mcp to internal UI Storybook

  • 8174f8 Merge branch 'next' into jeppe/add-addon-mcp
  • a5bc66 add addon-mcp to internal UI Storybook
  • 722b7a Merge branch 'next' into jeppe/fix-init-telemetry

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump @​storybook/web-components-vite from 9.1.3 to 10.3.6

Changelog:
Sourced from releases.
        ### v10.4.0-alpha.15## 10.4.0-alpha.15
  • Vitest: Fix agent detection breaking runs - #34681, thanks @​JReinhold!

          ### v10.4.0-alpha.14## 10.4.0-alpha.14
    
  • CLI: Fix agentic check - #34678, thanks @​yannbf!

          ### v10.4.0-alpha.13## 10.4.0-alpha.13
    
  • Addon-Vitest: Use Vitest's provide-API for injecting values - #34518, thanks @​JReinhold!

  • Telemetry: Fix delayed init events - #34670, thanks @​JReinhold!

          ### v10.4.0-alpha.12## 10.4.0-alpha.12
    
  • CLI: Introduce Agentic Setup workflow - #34297, thanks @​yannbf!

          ### v10.4.0-alpha.11## 10.4.0-alpha.11
    
  • CLI: Change mock event detection - #34586, thanks @​yannbf!

  • Core: Ensure process termination on SIGINT when telemetry is disabled - #34585, thanks @​ghengeveld!

  • Core: Show "new" status on newly added individual stories - #34504, thanks @​ghengeveld!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • Telemetry: Add sidebar filter telemetry for change detection - #34533, thanks @​valentinpalkovic!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.3.6## 10.3.6
    
  • ESLint: Update deprecated @​storybook/test reference to storybook/test - #34430, thanks @​venkat22022202!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.4.0-alpha.10## 10.4.0-alpha.10
    
  • Sidebar: Fix clear status button to only clear test statuses - #34478, thanks @​valentinpalkovic!

  • Telemetry: Centralize disable logic with module-level flag - #34485, thanks @​valentinpalkovic!

          ### v10.4.0-alpha.9## 10.4.0-alpha.9
    
  • A11y: Improve boolean control contrast in forced colors mode - #34204, thanks @​anchmelev!

  • Addon-Docs: Avoid rerendering static Source blocks - #34206, thanks @​anchmelev!

  • CLI: Streamline Node.js version detection code - #34440, thanks @​Sidnioulz!

  • Core: Improve startup performance by deferring change detection initialization - #34498, thanks @​ghengeveld!

  • Core: Normalize file paths in ChangeDetectionService and trace-changed for Windows support - #34445, thanks @​ghengeveld!

  • Fix: Add vite-plus vendored libraries version detection - #34509, thanks @​huang-julien!

  • Nextjs: Handle node builtin webpack imports - #34494, thanks @​JReinhold!

  • React: Add subcomponents to component manifests - #34428, thanks @​kasperpeulen!

  • Vue3: Clear stale args/globals when nextArgs is empty in updateArgs - #34409, thanks @​whdjh!

          ### v10.4.0-alpha.8## 10.4.0-alpha.8
    
  • A11y: Add aria-live announcements via @​react-aria/live-announcer - #33970, thanks @​copilot-swe-agent!

  • Actions: Fix state mutation and keep newest actions when limit reached - #34286, thanks @​Sidnioulz!

  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

  • Core: Implement Git change detection - #34420, thanks @​ghengeveld!

  • Core: Rename preview.ts to preview.tsx in generated projects - #34396, thanks @​Sidnioulz!

  • Sidebar: Add dual-slot status icons for change detection and test results - #34346, thanks @​valentinpalkovic!

  • UI: Improve interactions panel accessibility - #34110, thanks @​anchmelev!

          ### v10.3.5## 10.3.5
    
  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

[!NOTE]
Version >=0.5.0 of @&ZeroWidthSpace;storybook/addon-mcp 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 @&ZeroWidthSpace;storybook/addon-mcp to keep the docs toolset in the MCP server.

        ### v10.4.0-alpha.7## 10.4.0-alpha.7
  • CLI: Explicitly tell whether smoke tests passed or failed - #34419, thanks @​Sidnioulz!

  • Core: Add `ChangeDetectionService` and wire up builder-vite - #34369, thanks @​ghengeveld!

  • Maintenance: Extract parseFilterParam shared helper from tags and statuses modules - #34436, thanks @​mixelburg!

  • Sidebar: Add status-based filtering with refactored status architecture - #34339, thanks @​valentinpalkovic!

  • UI: Fix global shortcuts not showing region focus indicator - #34201, thanks @​Sidnioulz!

          ### v10.3.4## 10.3.4
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

          ### v10.4.0-alpha.6## 10.4.0-alpha.6
    
  • Builder-Vite: Add onModuleGraphChange method - #34323, thanks @​ghengeveld!

  • CLI: Add automigrate check for 'storybook' package name conflict - #34290, thanks @​whdjh!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Maintenance: Add assertions outside step incorrectly nested in interactions panel - #34296, thanks @​majiayu000!

  • Maintenance: Extract getBuilderOptions helper across framewo… - #34260, thanks @​alex-js-ltd!

  • Maintenance: Use errorToErrorLike in boot-test-runner for consistent stack deduplication - #34385, thanks @​mixelburg!

  • Onboarding: Fix checklist MDX instructions - #33193, thanks @​kylegach!

  • React-Docgen: Add tsconfig fallback chain and warning for monorepos - #34353, thanks @​viditkbhatnagar!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • UI: Fix mobile navigation when renderLabel returns a React node - #34262, thanks @​Nathan54Villaume!

  • Vite: Use vite hook filter for performance improvements - #34022, thanks @​huang-julien!

          ### v10.4.0-alpha.5## 10.4.0-alpha.5
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Fix Next.js Vite automigration corrupting configs already using `@​storybook/nextjs-vite` - #34249, thanks @​nathanjessen!

  • Core: Add changeDetection feature flag - #34314, thanks @​valentinpalkovic!

  • Manager: URL-based tag filter state + filter-aware initial story selection - #34283, thanks @​valentinpalkovic!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

  • Refactor: Extract shared `PseudoStateGrid` component in pseudo-states stories - #34334, thanks @​copilot-swe-agent!

          ### v10.4.0-alpha.4## 10.4.0-alpha.4
    
  • Addon-Docs: Add Reset story button to re-render stories in docs - #34086, thanks @​6810779s!

  • Code: Fix inline code blocks inside links removing link affordance - #33903, thanks @​yatishgoel!

  • Controls: Add maxPresetColors option to ColorControl - #33998, thanks @​mixelburg!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • Dependencies: Update `vite-plugin-storybook-nextjs` to ^3.2.4 - #34280, thanks @​k35o!

  • React: Add component metadata extraction via Volar-style LanguageService - #33914, thanks @​kasperpeulen!

  • StatusValue: Add 'status-value:<new|modified|affected>' - #34305, thanks @​valentinpalkovic!

  • UI: Ensure Controls panel can scroll horizontally for now - #34248, thanks @​Sidnioulz!

          ### v10.4.0-alpha.3## 10.4.0-alpha.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

  • Angular: Use Story ID for renderer IDs (including standalone stories) - #33982, thanks @​ValentinFunk!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.3.3## 10.3.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

          ### v10.3.2## 10.3.2
    
  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.4.0-alpha.2## 10.4.0-alpha.2
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

  • Maintenance: Remove dead-code copy of wrap-getAbsolutePath-utils - #34168, thanks @​mixelburg!

  • Security: Makes sure `serialize-javascript` is at latest version - #34034, thanks @​50bbx!

          ### v10.4.0-alpha.1## 10.4.0-alpha.1
    
  • Docs: Ensure unique control id attributes across multiple Controls blocks - #34021, thanks @​TheSeydiCharyyev!

          ### v10.3.1## 10.3.1
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

          ### v10.4.0-alpha.0## 10.4.0-alpha.0
    
    
    
    
          ### v10.3.0## 10.3.0
    

> Improved developer experience, AI-assisting tools, and broader ecosystem support

Storybook 10.3 contains hundreds of fixes and improvements including:

  • 🤖 Storybook MCP: Agentic component dev, docs, and test (Preview release for React)
  • ⚡ Vite 8 support
  • ▲ Next.js 16.2 support
  • 📝 ESLint 10 support
  • 〰️ Addon Pseudo-States: Tailwind v4 support
  • 🔧 Addon-Vitest: Simplified configuration - no more setup files required
  • ♿ Numerous accessibility improvements across the UI
List of all updates
  • A11y: Add ScrollArea prop focusable for when it has static children - #33876, thanks @​Sidnioulz!
  • A11y: Ensure popover dialogs have an ARIA label - #33500, thanks @​gayanMatch!
  • A11y: Make resize handles for addon panel and sidebar accessible #33980
  • A11y: Underline MDX links for WCAG SC 1.4.1 compliance - #33139, thanks @​NikhilChowdhury27!
  • Actions: Add expandLevel parameter to configure tree depth - #33977, thanks @​mixelburg!
  • Actions: Fix HandlerFunction type to support async callback props - #33864, thanks @​mixelburg!
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!
  • Addon-Docs: Add support for `sourceState: 'none'` to canvas block parameters - #33627, thanks @​quisido!
  • Addon-docs: Restore `docs.components` overrides for doc blocks #34111
  • Addon-Vitest: Add channel API to programmatically trigger test runs - #33206, thanks @​JReinhold!
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!
  • Addon-Vitest: Make Playwright `--with-deps` platform-aware to avoid `sudo` prompt on Linux #34121
  • Addon-Vitest: Refactor Vitest setup to eliminate the need for a dedicated setup file - #34025, thanks @​valentinpalkovic!
  • Addon-Vitest: Support Vitest canaries - #33833, thanks @​valentinpalkovic!
  • Angular: Add moduleResolution: bundler to tsconfig - #34085, thanks @​valentinpalkovic!
  • Angular: only load webpack dependencies on demand - #34043, thanks @​sod!
  • Angular: Storybook fails with unknown option silent - #33736, thanks @​tanujbhaud!
  • Build: Update @​types/node - #34037, thanks @​valentinpalkovic!
  • Builder-Vite: Centralize Vite plugins for builder-vite and addon-vitest - #33819, thanks @​valentinpalkovic!
  • Builder-Vite: Fix cold-cache vitest failures for story paths containing glob special characters - #34044, thanks @​copilot-swe-agent!
  • Builder-Vite: Use preview annotations as entry points for optimizeDeps - #33875, thanks @​copilot-swe-agent!
  • CI: declare explicit permissions for stale and weekly cron workflows - #33902, thanks @​Rohan5commit!
  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!
  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!
  • CLI: Fix onboarding not opening - #33609, thanks @​ndelangen!
  • CLI: Show multiple favicons warning as debug message - #34069, thanks @​remino!
  • Cli: Use npm for registry URL in PNPMProxy to avoid workspace errors - #33571, thanks @​ia319!
  • Controls: Allow story argTypes to override control: false from meta - #33729, thanks @​jonathan-fulton!
  • Controls: Fix Object contrast issue and tidy up code - #33923, thanks @​Sidnioulz!
  • Core: Ensure telemetry is never triggered on initial load of checklist data - #33918, thanks @​ghengeveld!
  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105
  • Core: Fix false-positive CJS warning when 'exports' appears in strings or comments - #33572, thanks @​reeseo3o!
  • Core: Fix handling complex viewport sizes #33615
  • Core: Fix iframe reference for composed Storybook on a subpath #34100
  • Core: Fix typos: occured -> occurred, recieves -> receives - #33727, thanks @​jonathan-fulton!
  • Core: Handle BROWSER=none correctly and improve error messages - #33730, thanks @​jonathan-fulton!
  • Core: Ignore empty files when indexing - #33782, thanks @​JReinhold!
  • Core: Register CORS middleware before index.json route - #33728, thanks @​jonathan-fulton!
  • Core: Revert Pull Request #33420 from Maelryn/fix/copy-button-overlap - #33877, thanks @​Sidnioulz!
  • Core: Zoom tool refinements - Hide reset button when value is initial - #33635, thanks @​superLipbalm!
  • Docs: Edit JSON button is now accessible at 320x256 viewport (WCAG 2.1 Reflow test) - #33707, thanks @​TheSeydiCharyyev!
  • Docs: Make CSS ordering in DocsContainer more predictable #34015
  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!
  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!
  • HMR: Fix race conditions causing stale play functions to fire on re-rendered stories - #33930, thanks @​copilot-swe-agent!
  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!
  • Maintenance: Use std-env for AI agent detection in telemetry #34114
  • Manifest: Add docs entries to debugger - #33607, thanks @​JReinhold!
  • Manifest: Rename `experimentalComponentsManifest` → `componentsManifest`, default to `true` #33974
  • Manifests: Fix Attached MDX causing wrong component entries #34101
  • Next.js-Vite: Fix failing postcss mutation - #33879, thanks @​valentinpalkovic!
  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!
  • Preact: Support inferring props from component types - #33828, thanks @​JoviDeCroock!
  • React Native Web: Fix inconsistent example stories - #33891, thanks @​danielalanbates!
  • React: Add react-docgen-typescript to component manifest - #33818, thanks @​kasperpeulen!
  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!
  • Test: Fix clearing mocks in Vitest #34078
  • Test: Update @​testing-library/jest-dom - #33928, thanks @​valentinpalkovic!
  • Theming: Export interface declaration for `ThemesGlobals` - #33343, thanks @​icopp!
  • Toolbar: Remove extra toolbar divider when zoom controls not shown - #33731, thanks @​jonathan-fulton!
  • UI: Allow direct kb/mouse actions on zoom tool button - #33496, thanks @​Sidnioulz!
  • UI: Avoid large animation for reduced motion users - #33530, thanks @​Sidnioulz!
  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!
  • UI: Fix `z-index` problem with `popover`s and `modal`s nesting - #33757, thanks @​ndelangen!
  • UI: Fix code/copy buttons overlap with content - #33889, thanks @​Sidnioulz!
  • UI: Fix Copy button overlapping code in portrait mode - #33420, thanks @​Maelryn!
  • UI: Fix modal text selection - #33967, thanks @​Sidnioulz!
  • UI: Fix tab navigation after closing addon panel - #33971, thanks @​copilot-swe-agent!
  • UI: Handle kb nav edge cases when preview and panel are hidden - #33588, thanks @​Sidnioulz!
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!
  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!
  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!
  • UI: Make TagsFilter state persistent #33374
  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!
  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!
  • Viewport: Skip viewport validation before parameters load - #33794, thanks @​ia319!
  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!
  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!
        ### v10.3.0-beta.3## 10.3.0-beta.3
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!

  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!

  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!

  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!

  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!

  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!

          ### v10.3.0-beta.2## 10.3.0-beta.2
    
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!

  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!

  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!

  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!

  • Vue: Make globals reactive in decorators - #34116, thanks @​Sidnioulz!

          ### v10.3.0-beta.1## 10.3.0-beta.1
    
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!

  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!

          ### v10.3.0-beta.0## 10.3.0-beta.0
    
  • Test: Fix clearing mocks in Vitest #34078

  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105

  • UI: Make TagsFilter state persistent #33374

  • A11y: Make resize handles for addon panel and sidebar accessible #33980

  • Maintenance: Use std-env for AI agent detection in telemetry #34114

  • Addon-Vitest: Make Playwright --with-deps platform-aware to avoid sudo prompt on Linux #34121

  • Addon-docs: Restore docs.components overrides for doc blocks #34111

  • Maintenance: Support vite-plugin-svelte7 which supports Vite 8 #34115

  • Core: Fix handling complex viewport sizes #33615

  • Core: Fix iframe reference for composed Storybook on a subpath #34100

  • Manifest: Rename experimentalComponentsManifestcomponentsManifest, default to true #33974

  • Manifests: Fix Attached MDX causing wrong component entries #34101

  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!

  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!

  • Docs: Make CSS ordering in DocsContainer more predictable #34015

          ### v10.3.0-alpha.17## 10.3.0-alpha.17
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!

  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!

  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!

          ### v10.2.19## 10.2.19
    
  • Maintenance: Support vite-plugin-svelte@​7 which supports Vite 8 - #34115, thanks @​valentinpalkovic!

  • Vite: Support Vite 8 - #33788, thanks @​valentinpalkovic!

          ### v10.2.18## 10.2.18
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • Core: Fix error reporting in ManagerErrorBoundary - #33915, thanks @​ghengeveld!

Commit history:
  • f9060d Merge pull request #34632 from rohanadepu/docs/unit-test-user-event-guidance

    docs: prefer userEvent in unit test examples

  • f1363a Bump version from "10.4.0-alpha.14" to "10.4.0-alpha.15" [skip ci]
  • b16225 Merge pull request #34682 from storybookjs/version-non-patch-from-10.4.0-alpha.14

    Release: Prerelease 10.4.0-alpha.15

  • 9681b6 Write changelog for 10.4.0-alpha.15 [skip ci]
  • 4dfac8 Merge pull request #34681 from storybookjs/jeppe/fix-vitest-provide-agent

    Vitest: Fix agent detection breaking runs

  • 1d5ea9 move agent detection to config hook instead of configureVitest

    Co-authored-by: Copilot <copilot@​github.com>

  • 549170 Bump version from "10.4.0-alpha.13" to "10.4.0-alpha.14" [skip ci]
  • fdaa90 Merge pull request #34679 from storybookjs/version-non-patch-from-10.4.0-alpha.13

    Release: Prerelease 10.4.0-alpha.14

  • 075111 Write changelog for 10.4.0-alpha.14 [skip ci]
  • e9fdd8 Merge pull request #34678 from storybookjs/yann/ai-steps-fix

    CLI: Fix agentic check

  • 3ab056 Bump version from "10.4.0-alpha.12" to "10.4.0-alpha.13" [skip ci]
  • b214e9 Merge pull request #34672 from storybookjs/version-non-patch-from-10.4.0-alpha.12

    Release: Prerelease 10.4.0-alpha.13

  • 51bc0e Merge branch 'yann/ai-steps-fix' of github.com:storybookjs/storybook into yann/ai-steps-fix
  • 8981b4 Merge branch 'next' into yann/ai-steps-fix
  • 4ba44a Revert "revert"

    This reverts commit e248e58e6831a723c4f2b7a7c1e0c696eff07606.

  • 52d60c Write changelog for 10.4.0-alpha.13 [skip ci]
  • e0791c Merge pull request #34670 from storybookjs/jeppe/fix-init-telemetry

    Telemetry: Fix delayed init events

  • 79a2f7 fix tests
  • e248e5 revert
  • 870322 fix steps collection
  • 80b733 fix formatting
  • 0457c8 Merge pull request #34652 from storybookjs/rename-affected-related
  • b3365c Use same icon for modified and related
  • a81263 Merge branch 'next' into jeppe/fix-init-telemetry
  • ed0c34 Replace icon for "related" changes
  • e88aee always resolve telemetry state immediately
  • 151d4f Merge pull request #34674 from storybookjs/jeppe/add-addon-mcp

    Build: Add addon-mcp to internal UI Storybook

  • 8174f8 Merge branch 'next' into jeppe/add-addon-mcp
  • a5bc66 add addon-mcp to internal UI Storybook
  • 722b7a Merge branch 'next' into jeppe/fix-init-telemetry

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump @​michijs/storybook-utils from 8.4.7 to 8.4.8

Changelog:
Sourced from releases.
        ### 8.4.8## What's Changed

New Contributors

Full Changelog: https://github.com/michijs/storybook-utils/compare/v8.4.7...8.4.8

        ### v8.4.8-beta.8Automatic release


        ### v8.4.8-beta.7Automatic release


        ### v8.4.8-beta.6Automatic release


        ### v8.4.8-beta.5Automatic release


        ### v8.4.8-beta.4Automatic release


        ### v8.4.8-beta.3Automatic release


        ### v8.4.8-beta.2Automatic release


        ### v8.4.8-beta.1Automatic release


        ### v8.4.8-beta.0Automatic release


        ### v8.4.7Bump dependencies
Commit history:

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump bun from 1.2.21 to 1.3.13

Changelog:
Sourced from releases.
        ### bun-v1.3.13To install Bun v1.3.13
curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.13:

bun upgrade

Read Bun v1.3.13's release notes on Bun's blog

Thanks to 8 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.12:

bun upgrade

Read Bun v1.3.12's release notes on Bun's blog

Thanks to 8 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.11:

bun upgrade

Read Bun v1.3.11's release notes on Bun's blog

Thanks to 15 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.10:

bun upgrade

Read Bun v1.3.10's release notes on Bun's blog

Thanks to 11 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.9:

bun upgrade

Read Bun v1.3.9's release notes on Bun's blog

Thanks to 10 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.8:

bun upgrade

Read Bun v1.3.8's release notes on Bun's blog

Thanks to 4 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.7:

bun upgrade

Read Bun v1.3.7's release notes on Bun's blog

Thanks to 11 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.6:

bun upgrade

Read Bun v1.3.6's release notes on Bun's blog

Thanks to 23 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.5:

bun upgrade

Read Bun v1.3.5's release notes on Bun's blog

Thanks to 10 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.4:

bun upgrade

Read Bun v1.3.4's release notes on Bun's blog

Thanks to 14 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.3:

bun upgrade

Read Bun v1.3.3's release notes on Bun's blog

Thanks to 19 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.2:

bun upgrade

Read Bun v1.3.2's release notes on Bun's blog

Thanks to 18 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.1:

bun upgrade

Read Bun v1.3.1's release notes on Bun's blog

Thanks to 15 contributors!

Special thanks to Martin Schwarzl of Cloudflare for fuzzing & reporting several bugs!!

        ### bun-v1.3.0

Read the blog post

Group 77

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3:

bun upgrade
        ### bun-v1.2.23To install Bun v1.2.23
curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.2.23:

bun upgrade

Read Bun v1.2.23's release notes on Bun's blog

Thanks to 16 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.2.22:

bun upgrade

Read Bun v1.2.22's release notes on Bun's blog

Thanks to 14 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.2.21:

bun upgrade

Read Bun v1.2.21's release notes on Bun's blog

Thanks to 23 contributors!

Commit history:
  • 191edc image: preserve ICC profile through WebP decode/encode (#30211)

    Closes #30197. Follow-up to #30201, which added ICC carry-through for
    JPEG and PNG but left WebP dropping the profile because
    libwebpmux/libwebpdemux weren't linked.

    Repro

    // any JPEG/PNG with an embedded ICC profile — P3, Adobe RGB, Jpegli XYB
    await Bun.file("p3.png").image().webp().write("out.webp");
    // out.webp had no ICCP chunk → viewers reinterpret as sRGB → colours shift

    And the reverse direction: a WebP carrying an ICCP chunk lost it on
    decode, so webp → png/jpeg also shifted colour.

    Cause

    WebP stores ICC profiles in an ICCP chunk inside a VP8X RIFF container
    that wraps the VP8/VP8L bitstream. WebPDecodeRGBA/WebPEncodeRGBA
    only touch the bitstream chunk; reading or writing sibling chunks needs
    the separate demux/mux APIs, and Bun only compiled
    src/{dec,enc,dsp,utils}.

    Fix

    Build (scripts/build/deps/libwebp.ts): add src/demux/*.c and
    src/mux/*.c from the same libwebp checkout. Plain C, no new deps, same
    include paths.

    Decode (src/image/codec_webp.zig): after WebPDecodeRGBA, run
    WebPDemux on the original bytes, check WEBP_FF_FORMAT_FLAGS & ICCP_FLAG, and WebPDemuxGetChunk("ICCP") the profile into
    Decoded.icc_profile (duped into bun.default_allocator to match
    JPEG/PNG ownership). A plain VP8/VP8L WebP with no VP8X wrapper falls
    through with null.

    Encode: webp.encode now takes icc_profile: ?[]const u8. When
    null/empty, keep the existing one-shot WebPEncodeRGBA fast path
    (bare VP8/VP8L, no VP8X). When set, pass the bitstream through
    WebPMuxSetImage + WebPMuxSetChunk("ICCP") + WebPMuxAssemble to
    produce a VP8X-wrapped file and hand the assembled buffer to JS with
    WebPFree as the finaliser.

    codecs.zig / Image.zig / bun.d.ts comments updated to drop the
    "WebP loses the profile" caveat.

    Verification

    New tests in the existing describe("ICC profile") block of
    test/js/bun/image/image.test.ts walk the output RIFF container to find
    the ICCP fourcc and compare the payload byte-for-byte:

    • PNG iCCP → WebP lossy → ICCP chunk present, VP8X flag bit set
    • PNG iCCP → WebP lossless → ICCP chunk present
    • WebP ICCP → PNG → iCCP chunk present (exercises demux)
    • WebP → WebP round-trip preserves profile
    • resize → WebP preserves profile
    • source without profile → WebP stays a bare VP8/VP8L (no VP8X wrapper)
    bun bd test test/js/bun/image/image.test.ts
    # 93 pass, 2 skip (macOS-only GIF parity), 0 fail
    

    Gate: with src/ + packages/ stashed and rebuilt, 5 of the 6 new WebP
    tests fail (Received: null); with the fix, all 16 ICC tests pass.


    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • 38a6a7 Fix use-after-free resolving external URL specifiers with non-ASCII characters (#30223)

    What

    Fixes an ASAN use-after-poison crash when resolving http://,
    https://, or // specifiers that contain non-ASCII characters.

    Bun.resolveSync("http://localhost/path?query=´5&foo=bar", import.meta.dir);
    // or
    require("http://localhost/path?query=´5&foo=bar");

    Why

    When a specifier contains non-ASCII characters, specifier.toUTF8() in
    resolveMaybeNeedsTrailingSlash heap-allocates a UTF-8 buffer (because
    the underlying WTF string is Latin-1 or UTF-16 and needs converting).
    For http://, https://, and // prefixes the resolver marks the
    specifier as external and returns a Path.init(import_path) that points
    directly into that temporary buffer.

    resolveMaybeNeedsTrailingSlash then wrapped that slice in a borrowing
    bun.String.init(result.path) and freed the buffer via defer specifier_utf8.deinit() before returning. Callers in both Zig
    (doResolveWithArgs) and C++ (moduleLoaderResolve,
    moduleLoaderImportModule) subsequently read poisoned memory when
    formatting or converting the result to a JS string.

    The query_string out-param had already been fixed to clone in the same
    way; result.path needed the same treatment.

    How

    • Clone result.path into an owned bun.String via
      bun.String.cloneUTF8.
    • The hardcoded-builtin branch that returned specifier now returns
      specifier.dupeRef() so all success paths return an owned string.
    • All callers (doResolveWithArgs, NodeModuleModule.findPath, and the
      two C++ Zig__GlobalObject__resolve call sites) now deref() the
      successful result after use.

    This also fixes a pre-existing leak where onResolveJSC (plugin
    onResolve) returned an owned WTFStringImpl that was never deref'd.

    Found by Fuzzilli.


    Co-authored-by: robobun <robobun@​users.noreply.github.com>
    Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@​users.noreply.github.com>

  • b34c77 Shrink Windows binary: lazy-heap threadlocal PathBuffers + /OPT:SAFEICF (#30219)

    Windows bun.exe is ~15 MB larger than Linux bun and ~40 MB larger
    than macOS. Section-contribution analysis of the canary PDB shows where
    it goes:

    Section Windows Linux Delta Cause
    .text 60.0 MB 55.8 MB +4.2 MB /OPT:NOICF (Linux uses
    -icf=safe)
    .rdata 36.6 MB 32.4 MB +4.2 MB ICU data + no tail merge
    .pdata 1.0 MB +1.0 MB x64 SEH unwind (required)
    .tls 4.8 MB 280 B +4.8 MB this PR
    .reloc 0.2 MB +0.2 MB ASLR

    .tls — 4.8 MB of literal zeros

    5,069,287 of 5,069,312 bytes (99.9995%) of the .tls section are
    0x00. Of that, 4,998,432 bytes come from bun-zig.o.

    Root cause: bun.PathBuffer is [std.fs.max_path_bytes]u8. On Windows
    that's 32767*3+1 = 98302 bytes (vs 4096 on POSIX). There are ~50
    threadlocal var x: bun.PathBuffer = undefined declarations —
    resolver.zig alone has 25 of them in the bufs struct (~2.5 MB).
    PE/COFF has no TLS-BSS equivalent and lld-link doesn't use
    IMAGE_TLS_DIRECTORY.SizeOfZeroFill, so every zero-initialized
    threadlocal is written into the .tls section as raw zeros in the file
    and copied into every thread's TLS block at creation whether or not
    that thread ever touches the resolver.

    Fix: new bun.ThreadlocalBuffers(T) wraps a struct of large buffers
    behind a single lazily-heap-allocated per-thread pointer. 8 bytes on
    disk per instantiation; backing memory allocated on first get().
    Applied to:

    • resolver.zig bufs() (25 PathBuffers + [2*MAX_PATH_BYTES] win32
      buf) — the accessor signature is unchanged so callers don't move
    • package_json.zig (5), resolve_path.zig (3), repository.zig (4),
      extract_tarball.zig (3), router.zig (2 + 1 dead removed)
    • allocators.zig, PackageManager.zig, RuntimeTranspilerCache.zig,
      VirtualMachine.zig, filesystem_router.zig, PackageInstall.zig
      (NodeFS)
    • ParseTask.zig (dead var removed)
    • c-bindings.cpp 64 KB LSHPACK thread_local char[] → lazy new[]

    Expected .tls after: ~8 KB (pointers + the few small non-PathBuffer
    threadlocals).

    Secondary benefit: threads that never hit the resolver/installer (e.g.
    Workers running pure compute) no longer pay ~5 MB of TLS-block copy at
    spawn.

    Linker flags (Windows release)

    • /OPT:NOICF/OPT:SAFEICF. The previous attempt (commit
      d7c6d59f02) used aggressive /OPT:ICF, which folded
      callBigIntConstructor with constructWithBigIntConstructor
      (byte-identical bodies that both throw) → JSC's InternalFunction
      pointer-identity check broke → "BigInt is not a constructor" and
      expect.any(Ctor) failures → reverted in 218430c731. /OPT:SAFEICF
      (lld-specific) skips address-taken functions, which is exactly what
      those ClassInfo function pointers are, so the identity checks survive.
      This is the same guarantee Linux already gets from -Wl,-icf=safe.
    • /OPT:lldtailmerge — lld-specific string-literal tail merging; no
      MSVC link.exe equivalent.
    • /FILEALIGN:0x200 — was in the old CMake config (kept alongside
      the /OPT:NOICF revert), lost in the ninja migration.

    What this does NOT touch

    • Debug symbols: PDB generation unchanged (/DEBUG:FULL still set;
      PDB is a separate file).
    • napi / libuv: src/symbols.def unchanged; no exports removed.
    • ICU data (24.6 MB of .rdata): also present on Linux; macOS uses
      system libicucore. Windows icu.dll isn't ABI-compatible with what
      WebKit needs without upstream changes, so it stays for now. The existing
      icupkg -r filter already removes ~6.8 MB of converters/translit/rbnf.
    • .pdata (1.0 MB): Windows x64 SEH unwind tables are required for
      structured exception handling and can't be stripped.

    Verification

    • zig:check-all passes on all targets
    • resolver / package_json / resolve_path / router / filesystem_router /
      install / http2 (LSHPACK) tests pass on debug+ASAN
    • test/js/bun/jsc/native-constructor-identity.test.ts added as a
      trip-wire for the ICF constructor-identity regression (BigInt/Symbol not
      constructable, expect.any across Map/Set/WeakMap/WeakSet, all 11
      typed-array constructors distinct, Request/Response/Blob distinct)

    Expected Windows x64 reduction: ~5 MB from .tls alone; SAFEICF +
    tailmerge + FILEALIGN should recover another ~2–4 MB from
    .text/.rdata. Actual numbers from Windows CI artifacts.


    Co-authored-by: robobun <robobun@​users.noreply.github.com>
    Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@​users.noreply.github.com>

  • bab007 socket: set Handlers.mode=.client for Windows named-pipe Bun.connect (#30150)

    Repro

    Windows only:

    await Bun.connect({
      unix: '\\\\.\\pipe\\x',
      socket: { data() {}, open() {}, close() {} },
    });
    // then close (or fail) the connection

    On close, Handlers.markInactive() hits active_connections == 0 with
    .mode == .server and does @&ZeroWidthSpace;fieldParentPtr("handlers", this)
    expecting an enclosing Listener — but the handlers live in a
    standalone allocator.create(Handlers) block, so reading
    listen_socket.listener falls past the allocation. Under ASAN that's a
    heap-buffer-overflow; on release it reads garbage and — because the
    .client branch is skipped — leaks the block.

    Cause

    connectInner() calls SocketConfig.fromJS(vm, opts, globalObject, true) at Listener.zig:564. The last argument is is_server, which
    feeds handlers.mode. It was false until 4a06991d3b (#23755) flipped
    it during a bindings-generator refactor.

    The non-pipe path at :797 has always had an explicit handlers_ptr.mode = .client after copying into the heap block (it was
    handlers_ptr.is_server = false before #26539), which masked the flip
    everywhere except the Windows named-pipe early-return at :655–656, which
    never had one.

    is_server is only used to set handlers.mode; nothing else in
    SocketConfig.fromGenerated / Handlers.fromGenerated branches on it.

    Fix

    • Restore is_server=false at the connectInner call site (this is the
      client connect path).
    • Add the same defensive handlers_ptr.mode = .client on the named-pipe
      branch to mirror the non-pipe branch, so the two copies into a
      standalone Handlers block look the same.

    Audited the other standalone allocator.create(Handlers) sites:

    • socket.zig:1557 — sourced from Handlers.fromJS(..., false),
      already .client.
    • socket.zig:2062 — explicit .mode = if (is_server) .duplex_server else .client.

    Verification

    bun run zig:check-all passes (all targets, including both Windows
    arches).

    New Windows-only tests in test/js/bun/net/socket.test.ts:

    • Listen on a named pipe, Bun.connect to it, close → clean exit.
    • Bun.connect to a non-existent pipe → rejects, clean exit.

    Both are spawned in a subprocess so an ASAN crash surfaces as a non-zero
    exit instead of killing the test runner. Skipped on non-Windows (the if (Environment.isWindows) branch is unreachable there, and the non-pipe
    path's :797 override already covers it).


    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • 4f13b9 bun -p: return module completion value, not first yielded await (#30208)

    Repro

    $ bun -p '(await 1) + 1'
    1
    $ bun -p 'await Promise.resolve("hello") + " world"'
    hello

    Expected: 2 and hello world.

    Cause

    --print uses ESM module evaluation and captures the last expression
    value via EvalGlobalObject::moduleLoaderEvaluate in
    src/bun.js/bindings/ZigGlobalObject.cpp. For a module with top-level
    await, JSC generator-ifies the body; the first call into
    moduleLoader->evaluate() yields the awaited value (1), not the
    module's final completion value (2). That yielded value was stored as
    the eval result.

    The async resume path (asyncModuleExecutionResume in
    vendor/WebKit/.../JSMicrotask.cpp) calls module->evaluate()
    directly and bypasses the moduleLoaderEvaluate hook, so the hook
    could never observe the final value and correct itself.

    Fix

    After the initial evaluateNonVirtual call, inspect the module
    record's generator state. If it yielded (state is a number other than
    Executing), the module still has work left and result is the
    awaited value. Store the module's asyncCapability() promise instead
    — its eventual resolution is the module's actual completion value.

    The bun -p loop in src/bun.js.zig already unwraps promises via
    asAnyPromise + Bun__onResolveEntryPointResult, so no Zig-side
    changes are needed. For non-TLA modules, behavior is unchanged (state
    is Executing, result stored as before).

    Verification

    • USE_SYSTEM_BUN=1 bun test test/cli/run/run-eval.test.ts -t 'bun -p'
      → 3 fail, 1 pass
    • bun bd test test/cli/run/run-eval.test.ts -t 'bun -p' → 4 pass
    • Full test/cli/run/run-eval.test.ts (33 tests) and TLA regression
      tests still pass.

    Fixes #30207


    Co-authored-by: robobun <robobun@​bun.sh>

  • 6acb78 Make it easy to compare canary vs previous release build size
  • 31c494 socket: balance ref on synchronous doConnect failure for reused sockets (#30168)

    Repro

    const net = require('node:net');
    for (let i = 0; i < 50_000; i++) {
      await new Promise(r => {
        const s = new net.Socket();
        s.on('error', () => {}).on('close', r);
        s.connect({ path: '/nonexistent.sock' }); // ENOENT, synchronous
      });
    }
    // RSS grows ~17 MB (release) / ~60 MB (debug+ASAN)

    Cause

    Listener.connectInner unconditionally socket.ref()s before calling
    doConnect, for both freshly-allocated sockets and reused ones passed
    as prev (the node:net path — _handle is a detached native socket
    from newDetachedSocket).

    When doConnect fails synchronously (ENOENT unix path, bad fd, EMFILE),
    the socket never leaves .detached, so handleConnectError's
    needs_deref = !this.socket.isDetached() is false and its own deref
    does not fire. The caller is responsible for balancing the ref — but the
    existing line only did so when maybe_previous == null:

    if (maybe_previous == null) socket.deref();

    That guard was added in #23936 to fix the Bun.connect({fd: badFd})
    leak (fresh-socket case) but left the reused-socket case unbalanced: one
    native TCPSocket struct + its connection string leak per failed
    reconnect.

    Fix

    Drop the guard. The ref() at :849 is unconditional, so the balancing
    deref() on sync failure must be too.

    Verification

    New test in test/js/node/net/node-net.test.ts does 20k failed unix
    connects in a subprocess and samples RSS after equal-sized work units. A
    real leak grows linearly; noise plateaus.

    RSS growth over 12.5k post-warmup iterations
    before (debug+ASAN) ~14 MB
    before (release) ~6 MB
    after (debug+ASAN) ±1 MB

    Threshold 3 MB. The original #23936 test (Bun.connect with bad fd) and
    socket-retention.test.ts still pass.


    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • a47ccf socket: null handlers pointer after client-mode Handlers are freed (#30176)

    What

    Follow-up to #30148, which nulls this.handlers in the socket's
    markInactive() after Handlers.markInactive() frees the client-mode
    allocation. That covers the onClose → This.markInactive() path, but
    not the paths where scope.exit() is the decrement that frees the
    handlers — most notably handleConnectError, where the socket never
    reaches markActive() so is_active == false and the deferred
    this.markInactive() is a no-op.

    Handlers.markInactive() (client mode, active_connections → 0) does
    this.deinit(); vm.allocator.destroy(this). Any caller that still holds
    the pointer — the socket's handlers field — must clear it, otherwise:

    • Listener.connectInner at :664 / :728 / :814 — a reconnect through
      the same native socket as prev calls prev_handlers.deinit() then
      allocator.destroy(prev_handlers) on freed memory (UAF + double-free).
    • socket.zig getListener — reads handlers.mode on freed memory.

    Repro

    const net = require('node:net');
    const s = new net.Socket();
    let handle;
    s.on('error', () => {});
    s.once('connectionAttemptFailed', () => { handle = s._handle; });
    s.on('close', () => {
      // handleConnectError's scope.exit() freed the Handlers; the
      // socket-level markInactive() never ran (is_active == false).
      handle.listener;   // ← UAF on current main
    });
    s.connect(1, '127.0.0.1');

    Under debug+ASAN on current main (after #30148):

    AddressSanitizer: use-after-poison
    READ of size 1 ...
      #0 NewSocket(false).getListener  src/bun.js/api/bun/socket.zig:769
    

    Fix

    Handlers.markInactive() and Scope.exit() now return whether the
    allocation was destroyed. This.markInactive() and every scope.exit()
    site in socket.zig null this.handlers when it was. This replaces
    #30148's mode-based check with the precise destroyed signal and extends
    it to the handleConnectError / handleError paths.

    Verification

    Three tests in test/js/node/net/node-net.test.ts (gated to
    debug/ASAN):

    main (incl. #30148) with this PR
    handle.listener after connectError ASAN use-after-poison @​
    getListener undefined
    handle.listener after close passes (covered by #30148)
    passes
    reconnect via saved native handle passes (covered by #30148)
    passes

    The first test is the one that demonstrates this PR's incremental fix.


    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • 797dee crypto: fix f32 precision loss and unit mismatch in randomFill bounds checks (#30134)

    What does this PR do?

    Fixes two bounds-checking bugs in crypto.randomFill /
    crypto.randomFillSync:

    1. Heap overflow via f32 precision loss in the size + offset > length check
    2. Unit mismatch in the 3-arg randomFill(buf, offset, cb)
      default-size computation causing integer underflow or silent under-fill
      for multi-byte typed arrays

    Reproduction

    // (1) writes 1 byte past the end of the allocation instead of throwing
    require('crypto').randomFillSync(new ArrayBuffer(16777218), 16777217, 2);
    
    // (2a) panics in debug / throws spurious ERR_OUT_OF_RANGE in release
    require('crypto').randomFill(new Float64Array(10), 2, () => {});
    
    // (2b) leaves bytes 744..800 un-randomized
    require('crypto').randomFill(new Float64Array(100), 1, () => {});

    Node.js throws ERR_OUT_OF_RANGE for (1) and fills the full tail for
    (2).

    Root cause

    (1) In assertSize, the u32 offset was cast to f32 before
    being added to the f64 size:

    if (size + @&ZeroWidthSpace;as(f32, @&ZeroWidthSpace;floatFromInt(offset)) > @&ZeroWidthSpace;as(f64, @&ZeroWidthSpace;floatFromInt(length))) {

    f32 only represents integers exactly up to 2²⁴ = 16777216. An offset
    of 16777217 rounds down to 16777216, so with length = 16777218 and
    size = 2 the check evaluates 2 + 16777216 > 16777218false, when
    the true sum 16777219 exceeds length. The bogus offset/size are then
    used to slice the buffer (sync) or handed to the threadpool as a raw
    [*]u8 span (async), producing an OOB write.

    (2) In randomFill's 3-arg branch, the default size was computed as
    buf.len - offset where buf.len is the element count but offset
    had already been scaled to a byte offset by assertOffset. For
    Float64Array(10) with offset 2, that's 10 - 16 → usize underflow.

    Fix

    • Change all four f32 casts in assertOffset / assertSize to f64
      (exact for all integers up to 2⁵³, well beyond max_possible_length).
    • In the 3-arg branch, set size_value = .js_undefined to fall through
      to the existing buf.byte_len - offset default, keeping both operands
      in byte units.

    Verification

    • bun bd test test/js/node/crypto/crypto-random.test.ts — 14 pass, 0
      fail
    • test/js/node/test/parallel/test-crypto-random.js — passes
    • test/js/node/test/parallel/test-crypto-randomfillsync-regression.js
      — passes
    • Without the fix, the new tests panic in debug (Zig bounds check /
      integer overflow) and fail in release.

    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • 6d73f5 fs: deref Dirent.path in readdirSync recursive error cleanup (#30167)

    What

    When fs.readdirSync(dir, { recursive: true, withFileTypes: true })
    fails partway through (e.g. a subdirectory returns ELOOP/EACCES on
    open), the error-path cleanup in readdirInner was only calling
    result.name.deref() on each collected Dirent, leaking the ref on
    Dirent.path that was taken via dirent_path_prev.ref() in
    readdirWithEntriesRecursiveSync.

    The async recursive path (AsyncReaddirRecursiveTask.performWork) and
    the non-recursive path (readdirWithEntries) already call
    Dirent.deref() which releases both name and path. This brings the
    sync-recursive error path in line.

    Repro

    const fs = require('fs');
    // dir contains a self-referential symlink at depth 2, so the BFS walker
    // collects a bunch of Dirents before hitting ELOOP and unwinding.
    for (let i = 0; i < 30000; i++) {
      try { fs.readdirSync(dir, { recursive: true, withFileTypes: true }); } catch {}
    }
    // RSS grows linearly with iteration count

    Verification

    The new test builds a wide tree under a long path with a symlink loop at
    depth 2, warms up to saturate ASAN quarantine, then runs 20k failing
    readdirSync calls and asserts RSS growth stays under 64 MB.

    build RSS delta (20k iters after 10k warmup)
    before fix (debug+ASAN) ~130 MB
    before fix (release) ~124 MB
    after fix (debug+ASAN) ~26 MB

    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • d971e4 webcore/Blob: free allocations on truncated structured-clone deserialize (#30152)

    Problem

    _onStructuredCloneDeserialize in src/bun.js/webcore/Blob.zig reads a
    Blob/File from untrusted bytes — reachable via
    require('bun:jsc').deserialize, require('node:v8').deserialize, and
    cross-process IPC advanced serialization. It allocates at several points
    along the way:

    1. readSlice allocates a buffer, reads into it, and returns
      error.TooSmall on a short read — without freeing the buffer.
    2. content_type is allocated with no errdefer; every subsequent
      try leaks it.
    3. The bytes payload is allocated and wrapped in a stack Blob (owning
      a Store) with no errdefer; the following stored_name
      length/payload reads leak the whole thing on truncation.
    4. The stack Blob is heap-promoted via Blob.new; the trailer reads
      (is_jsdom_file, last_modified, v3 File name) then leak the heap
      *Blob, its Store, and its bytes.
    5. The stored_name slice is leaked when the store is null
      (zero-length bytes payload).

    This is distinct from #30072, which fixed the out-of-bounds offset
    clamp in the same function; this is the error-path cleanup.

    Repro

    const { serialize, deserialize } = require("bun:jsc");
    const full = new Uint8Array(
      serialize(new File([Buffer.alloc(65536)], "f", { type: Buffer.alloc(65536, "t").toString() })),
    );
    for (let i = 0; i < 10000; i++) {
      try { deserialize(full.slice(0, full.length - 1)); } catch {}
    }
    // RSS grows unbounded

    Fix

    • readSlice: errdefer allocator.free(slice) so a short read releases
      the buffer.
    • After content_type allocation: errdefer allocator.free(content_type) — it isn't attached to the blob until the
      very end of the success path.
    • Inside the .bytes arm: errdefer blob.deinit() on the stack blob so
      the Store (and its bytes) are released when the stored_name reads
      fail; free name explicitly when there is no store to own it.
    • After the switch: errdefer blob.deinit() on the heap *Blob so
      the trailer reads release the heap object, its Store, and its bytes.

    Verification

    Two new tests in test/js/web/structured-clone-blob-file.test.ts:

    • truncated payload at every byte boundary throws cleanly
      serializes a File, slices it at every byte offset, and asserts each
      deserialize throws rather than crashing or returning a half-built
      Blob. Sweeps every error edge in the decoder.
    • truncated payload does not leak ... — serializes a File with
      64 KiB of content-type and 64 KiB of body, truncates at five points
      chosen to land after each allocation site, and loops deserialize on
      them. Measures RSS across 1500 iterations after a warmup.
    RSS delta over measured window
    without fix (release) 758 MiB
    without fix (bun bd, ASAN) 977 MiB
    with fix (bun bd, ASAN) ~4 MiB (allocator noise, plateaus)

    All 34 tests in the file pass with the fix.


    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • d6f215 fix(Bun.serve): HEAD response Transfer-Encoding/Content-Length freed before write (#30155)

    Repro

    Bun.serve({
      port: 0,
      fetch: () =>
        new Response("hello", {
          headers: [
            ["Transfer-Encoding", "gzip"],
            ["Transfer-Encoding", "chunked"],
          ],
        }),
    });
    // HEAD / → ASAN heap-use-after-free in uWS::HttpResponse::writeHeader

    The duplicate entries make FetchHeaders combine them via
    makeString(), producing a StringImpl held only by the header map —
    the minimal condition for the free to actually happen.

    StringImpl is allocated via bmalloc which ASAN doesn't instrument by
    default; with Malloc=1 (bmalloc → system heap) the debug build
    reports:

    AddressSanitizer: heap-use-after-free
    READ of size 13
      #2 uWS::HttpResponse<false>::writeHeader
      #5 doRenderHeadResponse  RequestContext.zig:1378
    freed by:
      #23 HTTPHeaderMap::remove
      #28 doWriteHeaders       RequestContext.zig:2303
      #29 renderMetadata       RequestContext.zig:2209
      #30 doRenderHeadResponse RequestContext.zig:1377
    

    Cause

    doRenderHeadResponse() calls headers.fastGet(.TransferEncoding),
    which returns a ZigString that borrows the header map entry's
    StringImpl bytes (no ref taken). For an ASCII value, toSlice() also
    borrows rather than copying. It then calls this.renderMetadata(),
    whose doWriteHeaders() does headers.fastRemove(.TransferEncoding)
    (and renderMetadata also swapInitHeaders() + deref()s the whole
    FetchHeaders). When the map held the only reference to the
    StringImpl, it's destroyed right there — and the very next line
    resp.writeHeader("transfer-encoding", transfer_encoding_str.slice())
    writes the freed bytes to the socket.

    The adjacent Content-Length branch has the same bug:
    std.fmt.parseInt() runs on the borrowed slice after
    renderMetadata() has already fastRemove(.ContentLength)'d it.

    Fix

    • Transfer-Encoding: use toSliceClone() instead of toSlice() so
      the value is owned and survives renderMetadata().
    • Content-Length: parse the integer before renderMetadata() (and
      drop the slice immediately), so the borrowed bytes are never touched
      after the header entry is removed. No extra allocation needed since only
      the parsed usize is used afterwards.

    Verification

    New test in test/js/bun/http/bun-server.test.ts (inside the existing
    HEAD requests #15355 block) spawns a subprocess with Malloc=1
    (non-Windows), serves HEAD responses whose Transfer-Encoding /
    Content-Length values are makeString()-combined (sole-owner
    StringImpl), and asserts the raw wire output.

    git stash push -- src/   → test fails with "AddressSanitizer: heap-use-after-free" in stderr
    git stash pop            → test passes
    

    All other tests in the HEAD requests #15355 describe block continue to
    pass.

    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • 096a24 sql(mysql): pin ArrayBuffer backing store while binding BLOB parameters (#30159)

    Repro

    const buf = new ArrayBuffer(64);
    const ta = new Uint8Array(buf);
    for (let i = 0; i < ta.length; i++) ta[i] = i;
    
    const values = [1, ta, "placeholder"];
    let calls = 0;
    Object.defineProperty(values, "2", {
      get() {
        if (++calls >= 2 && buf.byteLength > 0) {
          // zero-copy transfer: same backing pointer
          new Uint8Array(buf.transfer()).fill(0xff);
        }
        return "evil";
      },
    });
    
    await sql.unsafe(`INSERT INTO t (id, data, name) VALUES (?, ?, ?)`, values);
    // stored `data`: 64 × 0xff  — should be 0x00..0x3f

    Cause

    Value.fromJS for MYSQL_TYPE_*BLOB returned
    ZigString.Slice.fromUTF8NeverFree(array_buffer.slice()), borrowing the
    backing store without protecting it.

    MySQLQuery.bind() collects every parameter into a []Value first and
    only then calls execute.write(). Converting later parameters can run
    user JS — array index getters via QueryBindingIterator.next(),
    toJSON via jsonStringifyFast, toString via bun.String.fromJS
    and that JS can transfer()/detach an earlier buffer, or drop the last
    JS reference to it and force GC. execute.write() then reads bytes the
    caller no longer owns.

    For a non-resizable ArrayBuffer, buf.transfer() with no arguments is
    zero-copy in JSC: the new buffer takes ownership of the same backing
    pointer, so overwriting the new buffer mutates exactly what the borrowed
    slice still points at. With a resizing transferToFixedLength(n) the
    old backing store is freed outright.

    (The Postgres path doesn't have this window: PostgresRequest.writeBind
    writes each parameter to the wire inside the loop before touching the
    next one.)

    Fix

    bindAndExecute now runs inside a stack-scoped MarkedArgumentBuffer
    (same pattern as udp_socket.zig sendMany) that Value.fromJS
    appends borrowed buffer/Blob wrappers to, and the backing ArrayBuffer
    is pinned via JSC__JSValue__borrowBytesForOffThread (the same helper
    Bun.Image uses):

    • Oversize/Wasteful/DataView/JSArrayBufferArrayBuffer::pin()
      makes it non-detachable — transfer() hands the user a copy and
      leaves the original backing store intact. The wrapper is appended to the
      MarkedArgumentBuffer so GC can't sweep the cell whose
      RefPtr<ArrayBuffer> keeps the storage alive (params lives on the
      malloc heap and isn't scanned).
    • FastTypedArray (≤ ~1 KB, GC-movable vector) → bytes are duped.
      Pinning would force slowDownAndWasteMemory() which copies anyway.
    • Blob → plain borrow (immutable store, no detach); wrapper appended
      to the MarkedArgumentBuffer so the store survives GC.

    Value.bytes now carries the JSValue to unpin alongside the slice:

    pub const Bytes = struct {
        slice: JSC.ZigString.Slice = .empty,
        pinned: JSC.JSValue = .zero,
    };

    Value.deinit() — already run via Execute.deinit() after
    execute.write(), inside the MarkedArgumentBuffer scope — calls
    JSC__JSValue__unpinArrayBuffer(pinned) and frees the dupe via
    slice.deinit().

    Verification

    test/js/sql/sql-mysql-bind-blob-borrow.test.ts primes the
    prepared-statement cache so the second call goes straight to
    bindAndExecute, then binds [id, Uint8Array(buf), <getter>] where the
    getter transfer()s buf and fills the result with 0xff during the
    bind loop. It also asserts buf is detachable again after the query
    resolves (pin released).

    Fail-before (src/ reverted, test kept):

      {
        "detachableAfter": true,
        "detached": true,
    -   "gotHex": "000102…3f",
    -   "match": true,
    +   "gotHex": "ffffff…ff",
    +   "match": false,
        "originalHex": "000102…3f",
      }
    (fail) mysql (local) > BLOB param backing store is pinned across the bind loop
    

    Pass-after: gotHex == originalHex, match: true, detachableAfter: true (pin released), 5 expect() calls.

  • a50b47 fix(ipc): run SendQueue.deinit() from IPCInstance.deinit on getIPCInstance failure (#30177)

    What

    Follow-up to #30051, which added SendQueue.after_close_task tracking
    so SendQueue.deinit() can cancel a pending _onAfterIPCClosed task
    before the owner frees it.

    IPCInstance.deinit was still TrivialDeinitbun.destroy, so on
    the getIPCInstance error path the embedded SendQueue was never
    deinited and the tracked task was never cancelled.

    On Windows, windowsConfigureClient sets data.socket = .open
    before calling uv_read_start. If uv_read_start fails, it calls
    closeSocket() which queues the _onAfterIPCClosed task (socket was
    .open), returns an error, and getIPCInstance then calls
    instance.deinit() — freeing the IPCInstance and its embedded
    SendQueue with the task still queued.

    Fix

    Replace TrivialDeinit with an explicit deinit that runs
    this.data.deinit() before bun.destroy(this), so the
    after_close_task cancel path added in #30051 actually fires for this
    owner too.

    Test

    Added a case in spawn.ipc.test.ts that drives a child through the
    getIPCInstance error path with an unusable NODE_CHANNEL_FD and
    verifies clean teardown. The specific
    uv_read_start-fails-after-uv_pipe_open-succeeds trigger is
    Windows-only and not deterministically reproducible from userland; the
    test covers the surrounding error-path teardown on both platforms.

    zig:check-all passes on all targets.

    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • 570653 server: hold Response via WeakPtr instead of a raw pointer (#30174)

    What

    RequestContext stored response_ptr: ?*Response and, for plain
    Blob/InternalBlob/WTFStringImpl bodies, left the Response JSValue
    unprotected. renderBytes()tryEnd() can hit backpressure and
    register an onWritable callback, unwinding with response_ptr still
    set. Nothing rooted the Response (RequestContext is a pool struct, not
    GC-visited), so GC could finalize it. If the client then aborted while
    the request body was still .Locked, onAbort() dereferenced a freed
    *Response — heap-use-after-free under ASAN at
    RequestContext.zig:692.

    Repro

    POST → handler returns new Response(8MB string) sync
      → tryEnd() backpressure (client paused) → onWritable registered, return
      → Bun.gc(true) → Response collected, response_ptr dangles
      → client.destroy() → onAbort → deref response_ptr → UAF
    

    ASAN trace (unpatched):

    ==ERROR: AddressSanitizer: use-after-poison
      #0 bun.js.bindings.JSRef.JSRef.tryGet
      #1 bun.js.webcore.Response.getBodyReadableStream
      #2 RequestContext.onAbort src/bun.js/api/server/RequestContext.zig:693
      #3 uWS::HttpContext<false>::onClose
    

    Fix

    Give Response a weak_ptr_data field (mirroring Request.WeakRef)
    and replace response_ptr: ?*Response with response_weakref: Response.WeakRef via bun.ptr.WeakPtr. Response.destroy() now defers
    freeing the allocation until outstanding weak refs drop; WeakRef.get()
    returns null once the contents are gone.

    onAbort / handleResolveStream / handleRejectStream call .get()
    and simply skip the readable-stream cleanup when it's null — a no-op for
    in-memory bodies anyway, since the body was already extracted via
    useAsAnyBlobAllowNonUTF8String() before backpressure.

    File-backed and .Locked bodies continue to protect()
    response_jsvalue as before; those paths need the Response's
    status/headers alive across the async hop for renderMetadata(). The
    hot path (small in-memory responses) no longer needs
    protect()/unprotect().

    The two redundant ctx.response_ptr = response assignments right before
    ctx.render(response) are dropped — render() already sets the weak
    ref.

    Verification

    test/js/bun/http/serve-response-gc-backpressure-abort.test.ts
    (ASAN/debug-only): POST with incomplete chunked body so request_body
    stays .Locked, handler returns a large string Response, client pauses
    so tryEnd() stalls, Bun.gc(true) loop, then client closes.

    • without fix: AddressSanitizer: use-after-poison in onAbort
      Response.getBodyReadableStream
    • with fix: passes, abortCount === iterations, pendingRequests === 0

    Co-authored-by: robobun <robobun@​users.noreply.github.com>

  • 0150c5 worker: fix cross-thread HandleSet race in getHeapSnapshot (#30185)

    test/js/node/worker_threads/worker_threads.test.ts occasionally
    segfaults in CI with

    panic: Segmentation fault at address 0x10
    

    on a GC helper thread:

    wtfThreadEntryPoint
      AutomaticThread::start
        ParallelHelperPool::Thread::work
          Heap::runBeginPhase(GCConductor)::$_1
            SlotVisitor::drainFromShared
              MarkingConstraintSolver::runExecutionThread
                MarkingConstraint::execute   ← "Sh" Strong Handles
                  HandleSet::visitStrongHandles
                    *(nullptr + offsetof(HandleNode, m_value))  = *(0x10)
    

    (decoded from the bun.report trace on build 50529 / 🐧 13
    x64

    and symbolized against that build's bun-profile).

    Cause

    jsWorkerPrototypeFunction_getHeapSnapshotBody does:

    Strong<JSPromise> strong(vm, promise);                      // parent VM's HandleSet
    worker.postTaskToWorkerGlobalScope([strong, parentId](auto& workerCtx) {
        ...
        ScriptExecutionContext::postTaskTo(parentId,
            [strong, snapshot = ...](auto& parentCtx) { ... }); // runs on worker thread
    });

    JSC::Strong<T> has no move constructor. Capturing it by value
    copy-constructs it, which calls HandleSet::allocate() +
    m_strongList.push(); destroying it calls HandleSet::deallocate() +
    NodeList::remove(). Both happen on the worker thread against the
    parent VM's HandleSet, without the parent VM's lock.

    HandleSet::m_strongList is a SentinelLinkedList<HandleNode> — not
    thread-safe. push/remove transiently null m_next/m_prev. The
    parent VM's "Sh" (Strong Handles) marking constraint
    (Heap::addCoreConstraints) iterates that list during GC; when it
    follows a null m_next it reads *((HandleNode*)nullptr)->slot()
    *(0x0 + 0x10).

    The heapHelperPool() is process-global, so the crashing helper thread
    belongs to the parent VM's collector even though the worker VM's
    BunV8HeapSnapshotBuilder full GC is in progress at the same time.

    This has been there since getHeapSnapshot was added — the recent
    worker lifetime rewrites (#29957, #29937) didn't introduce it.

    Fix

    Heap-allocate the Strong<JSPromise> once on the parent thread and pass
    only the raw pointer through the cross-thread lambdas. The worker thread
    never dereferences it, so it never touches the parent VM's HandleSet.
    The parent-side completion lambda resolves the promise and frees the
    handle.

    Worker::postTaskToWorkerGlobalScope now returns bool so a lost race
    to Closing/Closed (worker exited between isOnline() and the post)
    rejects with ERR_WORKER_NOT_RUNNING instead of silently leaking the
    handle. If postTaskTo(parentId, …) on the return trip fails (parent
    context gone), the handle intentionally leaks — deleting a parent-VM
    Strong from the worker thread is exactly the bug we're fixing, and the
    parent VM is tearing down anyway.

    Verification

    Stress fixture (heap-snapshot-gc-race-fixture.js, 300 iterations of
    await worker.getHeapSnapshot(); Bun.gc(true)), 40 runs each on
    linux-x64 release:

    build segfault at 0x10
    52bdf47 (CI artifact, no fix) 15 / 40
    this branch 0 / 40

    The new worker_heap_snapshot_gc.test.ts runs the fixture — 300 iters
    in release, 5 in debug (a single debug heap snapshot takes ~1.6s so the
    race window, which is a handful of instructions after each snapshot, is
    impractical to hit there; the debug pass is a functional check).

    Drive-by: non-LTO strip leaves orphan PT_GNU_EH_FRAME

    While reproducing I hit a second

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump storybook-dark-mode from 4.0.2 to 5.0.0

Changelog:
Sourced from releases.
        ### v5.0.0#### 💥 Breaking Change

🏠 Internal

Authors: 2

Authors: 1

Commit history:
  • 0fe31a Bump version to: 5.0.0 [skip ci]
  • 37ff57 Update contributors [skip ci]
  • ee3b5e Update CHANGELOG.md [skip ci]
  • ddf5d6 Merge pull request #307 from hipstersmoothie/v10

    Storybook V10 Compatibility

  • d10d8b Upgrade to strorybook 10
  • f9048f move to pnpm and get example working
  • 9347ae Merge pull request #278 from dartess/update-actions

    update actions/*

  • 9a5d67 Bump version to: 4.0.2 [skip ci]
  • c53228 Update contributors [skip ci]
  • 28fa4b Update CHANGELOG.md [skip ci]
  • 52fe0d Merge pull request #279 from adam-golab/master

    Fix for the "Storybook preview hooks can only be called inside decorators and story functions." error

  • 7342b9 fix: use the useEffect from storybook preview api
  • 153f21 fix: use useState hook from storybook preview api
  • fa7ca8 update actions
  • efbd14 Bump version to: 4.0.1 [skip ci]
  • 143e9d Update contributors [skip ci]
  • 9d8d9d Update CHANGELOG.md [skip ci]
  • 07efab Merge pull request #266 from leiit/fix-use-darkmode

    Fix useDarkMode to use correct channel

  • 576b40 Fix useDarkMode to use correct addons channel
  • df8d44 Add test story for useDarkMode
  • 8c055e Add typings & StoryObj format for Button story
  • 48638c Merge pull request #253 from hipstersmoothie/renovate/storybook-icons-1.x-lockfile

    Update dependency @​storybook/icons to v1.2.9

  • 50fc77 Bump version to: 4.0.0 [skip ci]
  • 30c0de Update contributors [skip ci]
  • 3d9bb6 Update CHANGELOG.md [skip ci]
  • 2f4f53 update auto
  • 550fe3 Update dependency @​storybook/icons to v1.2.9
  • d2f988 Merge pull request #251 from dartess/storybook-8

    Storybook 8

  • 319fe2 up node version in github workflows
  • fa60c8 update storybook to v8 stable

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump @​storybook/builder-vite from 9.1.3 to 10.3.6

Changelog:
Sourced from releases.
        ### v10.4.0-alpha.15## 10.4.0-alpha.15
  • Vitest: Fix agent detection breaking runs - #34681, thanks @​JReinhold!

          ### v10.4.0-alpha.14## 10.4.0-alpha.14
    
  • CLI: Fix agentic check - #34678, thanks @​yannbf!

          ### v10.4.0-alpha.13## 10.4.0-alpha.13
    
  • Addon-Vitest: Use Vitest's provide-API for injecting values - #34518, thanks @​JReinhold!

  • Telemetry: Fix delayed init events - #34670, thanks @​JReinhold!

          ### v10.4.0-alpha.12## 10.4.0-alpha.12
    
  • CLI: Introduce Agentic Setup workflow - #34297, thanks @​yannbf!

          ### v10.4.0-alpha.11## 10.4.0-alpha.11
    
  • CLI: Change mock event detection - #34586, thanks @​yannbf!

  • Core: Ensure process termination on SIGINT when telemetry is disabled - #34585, thanks @​ghengeveld!

  • Core: Show "new" status on newly added individual stories - #34504, thanks @​ghengeveld!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • Telemetry: Add sidebar filter telemetry for change detection - #34533, thanks @​valentinpalkovic!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.3.6## 10.3.6
    
  • ESLint: Update deprecated @​storybook/test reference to storybook/test - #34430, thanks @​venkat22022202!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.4.0-alpha.10## 10.4.0-alpha.10
    
  • Sidebar: Fix clear status button to only clear test statuses - #34478, thanks @​valentinpalkovic!

  • Telemetry: Centralize disable logic with module-level flag - #34485, thanks @​valentinpalkovic!

          ### v10.4.0-alpha.9## 10.4.0-alpha.9
    
  • A11y: Improve boolean control contrast in forced colors mode - #34204, thanks @​anchmelev!

  • Addon-Docs: Avoid rerendering static Source blocks - #34206, thanks @​anchmelev!

  • CLI: Streamline Node.js version detection code - #34440, thanks @​Sidnioulz!

  • Core: Improve startup performance by deferring change detection initialization - #34498, thanks @​ghengeveld!

  • Core: Normalize file paths in ChangeDetectionService and trace-changed for Windows support - #34445, thanks @​ghengeveld!

  • Fix: Add vite-plus vendored libraries version detection - #34509, thanks @​huang-julien!

  • Nextjs: Handle node builtin webpack imports - #34494, thanks @​JReinhold!

  • React: Add subcomponents to component manifests - #34428, thanks @​kasperpeulen!

  • Vue3: Clear stale args/globals when nextArgs is empty in updateArgs - #34409, thanks @​whdjh!

          ### v10.4.0-alpha.8## 10.4.0-alpha.8
    
  • A11y: Add aria-live announcements via @​react-aria/live-announcer - #33970, thanks @​copilot-swe-agent!

  • Actions: Fix state mutation and keep newest actions when limit reached - #34286, thanks @​Sidnioulz!

  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

  • Core: Implement Git change detection - #34420, thanks @​ghengeveld!

  • Core: Rename preview.ts to preview.tsx in generated projects - #34396, thanks @​Sidnioulz!

  • Sidebar: Add dual-slot status icons for change detection and test results - #34346, thanks @​valentinpalkovic!

  • UI: Improve interactions panel accessibility - #34110, thanks @​anchmelev!

          ### v10.3.5## 10.3.5
    
  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

[!NOTE]
Version >=0.5.0 of @&ZeroWidthSpace;storybook/addon-mcp 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 @&ZeroWidthSpace;storybook/addon-mcp to keep the docs toolset in the MCP server.

        ### v10.4.0-alpha.7## 10.4.0-alpha.7
  • CLI: Explicitly tell whether smoke tests passed or failed - #34419, thanks @​Sidnioulz!

  • Core: Add `ChangeDetectionService` and wire up builder-vite - #34369, thanks @​ghengeveld!

  • Maintenance: Extract parseFilterParam shared helper from tags and statuses modules - #34436, thanks @​mixelburg!

  • Sidebar: Add status-based filtering with refactored status architecture - #34339, thanks @​valentinpalkovic!

  • UI: Fix global shortcuts not showing region focus indicator - #34201, thanks @​Sidnioulz!

          ### v10.3.4## 10.3.4
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

          ### v10.4.0-alpha.6## 10.4.0-alpha.6
    
  • Builder-Vite: Add onModuleGraphChange method - #34323, thanks @​ghengeveld!

  • CLI: Add automigrate check for 'storybook' package name conflict - #34290, thanks @​whdjh!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Maintenance: Add assertions outside step incorrectly nested in interactions panel - #34296, thanks @​majiayu000!

  • Maintenance: Extract getBuilderOptions helper across framewo… - #34260, thanks @​alex-js-ltd!

  • Maintenance: Use errorToErrorLike in boot-test-runner for consistent stack deduplication - #34385, thanks @​mixelburg!

  • Onboarding: Fix checklist MDX instructions - #33193, thanks @​kylegach!

  • React-Docgen: Add tsconfig fallback chain and warning for monorepos - #34353, thanks @​viditkbhatnagar!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • UI: Fix mobile navigation when renderLabel returns a React node - #34262, thanks @​Nathan54Villaume!

  • Vite: Use vite hook filter for performance improvements - #34022, thanks @​huang-julien!

          ### v10.4.0-alpha.5## 10.4.0-alpha.5
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Fix Next.js Vite automigration corrupting configs already using `@​storybook/nextjs-vite` - #34249, thanks @​nathanjessen!

  • Core: Add changeDetection feature flag - #34314, thanks @​valentinpalkovic!

  • Manager: URL-based tag filter state + filter-aware initial story selection - #34283, thanks @​valentinpalkovic!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

  • Refactor: Extract shared `PseudoStateGrid` component in pseudo-states stories - #34334, thanks @​copilot-swe-agent!

          ### v10.4.0-alpha.4## 10.4.0-alpha.4
    
  • Addon-Docs: Add Reset story button to re-render stories in docs - #34086, thanks @​6810779s!

  • Code: Fix inline code blocks inside links removing link affordance - #33903, thanks @​yatishgoel!

  • Controls: Add maxPresetColors option to ColorControl - #33998, thanks @​mixelburg!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • Dependencies: Update `vite-plugin-storybook-nextjs` to ^3.2.4 - #34280, thanks @​k35o!

  • React: Add component metadata extraction via Volar-style LanguageService - #33914, thanks @​kasperpeulen!

  • StatusValue: Add 'status-value:<new|modified|affected>' - #34305, thanks @​valentinpalkovic!

  • UI: Ensure Controls panel can scroll horizontally for now - #34248, thanks @​Sidnioulz!

          ### v10.4.0-alpha.3## 10.4.0-alpha.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

  • Angular: Use Story ID for renderer IDs (including standalone stories) - #33982, thanks @​ValentinFunk!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.3.3## 10.3.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

          ### v10.3.2## 10.3.2
    
  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.4.0-alpha.2## 10.4.0-alpha.2
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

  • Maintenance: Remove dead-code copy of wrap-getAbsolutePath-utils - #34168, thanks @​mixelburg!

  • Security: Makes sure `serialize-javascript` is at latest version - #34034, thanks @​50bbx!

          ### v10.4.0-alpha.1## 10.4.0-alpha.1
    
  • Docs: Ensure unique control id attributes across multiple Controls blocks - #34021, thanks @​TheSeydiCharyyev!

          ### v10.3.1## 10.3.1
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

          ### v10.4.0-alpha.0## 10.4.0-alpha.0
    
    
    
    
          ### v10.3.0## 10.3.0
    

> Improved developer experience, AI-assisting tools, and broader ecosystem support

Storybook 10.3 contains hundreds of fixes and improvements including:

  • 🤖 Storybook MCP: Agentic component dev, docs, and test (Preview release for React)
  • ⚡ Vite 8 support
  • ▲ Next.js 16.2 support
  • 📝 ESLint 10 support
  • 〰️ Addon Pseudo-States: Tailwind v4 support
  • 🔧 Addon-Vitest: Simplified configuration - no more setup files required
  • ♿ Numerous accessibility improvements across the UI
List of all updates
  • A11y: Add ScrollArea prop focusable for when it has static children - #33876, thanks @​Sidnioulz!
  • A11y: Ensure popover dialogs have an ARIA label - #33500, thanks @​gayanMatch!
  • A11y: Make resize handles for addon panel and sidebar accessible #33980
  • A11y: Underline MDX links for WCAG SC 1.4.1 compliance - #33139, thanks @​NikhilChowdhury27!
  • Actions: Add expandLevel parameter to configure tree depth - #33977, thanks @​mixelburg!
  • Actions: Fix HandlerFunction type to support async callback props - #33864, thanks @​mixelburg!
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!
  • Addon-Docs: Add support for `sourceState: 'none'` to canvas block parameters - #33627, thanks @​quisido!
  • Addon-docs: Restore `docs.components` overrides for doc blocks #34111
  • Addon-Vitest: Add channel API to programmatically trigger test runs - #33206, thanks @​JReinhold!
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!
  • Addon-Vitest: Make Playwright `--with-deps` platform-aware to avoid `sudo` prompt on Linux #34121
  • Addon-Vitest: Refactor Vitest setup to eliminate the need for a dedicated setup file - #34025, thanks @​valentinpalkovic!
  • Addon-Vitest: Support Vitest canaries - #33833, thanks @​valentinpalkovic!
  • Angular: Add moduleResolution: bundler to tsconfig - #34085, thanks @​valentinpalkovic!
  • Angular: only load webpack dependencies on demand - #34043, thanks @​sod!
  • Angular: Storybook fails with unknown option silent - #33736, thanks @​tanujbhaud!
  • Build: Update @​types/node - #34037, thanks @​valentinpalkovic!
  • Builder-Vite: Centralize Vite plugins for builder-vite and addon-vitest - #33819, thanks @​valentinpalkovic!
  • Builder-Vite: Fix cold-cache vitest failures for story paths containing glob special characters - #34044, thanks @​copilot-swe-agent!
  • Builder-Vite: Use preview annotations as entry points for optimizeDeps - #33875, thanks @​copilot-swe-agent!
  • CI: declare explicit permissions for stale and weekly cron workflows - #33902, thanks @​Rohan5commit!
  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!
  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!
  • CLI: Fix onboarding not opening - #33609, thanks @​ndelangen!
  • CLI: Show multiple favicons warning as debug message - #34069, thanks @​remino!
  • Cli: Use npm for registry URL in PNPMProxy to avoid workspace errors - #33571, thanks @​ia319!
  • Controls: Allow story argTypes to override control: false from meta - #33729, thanks @​jonathan-fulton!
  • Controls: Fix Object contrast issue and tidy up code - #33923, thanks @​Sidnioulz!
  • Core: Ensure telemetry is never triggered on initial load of checklist data - #33918, thanks @​ghengeveld!
  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105
  • Core: Fix false-positive CJS warning when 'exports' appears in strings or comments - #33572, thanks @​reeseo3o!
  • Core: Fix handling complex viewport sizes #33615
  • Core: Fix iframe reference for composed Storybook on a subpath #34100
  • Core: Fix typos: occured -> occurred, recieves -> receives - #33727, thanks @​jonathan-fulton!
  • Core: Handle BROWSER=none correctly and improve error messages - #33730, thanks @​jonathan-fulton!
  • Core: Ignore empty files when indexing - #33782, thanks @​JReinhold!
  • Core: Register CORS middleware before index.json route - #33728, thanks @​jonathan-fulton!
  • Core: Revert Pull Request #33420 from Maelryn/fix/copy-button-overlap - #33877, thanks @​Sidnioulz!
  • Core: Zoom tool refinements - Hide reset button when value is initial - #33635, thanks @​superLipbalm!
  • Docs: Edit JSON button is now accessible at 320x256 viewport (WCAG 2.1 Reflow test) - #33707, thanks @​TheSeydiCharyyev!
  • Docs: Make CSS ordering in DocsContainer more predictable #34015
  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!
  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!
  • HMR: Fix race conditions causing stale play functions to fire on re-rendered stories - #33930, thanks @​copilot-swe-agent!
  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!
  • Maintenance: Use std-env for AI agent detection in telemetry #34114
  • Manifest: Add docs entries to debugger - #33607, thanks @​JReinhold!
  • Manifest: Rename `experimentalComponentsManifest` → `componentsManifest`, default to `true` #33974
  • Manifests: Fix Attached MDX causing wrong component entries #34101
  • Next.js-Vite: Fix failing postcss mutation - #33879, thanks @​valentinpalkovic!
  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!
  • Preact: Support inferring props from component types - #33828, thanks @​JoviDeCroock!
  • React Native Web: Fix inconsistent example stories - #33891, thanks @​danielalanbates!
  • React: Add react-docgen-typescript to component manifest - #33818, thanks @​kasperpeulen!
  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!
  • Test: Fix clearing mocks in Vitest #34078
  • Test: Update @​testing-library/jest-dom - #33928, thanks @​valentinpalkovic!
  • Theming: Export interface declaration for `ThemesGlobals` - #33343, thanks @​icopp!
  • Toolbar: Remove extra toolbar divider when zoom controls not shown - #33731, thanks @​jonathan-fulton!
  • UI: Allow direct kb/mouse actions on zoom tool button - #33496, thanks @​Sidnioulz!
  • UI: Avoid large animation for reduced motion users - #33530, thanks @​Sidnioulz!
  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!
  • UI: Fix `z-index` problem with `popover`s and `modal`s nesting - #33757, thanks @​ndelangen!
  • UI: Fix code/copy buttons overlap with content - #33889, thanks @​Sidnioulz!
  • UI: Fix Copy button overlapping code in portrait mode - #33420, thanks @​Maelryn!
  • UI: Fix modal text selection - #33967, thanks @​Sidnioulz!
  • UI: Fix tab navigation after closing addon panel - #33971, thanks @​copilot-swe-agent!
  • UI: Handle kb nav edge cases when preview and panel are hidden - #33588, thanks @​Sidnioulz!
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!
  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!
  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!
  • UI: Make TagsFilter state persistent #33374
  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!
  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!
  • Viewport: Skip viewport validation before parameters load - #33794, thanks @​ia319!
  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!
  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!
        ### v10.3.0-beta.3## 10.3.0-beta.3
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!

  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!

  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!

  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!

  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!

  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!

          ### v10.3.0-beta.2## 10.3.0-beta.2
    
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!

  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!

  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!

  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!

  • Vue: Make globals reactive in decorators - #34116, thanks @​Sidnioulz!

          ### v10.3.0-beta.1## 10.3.0-beta.1
    
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!

  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!

          ### v10.3.0-beta.0## 10.3.0-beta.0
    
  • Test: Fix clearing mocks in Vitest #34078

  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105

  • UI: Make TagsFilter state persistent #33374

  • A11y: Make resize handles for addon panel and sidebar accessible #33980

  • Maintenance: Use std-env for AI agent detection in telemetry #34114

  • Addon-Vitest: Make Playwright --with-deps platform-aware to avoid sudo prompt on Linux #34121

  • Addon-docs: Restore docs.components overrides for doc blocks #34111

  • Maintenance: Support vite-plugin-svelte7 which supports Vite 8 #34115

  • Core: Fix handling complex viewport sizes #33615

  • Core: Fix iframe reference for composed Storybook on a subpath #34100

  • Manifest: Rename experimentalComponentsManifestcomponentsManifest, default to true #33974

  • Manifests: Fix Attached MDX causing wrong component entries #34101

  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!

  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!

  • Docs: Make CSS ordering in DocsContainer more predictable #34015

          ### v10.3.0-alpha.17## 10.3.0-alpha.17
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!

  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!

  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!

          ### v10.2.19## 10.2.19
    
  • Maintenance: Support vite-plugin-svelte@​7 which supports Vite 8 - #34115, thanks @​valentinpalkovic!

  • Vite: Support Vite 8 - #33788, thanks @​valentinpalkovic!

          ### v10.2.18## 10.2.18
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • Core: Fix error reporting in ManagerErrorBoundary - #33915, thanks @​ghengeveld!

Commit history:
  • f9060d Merge pull request #34632 from rohanadepu/docs/unit-test-user-event-guidance

    docs: prefer userEvent in unit test examples

  • f1363a Bump version from "10.4.0-alpha.14" to "10.4.0-alpha.15" [skip ci]
  • b16225 Merge pull request #34682 from storybookjs/version-non-patch-from-10.4.0-alpha.14

    Release: Prerelease 10.4.0-alpha.15

  • 9681b6 Write changelog for 10.4.0-alpha.15 [skip ci]
  • 4dfac8 Merge pull request #34681 from storybookjs/jeppe/fix-vitest-provide-agent

    Vitest: Fix agent detection breaking runs

  • 1d5ea9 move agent detection to config hook instead of configureVitest

    Co-authored-by: Copilot <copilot@​github.com>

  • 549170 Bump version from "10.4.0-alpha.13" to "10.4.0-alpha.14" [skip ci]
  • fdaa90 Merge pull request #34679 from storybookjs/version-non-patch-from-10.4.0-alpha.13

    Release: Prerelease 10.4.0-alpha.14

  • 075111 Write changelog for 10.4.0-alpha.14 [skip ci]
  • e9fdd8 Merge pull request #34678 from storybookjs/yann/ai-steps-fix

    CLI: Fix agentic check

  • 3ab056 Bump version from "10.4.0-alpha.12" to "10.4.0-alpha.13" [skip ci]
  • b214e9 Merge pull request #34672 from storybookjs/version-non-patch-from-10.4.0-alpha.12

    Release: Prerelease 10.4.0-alpha.13

  • 51bc0e Merge branch 'yann/ai-steps-fix' of github.com:storybookjs/storybook into yann/ai-steps-fix
  • 8981b4 Merge branch 'next' into yann/ai-steps-fix
  • 4ba44a Revert "revert"

    This reverts commit e248e58e6831a723c4f2b7a7c1e0c696eff07606.

  • 52d60c Write changelog for 10.4.0-alpha.13 [skip ci]
  • e0791c Merge pull request #34670 from storybookjs/jeppe/fix-init-telemetry

    Telemetry: Fix delayed init events

  • 79a2f7 fix tests
  • e248e5 revert
  • 870322 fix steps collection
  • 80b733 fix formatting
  • 0457c8 Merge pull request #34652 from storybookjs/rename-affected-related
  • b3365c Use same icon for modified and related
  • a81263 Merge branch 'next' into jeppe/fix-init-telemetry
  • ed0c34 Replace icon for "related" changes
  • e88aee always resolve telemetry state immediately
  • 151d4f Merge pull request #34674 from storybookjs/jeppe/add-addon-mcp

    Build: Add addon-mcp to internal UI Storybook

  • 8174f8 Merge branch 'next' into jeppe/add-addon-mcp
  • a5bc66 add addon-mcp to internal UI Storybook
  • 722b7a Merge branch 'next' into jeppe/fix-init-telemetry

@michijs

michijs Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Bump @​storybook/addon-a11y from 9.1.3 to 10.3.6

Changelog:
Sourced from releases.
        ### v10.4.0-alpha.15## 10.4.0-alpha.15
  • Vitest: Fix agent detection breaking runs - #34681, thanks @​JReinhold!

          ### v10.4.0-alpha.14## 10.4.0-alpha.14
    
  • CLI: Fix agentic check - #34678, thanks @​yannbf!

          ### v10.4.0-alpha.13## 10.4.0-alpha.13
    
  • Addon-Vitest: Use Vitest's provide-API for injecting values - #34518, thanks @​JReinhold!

  • Telemetry: Fix delayed init events - #34670, thanks @​JReinhold!

          ### v10.4.0-alpha.12## 10.4.0-alpha.12
    
  • CLI: Introduce Agentic Setup workflow - #34297, thanks @​yannbf!

          ### v10.4.0-alpha.11## 10.4.0-alpha.11
    
  • CLI: Change mock event detection - #34586, thanks @​yannbf!

  • Core: Ensure process termination on SIGINT when telemetry is disabled - #34585, thanks @​ghengeveld!

  • Core: Show "new" status on newly added individual stories - #34504, thanks @​ghengeveld!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • Telemetry: Add sidebar filter telemetry for change detection - #34533, thanks @​valentinpalkovic!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.3.6## 10.3.6
    
  • ESLint: Update deprecated @​storybook/test reference to storybook/test - #34430, thanks @​venkat22022202!

  • React: Add optional React type peers to packages that publish React-based declarations - #34641, thanks @​copilot-swe-agent!

  • UI: Fix global background + color styles affecting stories - #34071, thanks @​Axadali!

          ### v10.4.0-alpha.10## 10.4.0-alpha.10
    
  • Sidebar: Fix clear status button to only clear test statuses - #34478, thanks @​valentinpalkovic!

  • Telemetry: Centralize disable logic with module-level flag - #34485, thanks @​valentinpalkovic!

          ### v10.4.0-alpha.9## 10.4.0-alpha.9
    
  • A11y: Improve boolean control contrast in forced colors mode - #34204, thanks @​anchmelev!

  • Addon-Docs: Avoid rerendering static Source blocks - #34206, thanks @​anchmelev!

  • CLI: Streamline Node.js version detection code - #34440, thanks @​Sidnioulz!

  • Core: Improve startup performance by deferring change detection initialization - #34498, thanks @​ghengeveld!

  • Core: Normalize file paths in ChangeDetectionService and trace-changed for Windows support - #34445, thanks @​ghengeveld!

  • Fix: Add vite-plus vendored libraries version detection - #34509, thanks @​huang-julien!

  • Nextjs: Handle node builtin webpack imports - #34494, thanks @​JReinhold!

  • React: Add subcomponents to component manifests - #34428, thanks @​kasperpeulen!

  • Vue3: Clear stale args/globals when nextArgs is empty in updateArgs - #34409, thanks @​whdjh!

          ### v10.4.0-alpha.8## 10.4.0-alpha.8
    
  • A11y: Add aria-live announcements via @​react-aria/live-announcer - #33970, thanks @​copilot-swe-agent!

  • Actions: Fix state mutation and keep newest actions when limit reached - #34286, thanks @​Sidnioulz!

  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

  • Core: Implement Git change detection - #34420, thanks @​ghengeveld!

  • Core: Rename preview.ts to preview.tsx in generated projects - #34396, thanks @​Sidnioulz!

  • Sidebar: Add dual-slot status icons for change detection and test results - #34346, thanks @​valentinpalkovic!

  • UI: Improve interactions panel accessibility - #34110, thanks @​anchmelev!

          ### v10.3.5## 10.3.5
    
  • Core: Disable component manifest by default - #34408, thanks @​yannbf!

[!NOTE]
Version >=0.5.0 of @&ZeroWidthSpace;storybook/addon-mcp 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 @&ZeroWidthSpace;storybook/addon-mcp to keep the docs toolset in the MCP server.

        ### v10.4.0-alpha.7## 10.4.0-alpha.7
  • CLI: Explicitly tell whether smoke tests passed or failed - #34419, thanks @​Sidnioulz!

  • Core: Add `ChangeDetectionService` and wire up builder-vite - #34369, thanks @​ghengeveld!

  • Maintenance: Extract parseFilterParam shared helper from tags and statuses modules - #34436, thanks @​mixelburg!

  • Sidebar: Add status-based filtering with refactored status architecture - #34339, thanks @​valentinpalkovic!

  • UI: Fix global shortcuts not showing region focus indicator - #34201, thanks @​Sidnioulz!

          ### v10.3.4## 10.3.4
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

          ### v10.4.0-alpha.6## 10.4.0-alpha.6
    
  • Builder-Vite: Add onModuleGraphChange method - #34323, thanks @​ghengeveld!

  • CLI: Add automigrate check for 'storybook' package name conflict - #34290, thanks @​whdjh!

  • CLI: Prompt for init crash reports - #34316, thanks @​JReinhold!

  • CSF4: Fix duplicate preview loading issue in Vitest - #34361, thanks @​valentinpalkovic!

  • Maintenance: Add assertions outside step incorrectly nested in interactions panel - #34296, thanks @​majiayu000!

  • Maintenance: Extract getBuilderOptions helper across framewo… - #34260, thanks @​alex-js-ltd!

  • Maintenance: Use errorToErrorLike in boot-test-runner for consistent stack deduplication - #34385, thanks @​mixelburg!

  • Onboarding: Fix checklist MDX instructions - #33193, thanks @​kylegach!

  • React-Docgen: Add tsconfig fallback chain and warning for monorepos - #34353, thanks @​viditkbhatnagar!

  • React-Docgen: Try .tsx fallback when resolving .js ESM imports in docgen resolvers - #34393, thanks @​mixelburg!

  • UI: Fix mobile navigation when renderLabel returns a React node - #34262, thanks @​Nathan54Villaume!

  • Vite: Use vite hook filter for performance improvements - #34022, thanks @​huang-julien!

          ### v10.4.0-alpha.5## 10.4.0-alpha.5
    
  • Addon-a11y: Clear status transition timer on unmount to prevent test flake - #34203, thanks @​mixelburg!

  • Builder-Vite: Use djb2 hash to prevent variable name collisions in builder-vite - #34274, thanks @​chida09!

  • CLI: Fix Next.js Vite automigration corrupting configs already using `@​storybook/nextjs-vite` - #34249, thanks @​nathanjessen!

  • Core: Add changeDetection feature flag - #34314, thanks @​valentinpalkovic!

  • Manager: URL-based tag filter state + filter-aware initial story selection - #34283, thanks @​valentinpalkovic!

  • React-Vite: Upgrade @​joshwooding/vite-plugin-react-docgen-typescript to 0.7.0 - #34335, thanks @​beeswhacks!

  • Refactor: Extract shared `PseudoStateGrid` component in pseudo-states stories - #34334, thanks @​copilot-swe-agent!

          ### v10.4.0-alpha.4## 10.4.0-alpha.4
    
  • Addon-Docs: Add Reset story button to re-render stories in docs - #34086, thanks @​6810779s!

  • Code: Fix inline code blocks inside links removing link affordance - #33903, thanks @​yatishgoel!

  • Controls: Add maxPresetColors option to ColorControl - #33998, thanks @​mixelburg!

  • Core: Fix WebSocket connection for StackBlitz/WebContainers - #34281, thanks @​ghengeveld!

  • Dependencies: Update `vite-plugin-storybook-nextjs` to ^3.2.4 - #34280, thanks @​k35o!

  • React: Add component metadata extraction via Volar-style LanguageService - #33914, thanks @​kasperpeulen!

  • StatusValue: Add 'status-value:<new|modified|affected>' - #34305, thanks @​valentinpalkovic!

  • UI: Ensure Controls panel can scroll horizontally for now - #34248, thanks @​Sidnioulz!

          ### v10.4.0-alpha.3## 10.4.0-alpha.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

  • Angular: Use Story ID for renderer IDs (including standalone stories) - #33982, thanks @​ValentinFunk!

  • Bug: Skip re-processing already transformed config files for CSF factories - #34273, thanks @​huang-julien!

  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.3.3## 10.3.3
    
  • Addon-Vitest: Streamline vite(st) config detection across init and postinstall - #34193, thanks @​valentinpalkovic!

          ### v10.3.2## 10.3.2
    
  • CLI: Shorten CTA link messages - #34236, thanks @​shilman!

  • React Native Web: Fix vite8 support by bumping vite-plugin-rnw - #34231, thanks @​dannyhw!

          ### v10.4.0-alpha.2## 10.4.0-alpha.2
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

  • Maintenance: Remove dead-code copy of wrap-getAbsolutePath-utils - #34168, thanks @​mixelburg!

  • Security: Makes sure `serialize-javascript` is at latest version - #34034, thanks @​50bbx!

          ### v10.4.0-alpha.1## 10.4.0-alpha.1
    
  • Docs: Ensure unique control id attributes across multiple Controls blocks - #34021, thanks @​TheSeydiCharyyev!

          ### v10.3.1## 10.3.1
    
  • CLI: Use npm info to fetch versions in repro command - #34214, thanks @​yannbf!

  • Core: Prevent story-local viewport from persisting in URL - #34153, thanks @​ghengeveld!

          ### v10.4.0-alpha.0## 10.4.0-alpha.0
    
    
    
    
          ### v10.3.0## 10.3.0
    

> Improved developer experience, AI-assisting tools, and broader ecosystem support

Storybook 10.3 contains hundreds of fixes and improvements including:

  • 🤖 Storybook MCP: Agentic component dev, docs, and test (Preview release for React)
  • ⚡ Vite 8 support
  • ▲ Next.js 16.2 support
  • 📝 ESLint 10 support
  • 〰️ Addon Pseudo-States: Tailwind v4 support
  • 🔧 Addon-Vitest: Simplified configuration - no more setup files required
  • ♿ Numerous accessibility improvements across the UI
List of all updates
  • A11y: Add ScrollArea prop focusable for when it has static children - #33876, thanks @​Sidnioulz!
  • A11y: Ensure popover dialogs have an ARIA label - #33500, thanks @​gayanMatch!
  • A11y: Make resize handles for addon panel and sidebar accessible #33980
  • A11y: Underline MDX links for WCAG SC 1.4.1 compliance - #33139, thanks @​NikhilChowdhury27!
  • Actions: Add expandLevel parameter to configure tree depth - #33977, thanks @​mixelburg!
  • Actions: Fix HandlerFunction type to support async callback props - #33864, thanks @​mixelburg!
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!
  • Addon-Docs: Add support for `sourceState: 'none'` to canvas block parameters - #33627, thanks @​quisido!
  • Addon-docs: Restore `docs.components` overrides for doc blocks #34111
  • Addon-Vitest: Add channel API to programmatically trigger test runs - #33206, thanks @​JReinhold!
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!
  • Addon-Vitest: Make Playwright `--with-deps` platform-aware to avoid `sudo` prompt on Linux #34121
  • Addon-Vitest: Refactor Vitest setup to eliminate the need for a dedicated setup file - #34025, thanks @​valentinpalkovic!
  • Addon-Vitest: Support Vitest canaries - #33833, thanks @​valentinpalkovic!
  • Angular: Add moduleResolution: bundler to tsconfig - #34085, thanks @​valentinpalkovic!
  • Angular: only load webpack dependencies on demand - #34043, thanks @​sod!
  • Angular: Storybook fails with unknown option silent - #33736, thanks @​tanujbhaud!
  • Build: Update @​types/node - #34037, thanks @​valentinpalkovic!
  • Builder-Vite: Centralize Vite plugins for builder-vite and addon-vitest - #33819, thanks @​valentinpalkovic!
  • Builder-Vite: Fix cold-cache vitest failures for story paths containing glob special characters - #34044, thanks @​copilot-swe-agent!
  • Builder-Vite: Use preview annotations as entry points for optimizeDeps - #33875, thanks @​copilot-swe-agent!
  • CI: declare explicit permissions for stale and weekly cron workflows - #33902, thanks @​Rohan5commit!
  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!
  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!
  • CLI: Fix onboarding not opening - #33609, thanks @​ndelangen!
  • CLI: Show multiple favicons warning as debug message - #34069, thanks @​remino!
  • Cli: Use npm for registry URL in PNPMProxy to avoid workspace errors - #33571, thanks @​ia319!
  • Controls: Allow story argTypes to override control: false from meta - #33729, thanks @​jonathan-fulton!
  • Controls: Fix Object contrast issue and tidy up code - #33923, thanks @​Sidnioulz!
  • Core: Ensure telemetry is never triggered on initial load of checklist data - #33918, thanks @​ghengeveld!
  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105
  • Core: Fix false-positive CJS warning when 'exports' appears in strings or comments - #33572, thanks @​reeseo3o!
  • Core: Fix handling complex viewport sizes #33615
  • Core: Fix iframe reference for composed Storybook on a subpath #34100
  • Core: Fix typos: occured -> occurred, recieves -> receives - #33727, thanks @​jonathan-fulton!
  • Core: Handle BROWSER=none correctly and improve error messages - #33730, thanks @​jonathan-fulton!
  • Core: Ignore empty files when indexing - #33782, thanks @​JReinhold!
  • Core: Register CORS middleware before index.json route - #33728, thanks @​jonathan-fulton!
  • Core: Revert Pull Request #33420 from Maelryn/fix/copy-button-overlap - #33877, thanks @​Sidnioulz!
  • Core: Zoom tool refinements - Hide reset button when value is initial - #33635, thanks @​superLipbalm!
  • Docs: Edit JSON button is now accessible at 320x256 viewport (WCAG 2.1 Reflow test) - #33707, thanks @​TheSeydiCharyyev!
  • Docs: Make CSS ordering in DocsContainer more predictable #34015
  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!
  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!
  • HMR: Fix race conditions causing stale play functions to fire on re-rendered stories - #33930, thanks @​copilot-swe-agent!
  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!
  • Maintenance: Use std-env for AI agent detection in telemetry #34114
  • Manifest: Add docs entries to debugger - #33607, thanks @​JReinhold!
  • Manifest: Rename `experimentalComponentsManifest` → `componentsManifest`, default to `true` #33974
  • Manifests: Fix Attached MDX causing wrong component entries #34101
  • Next.js-Vite: Fix failing postcss mutation - #33879, thanks @​valentinpalkovic!
  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!
  • Preact: Support inferring props from component types - #33828, thanks @​JoviDeCroock!
  • React Native Web: Fix inconsistent example stories - #33891, thanks @​danielalanbates!
  • React: Add react-docgen-typescript to component manifest - #33818, thanks @​kasperpeulen!
  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!
  • Test: Fix clearing mocks in Vitest #34078
  • Test: Update @​testing-library/jest-dom - #33928, thanks @​valentinpalkovic!
  • Theming: Export interface declaration for `ThemesGlobals` - #33343, thanks @​icopp!
  • Toolbar: Remove extra toolbar divider when zoom controls not shown - #33731, thanks @​jonathan-fulton!
  • UI: Allow direct kb/mouse actions on zoom tool button - #33496, thanks @​Sidnioulz!
  • UI: Avoid large animation for reduced motion users - #33530, thanks @​Sidnioulz!
  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!
  • UI: Fix `z-index` problem with `popover`s and `modal`s nesting - #33757, thanks @​ndelangen!
  • UI: Fix code/copy buttons overlap with content - #33889, thanks @​Sidnioulz!
  • UI: Fix Copy button overlapping code in portrait mode - #33420, thanks @​Maelryn!
  • UI: Fix modal text selection - #33967, thanks @​Sidnioulz!
  • UI: Fix tab navigation after closing addon panel - #33971, thanks @​copilot-swe-agent!
  • UI: Handle kb nav edge cases when preview and panel are hidden - #33588, thanks @​Sidnioulz!
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!
  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!
  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!
  • UI: Make TagsFilter state persistent #33374
  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!
  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!
  • Viewport: Skip viewport validation before parameters load - #33794, thanks @​ia319!
  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!
  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!
        ### v10.3.0-beta.3## 10.3.0-beta.3
  • Addon-Vitest: Handle additional vitest config export patterns in postinstall - #34106, thanks @​copilot-swe-agent!

  • CLI: Add vike CLI metadata - #34189, thanks @​yannbf!

  • Maintenance: Revert pull request #33930 HMR events - #34190, thanks @​yannbf!

  • UI: Ensure Link without href is keyboard-reachable - #34163, thanks @​Sidnioulz!

  • UI: Zoom faster when pressing shift - #34185, thanks @​Sidnioulz!

  • Vite: Add mock entries to optimizeDeps.entries - #34167, thanks @​valentinpalkovic!

          ### v10.3.0-beta.2## 10.3.0-beta.2
    
  • UI: Hide addon panel Drag on pages without a panel - #34162, thanks @​Sidnioulz!

  • UI: Hide manifest tag for now - #34165, thanks @​Sidnioulz!

  • UI: Make disabled Buttons keyboard-focusable - #34166, thanks @​Sidnioulz!

  • UI: Use correct selector for addon panel focus check - #34164, thanks @​Sidnioulz!

  • Vue: Make globals reactive in decorators - #34116, thanks @​Sidnioulz!

          ### v10.3.0-beta.1## 10.3.0-beta.1
    
  • Addon-Docs: Add React as optimizeDeps entry - #34176, thanks @​valentinpalkovic!

  • CLI: Avoid hanging of postinstall during init - #34175, thanks @​valentinpalkovic!

          ### v10.3.0-beta.0## 10.3.0-beta.0
    
  • Test: Fix clearing mocks in Vitest #34078

  • Core: Fix event source URL based on refId when multiple iframes share the same origin #34105

  • UI: Make TagsFilter state persistent #33374

  • A11y: Make resize handles for addon panel and sidebar accessible #33980

  • Maintenance: Use std-env for AI agent detection in telemetry #34114

  • Addon-Vitest: Make Playwright --with-deps platform-aware to avoid sudo prompt on Linux #34121

  • Addon-docs: Restore docs.components overrides for doc blocks #34111

  • Maintenance: Support vite-plugin-svelte7 which supports Vite 8 #34115

  • Core: Fix handling complex viewport sizes #33615

  • Core: Fix iframe reference for composed Storybook on a subpath #34100

  • Manifest: Rename experimentalComponentsManifestcomponentsManifest, default to true #33974

  • Manifests: Fix Attached MDX causing wrong component entries #34101

  • Vue3-Vite: Allow paths in docgen tsconfig option #32310, thanks @​Thomaash!

  • Next.js: Move image configuration from FrameworkOptions to parameters #32639, thanks @​y-hsgw!

  • Docs: Make CSS ordering in DocsContainer more predictable #34015

          ### v10.3.0-alpha.17## 10.3.0-alpha.17
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • ESLint-plugin: Disallow extra properties in eslint plugin rule options - #32056, thanks @​andreww2012!

  • ESLint: bail out config setup if eslint-plugin-storybook is already imported - #34089, thanks @​copilot-swe-agent!

  • Revert "Toolbar: Remove extra toolbar divider when zoom controls not shown" - #34099, thanks @​valentinpalkovic!

          ### v10.2.19## 10.2.19
    
  • Maintenance: Support vite-plugin-svelte@​7 which supports Vite 8 - #34115, thanks @​valentinpalkovic!

  • Vite: Support Vite 8 - #33788, thanks @​valentinpalkovic!

          ### v10.2.18## 10.2.18
    
  • Core: Correctly fallback to first detected vitest config file - #33865, thanks @​yannbf!

  • Core: Fix error reporting in ManagerErrorBoundary - #33915, thanks @​ghengeveld!

Commit history:
  • f9060d Merge pull request #34632 from rohanadepu/docs/unit-test-user-event-guidance

    docs: prefer userEvent in unit test examples

  • f1363a Bump version from "10.4.0-alpha.14" to "10.4.0-alpha.15" [skip ci]
  • b16225 Merge pull request #34682 from storybookjs/version-non-patch-from-10.4.0-alpha.14

    Release: Prerelease 10.4.0-alpha.15

  • 9681b6 Write changelog for 10.4.0-alpha.15 [skip ci]
  • 4dfac8 Merge pull request #34681 from storybookjs/jeppe/fix-vitest-provide-agent

    Vitest: Fix agent detection breaking runs

  • 1d5ea9 move agent detection to config hook instead of configureVitest

    Co-authored-by: Copilot <copilot@​github.com>

  • 549170 Bump version from "10.4.0-alpha.13" to "10.4.0-alpha.14" [skip ci]
  • fdaa90 Merge pull request #34679 from storybookjs/version-non-patch-from-10.4.0-alpha.13

    Release: Prerelease 10.4.0-alpha.14

  • 075111 Write changelog for 10.4.0-alpha.14 [skip ci]
  • e9fdd8 Merge pull request #34678 from storybookjs/yann/ai-steps-fix

    CLI: Fix agentic check

  • 3ab056 Bump version from "10.4.0-alpha.12" to "10.4.0-alpha.13" [skip ci]
  • b214e9 Merge pull request #34672 from storybookjs/version-non-patch-from-10.4.0-alpha.12

    Release: Prerelease 10.4.0-alpha.13

  • 51bc0e Merge branch 'yann/ai-steps-fix' of github.com:storybookjs/storybook into yann/ai-steps-fix
  • 8981b4 Merge branch 'next' into yann/ai-steps-fix
  • 4ba44a Revert "revert"

    This reverts commit e248e58e6831a723c4f2b7a7c1e0c696eff07606.

  • 52d60c Write changelog for 10.4.0-alpha.13 [skip ci]
  • e0791c Merge pull request #34670 from storybookjs/jeppe/fix-init-telemetry

    Telemetry: Fix delayed init events

  • 79a2f7 fix tests
  • e248e5 revert
  • 870322 fix steps collection
  • 80b733 fix formatting
  • 0457c8 Merge pull request #34652 from storybookjs/rename-affected-related
  • b3365c Use same icon for modified and related
  • a81263 Merge branch 'next' into jeppe/fix-init-telemetry
  • ed0c34 Replace icon for "related" changes
  • e88aee always resolve telemetry state immediately
  • 151d4f Merge pull request #34674 from storybookjs/jeppe/add-addon-mcp

    Build: Add addon-mcp to internal UI Storybook

  • 8174f8 Merge branch 'next' into jeppe/add-addon-mcp
  • a5bc66 add addon-mcp to internal UI Storybook
  • 722b7a Merge branch 'next' into jeppe/fix-init-telemetry

@michijs michijs Bot closed this May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants