Skip to content

Release: Prerelease 10.3.0-alpha.2#33678

Merged
valentinpalkovic merged 83 commits into
next-releasefrom
version-non-patch-from-10.3.0-alpha.1
Jan 30, 2026
Merged

Release: Prerelease 10.3.0-alpha.2#33678
valentinpalkovic merged 83 commits into
next-releasefrom
version-non-patch-from-10.3.0-alpha.1

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented Jan 28, 2026

This is an automated pull request that bumps the version from 10.3.0-alpha.1 to 10.3.0-alpha.2.
Once this pull request is merged, it will trigger a new release of version 10.3.0-alpha.2.
If you're not a core maintainer with permissions to release you can ignore this pull request.

To do

Before merging the PR, there are a few QA steps to go through:

  • Add the "freeze" label to this PR, to ensure it doesn't get automatically forced pushed by new changes.
  • Add the "ci:daily" label to this PR, to trigger the full test suite to run on this PR.

And for each change below:

  1. Ensure the change is appropriate for the version bump. E.g. patch release should only contain patches, not new or de-stabilizing features. If a change is not appropriate, revert the PR.
  2. Ensure the PR is labeled correctly with one of: "BREAKING CHANGE", "feature request", "bug", "maintenance", "dependencies", "documentation", "build", "unknown".
  3. Ensure the PR title is correct, and follows the format "[Area]: [Summary]", e.g. "React: Fix hooks in CSF3 render functions". If it is not correct, change the title in the PR.
    • Areas include: React, Vue, Core, Docs, Controls, etc.
    • First word of summary indicates the type: “Add”, “Fix”, “Upgrade”, etc.
    • The entire title should fit on a line

This is a list of all the PRs merged and commits pushed directly to next, that will be part of this release:

  • 🐛 Bug: Codemod: Fix glob pattern handling on Windows #33714
  • 🐛 Bug: Addon-Vitest: Normalize Windows paths in addon-vitest automigration #33340 (will also be patched)
  • 🐛 Bug: Addon-Vitest: Skip postinstall setup when configured #33712
  • 🐛 Bug: Addon Vitest: Support simple vite.config without defineConfig helper #33694 (will also be patched)
  • 🐛 Bug: Addon-Vitest: Append Storybook project to existing test.projects array without double nesting #33708 (will also be patched)
  • 🐛 Bug: Cli: Use npm for registry URL in PNPMProxy to avoid workspace errors #33571
  • 🔧 Maintenance: Composition: Handle 401 responses with loginUrl from Chromatic #33705 (will also be patched)
  • 🐛 Bug: Addon-Vitest: Update Vitest plugin configuration to disable requireAssertions for expect #33693 (will also be patched)
  • 🐛 Bug: CSF-Factories: Fix codemod for preview files without exports #33673
  • 🐛 Bug: Addon-Docs: Add support for sourceState: \'none\' to canvas block parameters #33627
  • 🔧 Maintenance: Telemetry: Add agent detection #33675 (will also be patched)
  • 🐛 Bug: Codemod: Fix csf-2-to-3 failing due to quoted filenames #33646
  • 🐛 Bug: CSFFactories: Preserve leading comments when adding imports #33645
  • ✨ Feature Request: CSFFactories: Add non-interactive mode and --glob flag #33648
  • 🐛 Bug: CSF: Fix false positive detection of Zod v4 .meta() as CSF Factory #33666
  • 🐛 Bug: Core: Fix false-positive CJS warning when 'exports' appears in strings or comments #33572
  • 🏗️ Build: Build: Add stories for Main component #33511
  • 📝 Documentation: Docs: Add FAQ about sharing config in monorepos for CSF Next #33696 (will also be patched)
  • 🏗️ Build: Vue3: Add test for generic components with CSF factories #33685
  • 🏗️ Build: E2E: Fix flakey test #33683 (will also be patched)
  • 🏗️ Build: Build: Fix package benchmarking #33682 (will also be patched)
  • ❔ Missing Label: Core: Remove unused useModalDialog hook #33632

If you've made any changes doing the above QA (change PR titles, revert PRs), manually trigger a re-generation of this PR with this workflow and wait for it to finish. It will wipe your progress in this to do, which is expected.

Feel free to manually commit any changes necessary to this branch after you've done the last re-generation, following the Make Manual Changes section in the docs, especially if you're making changes to the changelog.

When everything above is done:


Generated changelog

10.3.0-alpha.2

  • Addon Vitest: Support simple vite.config without defineConfig helper - #33694, thanks valentinpalkovic!
  • Addon-Docs: Add support for sourceState: \'none\' to canvas block parameters - #33627, thanks quisido!
  • Addon-Vitest: Append Storybook project to existing test.projects array without double nesting - #33708, thanks valentinpalkovic!
  • Addon-Vitest: Normalize Windows paths in addon-vitest automigration - #33340, thanks tanujbhaud!
  • Addon-Vitest: Skip postinstall setup when configured - #33712, thanks valentinpalkovic!
  • Addon-Vitest: Update Vitest plugin configuration to disable requireAssertions for expect - #33693, thanks valentinpalkovic!
  • CSF-Factories: Fix codemod for preview files without exports - #33673, thanks kasperpeulen!
  • CSF: Fix false positive detection of Zod v4 .meta() as CSF Factory - #33666, thanks kasperpeulen!
  • CSFFactories: Add non-interactive mode and --glob flag - #33648, thanks kasperpeulen!
  • CSFFactories: Preserve leading comments when adding imports - #33645, thanks kasperpeulen!
  • Cli: Use npm for registry URL in PNPMProxy to avoid workspace errors - #33571, thanks ia319!
  • Codemod: Fix csf-2-to-3 failing due to quoted filenames - #33646, thanks kasperpeulen!
  • Codemod: Fix glob pattern handling on Windows - #33714, thanks kasperpeulen!
  • Composition: Handle 401 responses with loginUrl from Chromatic - #33705, thanks kasperpeulen!
  • Core: Fix false-positive CJS warning when 'exports' appears in strings or comments - #33572, thanks reeseo3o!
  • Telemetry: Add agent detection - #33675, thanks valentinpalkovic!

tanujbhaud and others added 30 commits December 11, 2025 22:33
Fixes #31768

When running `storybook add @storybook/addon-vitest` with Windows-style
paths (e.g., `--config-dir .\apps\frontend\.storybook`), the backslashes
were being inserted directly into the generated JavaScript files, causing
invalid syntax.

This fix uses the `slash` package to normalize all Windows paths to forward
slashes before inserting them into templates, ensuring cross-platform
compatibility.

Changes:
- Import and use `slash` package in `loadTemplate` function
- Add tests to verify Windows path normalization
- Add tests to verify Unix paths are preserved
Fixes #33643

The CSF factories automigration was placing the new import statement
above any leading comments (like license headers or @ts-check directives).

This fix introduces an `addImportToTop()` helper that transfers leading
comments from the first AST node to the new import declaration, ensuring
comments remain at the top of the file.

Key changes:
- Add `addImportToTop()` helper in csf-factories-utils.ts
- Use `comments` property (recast) instead of `leadingComments` (babel)
- Update story-to-csf-factory.ts and config-to-csf-factory.ts to use helper
- Add tests for both codemods

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
The codemod was wrapping filenames in quotes when passing them to spawnSync.
Since spawnSync with an array handles argument escaping automatically, the
quotes became literal characters in the filename, causing "file does not exist"
errors.

Fixes: #33639

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
The csf-factories automigration now respects the `--yes` flag to skip
interactive prompts. When `--yes` is passed:

- Uses default glob: `**/*.{stories,story}.{js,jsx,ts,tsx,mjs,mjsx,mts,mtsx}`
- Uses default import type: subpath imports

This enables running the automigration in CI or scripts without user input.

Example:
```bash
npx storybook automigrate csf-factories --yes
```

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
Sandbox always uses limited glob, non-interactive mode uses default glob.

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
- Add --glob option to automigrate command for csf-factories codemod
- Change useSubPathImports default to false (safer default)
- When glob is provided, it overrides both sandbox and default globs

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
The CSF parser was incorrectly identifying Zod v4's `.meta()` method calls as Storybook's CSF Factories `meta()` function when the object calling `.meta()` was a directly imported variable.

This caused the error:
```
BadMetaError: CSF: meta() factory must be imported from .storybook/preview configuration
```

The fix changes the detection logic to only throw BadMetaError when the variable calling `.meta()` is specifically named "preview". This is the canonical name used in CSF Factories (`preview.meta()`), so if someone has a variable with this name but imports it from the wrong path, they get a helpful error.

For all other variable names (like `mySchema` from Zod), the `.meta()` call is silently ignored since it's clearly not attempting to use CSF Factories.

Closes #33654
…ly preview files

Reproduces issue #33640: When a preview file only has side-effect imports
(like `import './preview.scss'`) or is empty, the codemod doesn't add a
default export, which breaks story files that import from preview.
When a preview file only has side-effect imports (like `import './preview.scss'`)
or is empty, the codemod now correctly adds `export default definePreview({})`.

This is needed because story files using CSF factories import from preview,
so the preview file must have a default export.

Fixes #33640
Change condition from `!yes || !inSandbox` to `!yes && !inSandbox` so
that either --yes flag or sandbox environment skips the prompt.
@storybook-bot storybook-bot force-pushed the version-non-patch-from-10.3.0-alpha.1 branch from 7254785 to c366b15 Compare January 28, 2026 20:53
@valentinpalkovic valentinpalkovic added ci:daily Run the CI jobs that normally run in the daily job. freeze Freeze the Release PR with this label labels Jan 29, 2026
@valentinpalkovic valentinpalkovic self-assigned this Jan 29, 2026
@storybook-app-bot
Copy link
Copy Markdown

storybook-app-bot Bot commented Jan 29, 2026

Package Benchmarks

Commit: 1160bdb, ran on 30 January 2026 at 10:28:46 UTC

The following packages have significant changes to their size or dependencies:

@storybook/addon-a11y

Before After Difference
Dependency count 0 2 🚨 +2 🚨
Self size 0 B 184 KB 🚨 +184 KB 🚨
Dependency size 0 B 2.98 MB 🚨 +2.98 MB 🚨
Bundle Size Analyzer Link Link

@storybook/addon-docs

Before After Difference
Dependency count 0 18 🚨 +18 🚨
Self size 0 B 1.64 MB 🚨 +1.64 MB 🚨
Dependency size 0 B 9.25 MB 🚨 +9.25 MB 🚨
Bundle Size Analyzer Link Link

@storybook/addon-links

Before After Difference
Dependency count 0 1 🚨 +1 🚨
Self size 0 B 14 KB 🚨 +14 KB 🚨
Dependency size 0 B 5 KB 🚨 +5 KB 🚨
Bundle Size Analyzer Link Link

@storybook/addon-onboarding

Before After Difference
Dependency count 0 0 0
Self size 0 B 331 KB 🚨 +331 KB 🚨
Dependency size 0 B 670 B 🚨 +670 B 🚨
Bundle Size Analyzer Link Link

storybook-addon-pseudo-states

Before After Difference
Dependency count 0 0 0
Self size 0 B 21 KB 🚨 +21 KB 🚨
Dependency size 0 B 689 B 🚨 +689 B 🚨
Bundle Size Analyzer Link Link

@storybook/addon-themes

Before After Difference
Dependency count 0 1 🚨 +1 🚨
Self size 0 B 18 KB 🚨 +18 KB 🚨
Dependency size 0 B 28 KB 🚨 +28 KB 🚨
Bundle Size Analyzer Link Link

@storybook/addon-vitest

Before After Difference
Dependency count 0 2 🚨 +2 🚨
Self size 0 B 382 KB 🚨 +382 KB 🚨
Dependency size 0 B 338 KB 🚨 +338 KB 🚨
Bundle Size Analyzer Link Link

@storybook/builder-vite

Before After Difference
Dependency count 0 11 🚨 +11 🚨
Self size 0 B 123 KB 🚨 +123 KB 🚨
Dependency size 0 B 1.30 MB 🚨 +1.30 MB 🚨
Bundle Size Analyzer Link Link

@storybook/builder-webpack5

Before After Difference
Dependency count 0 188 🚨 +188 🚨
Self size 0 B 75 KB 🚨 +75 KB 🚨
Dependency size 0 B 32.05 MB 🚨 +32.05 MB 🚨
Bundle Size Analyzer Link Link

storybook

Before After Difference
Dependency count 0 49 🚨 +49 🚨
Self size 0 B 20.40 MB 🚨 +20.40 MB 🚨
Dependency size 0 B 16.52 MB 🚨 +16.52 MB 🚨
Bundle Size Analyzer Link Link

@storybook/angular

Before After Difference
Dependency count 0 188 🚨 +188 🚨
Self size 0 B 139 KB 🚨 +139 KB 🚨
Dependency size 0 B 30.27 MB 🚨 +30.27 MB 🚨
Bundle Size Analyzer Link Link

@storybook/ember

Before After Difference
Dependency count 0 192 🚨 +192 🚨
Self size 0 B 15 KB 🚨 +15 KB 🚨
Dependency size 0 B 28.77 MB 🚨 +28.77 MB 🚨
Bundle Size Analyzer Link Link

@storybook/html-vite

Before After Difference
Dependency count 0 14 🚨 +14 🚨
Self size 0 B 22 KB 🚨 +22 KB 🚨
Dependency size 0 B 1.46 MB 🚨 +1.46 MB 🚨
Bundle Size Analyzer Link Link

@storybook/nextjs

Before After Difference
Dependency count 0 534 🚨 +534 🚨
Self size 0 B 646 KB 🚨 +646 KB 🚨
Dependency size 0 B 59.54 MB 🚨 +59.54 MB 🚨
Bundle Size Analyzer Link Link

@storybook/nextjs-vite

Before After Difference
Dependency count 0 123 🚨 +123 🚨
Self size 0 B 1.12 MB 🚨 +1.12 MB 🚨
Dependency size 0 B 22.11 MB 🚨 +22.11 MB 🚨
Bundle Size Analyzer Link Link

@storybook/preact-vite

Before After Difference
Dependency count 0 14 🚨 +14 🚨
Self size 0 B 13 KB 🚨 +13 KB 🚨
Dependency size 0 B 1.44 MB 🚨 +1.44 MB 🚨
Bundle Size Analyzer Link Link

@storybook/react-native-web-vite

Before After Difference
Dependency count 0 155 🚨 +155 🚨
Self size 0 B 30 KB 🚨 +30 KB 🚨
Dependency size 0 B 23.41 MB 🚨 +23.41 MB 🚨
Bundle Size Analyzer Link Link

@storybook/react-vite

Before After Difference
Dependency count 0 113 🚨 +113 🚨
Self size 0 B 35 KB 🚨 +35 KB 🚨
Dependency size 0 B 19.91 MB 🚨 +19.91 MB 🚨
Bundle Size Analyzer Link Link

@storybook/react-webpack5

Before After Difference
Dependency count 0 274 🚨 +274 🚨
Self size 0 B 24 KB 🚨 +24 KB 🚨
Dependency size 0 B 44.44 MB 🚨 +44.44 MB 🚨
Bundle Size Analyzer Link Link

@storybook/server-webpack5

Before After Difference
Dependency count 0 200 🚨 +200 🚨
Self size 0 B 16 KB 🚨 +16 KB 🚨
Dependency size 0 B 33.30 MB 🚨 +33.30 MB 🚨
Bundle Size Analyzer Link Link

@storybook/svelte-vite

Before After Difference
Dependency count 0 19 🚨 +19 🚨
Self size 0 B 55 KB 🚨 +55 KB 🚨
Dependency size 0 B 26.58 MB 🚨 +26.58 MB 🚨
Bundle Size Analyzer Link Link

@storybook/sveltekit

Before After Difference
Dependency count 0 20 🚨 +20 🚨
Self size 0 B 56 KB 🚨 +56 KB 🚨
Dependency size 0 B 26.63 MB 🚨 +26.63 MB 🚨
Bundle Size Analyzer Link Link

@storybook/vue3-vite

Before After Difference
Dependency count 0 108 🚨 +108 🚨
Self size 0 B 35 KB 🚨 +35 KB 🚨
Dependency size 0 B 43.67 MB 🚨 +43.67 MB 🚨
Bundle Size Analyzer Link Link

@storybook/web-components-vite

Before After Difference
Dependency count 0 15 🚨 +15 🚨
Self size 0 B 19 KB 🚨 +19 KB 🚨
Dependency size 0 B 1.50 MB 🚨 +1.50 MB 🚨
Bundle Size Analyzer Link Link

@storybook/cli

Before After Difference
Dependency count 0 183 🚨 +183 🚨
Self size 0 B 776 KB 🚨 +776 KB 🚨
Dependency size 0 B 67.57 MB 🚨 +67.57 MB 🚨
Bundle Size Analyzer Link Link

@storybook/codemod

Before After Difference
Dependency count 0 176 🚨 +176 🚨
Self size 0 B 32 KB 🚨 +32 KB 🚨
Dependency size 0 B 66.14 MB 🚨 +66.14 MB 🚨
Bundle Size Analyzer Link Link

@storybook/core-webpack

Before After Difference
Dependency count 0 1 🚨 +1 🚨
Self size 0 B 11 KB 🚨 +11 KB 🚨
Dependency size 0 B 28 KB 🚨 +28 KB 🚨
Bundle Size Analyzer Link Link

create-storybook

Before After Difference
Dependency count 0 50 🚨 +50 🚨
Self size 0 B 1000 KB 🚨 +1000 KB 🚨
Dependency size 0 B 36.92 MB 🚨 +36.92 MB 🚨
Bundle Size Analyzer node node

@storybook/csf-plugin

Before After Difference
Dependency count 0 9 🚨 +9 🚨
Self size 0 B 7 KB 🚨 +7 KB 🚨
Dependency size 0 B 1.26 MB 🚨 +1.26 MB 🚨
Bundle Size Analyzer Link Link

eslint-plugin-storybook

Before After Difference
Dependency count 0 20 🚨 +20 🚨
Self size 0 B 131 KB 🚨 +131 KB 🚨
Dependency size 0 B 2.82 MB 🚨 +2.82 MB 🚨
Bundle Size Analyzer Link Link

@storybook/react-dom-shim

Before After Difference
Dependency count 0 0 0
Self size 0 B 18 KB 🚨 +18 KB 🚨
Dependency size 0 B 788 B 🚨 +788 B 🚨
Bundle Size Analyzer Link Link

@storybook/preset-create-react-app

Before After Difference
Dependency count 0 68 🚨 +68 🚨
Self size 0 B 32 KB 🚨 +32 KB 🚨
Dependency size 0 B 5.98 MB 🚨 +5.98 MB 🚨
Bundle Size Analyzer Link Link

@storybook/preset-react-webpack

Before After Difference
Dependency count 0 170 🚨 +170 🚨
Self size 0 B 18 KB 🚨 +18 KB 🚨
Dependency size 0 B 31.29 MB 🚨 +31.29 MB 🚨
Bundle Size Analyzer Link Link

@storybook/preset-server-webpack

Before After Difference
Dependency count 0 10 🚨 +10 🚨
Self size 0 B 7 KB 🚨 +7 KB 🚨
Dependency size 0 B 1.20 MB 🚨 +1.20 MB 🚨
Bundle Size Analyzer Link Link

@storybook/html

Before After Difference
Dependency count 0 2 🚨 +2 🚨
Self size 0 B 29 KB 🚨 +29 KB 🚨
Dependency size 0 B 32 KB 🚨 +32 KB 🚨
Bundle Size Analyzer Link Link

@storybook/preact

Before After Difference
Dependency count 0 2 🚨 +2 🚨
Self size 0 B 16 KB 🚨 +16 KB 🚨
Dependency size 0 B 32 KB 🚨 +32 KB 🚨
Bundle Size Analyzer Link Link

@storybook/react

Before After Difference
Dependency count 0 57 🚨 +57 🚨
Self size 0 B 1.23 MB 🚨 +1.23 MB 🚨
Dependency size 0 B 12.95 MB 🚨 +12.95 MB 🚨
Bundle Size Analyzer Link Link

@storybook/server

Before After Difference
Dependency count 0 3 🚨 +3 🚨
Self size 0 B 8 KB 🚨 +8 KB 🚨
Dependency size 0 B 716 KB 🚨 +716 KB 🚨
Bundle Size Analyzer Link Link

@storybook/svelte

Before After Difference
Dependency count 0 2 🚨 +2 🚨
Self size 0 B 45 KB 🚨 +45 KB 🚨
Dependency size 0 B 230 KB 🚨 +230 KB 🚨
Bundle Size Analyzer Link Link

@storybook/vue3

Before After Difference
Dependency count 0 3 🚨 +3 🚨
Self size 0 B 63 KB 🚨 +63 KB 🚨
Dependency size 0 B 211 KB 🚨 +211 KB 🚨
Bundle Size Analyzer Link Link

@storybook/web-components

Before After Difference
Dependency count 0 3 🚨 +3 🚨
Self size 0 B 61 KB 🚨 +61 KB 🚨
Dependency size 0 B 47 KB 🚨 +47 KB 🚨
Bundle Size Analyzer Link Link

kasperpeulen and others added 11 commits January 29, 2026 16:36
Chromatic is changing their endpoints to return 401 instead of 200 when
authentication is required. This change adds support for extracting
loginUrl from 401 response bodies in addition to the existing 200 handling.
Composition: Handle 401 responses with loginUrl from Chromatic
…registry

Cli: Use npm for registry URL in PNPMProxy to avoid workspace errors
…ent-double-nesting

Addon-Vitest: Append Storybook project to existing test.projects array without double nesting
…ort-simple-workspace-config

Addon Vitest: Support simple vite.config without defineConfig helper
@valentinpalkovic valentinpalkovic removed the freeze Freeze the Release PR with this label label Jan 30, 2026
valentinpalkovic and others added 5 commits January 30, 2026 09:08
Normalize backslashes to forward slashes in glob patterns before passing
them to tinyglobby. On Windows, path.join() produces backslash-separated
paths, but glob libraries require forward slashes.

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
…-existing-configs

Addon-Vitest: Skip postinstall setup when configured
…est-31768

Addon-Vitest: Normalize Windows paths in addon-vitest automigration
@storybook-bot storybook-bot force-pushed the version-non-patch-from-10.3.0-alpha.1 branch from c366b15 to f097607 Compare January 30, 2026 09:47
@storybook-bot storybook-bot force-pushed the version-non-patch-from-10.3.0-alpha.1 branch from f097607 to 1160bdb Compare January 30, 2026 10:13
@valentinpalkovic valentinpalkovic added the freeze Freeze the Release PR with this label label Jan 30, 2026
@valentinpalkovic valentinpalkovic merged commit 90d71fb into next-release Jan 30, 2026
291 checks passed
@valentinpalkovic valentinpalkovic deleted the version-non-patch-from-10.3.0-alpha.1 branch January 30, 2026 12:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:daily Run the CI jobs that normally run in the daily job. freeze Freeze the Release PR with this label release For PRs that trigger new releases. Automated

Projects

None yet

Development

Successfully merging this pull request may close these issues.