Skip to content

Release: Prerelease beta 10.5.0-beta.2 - #35393

Merged
Sidnioulz merged 38 commits into
next-releasefrom
version-non-patch-from-10.5.0-beta.1
Jul 8, 2026
Merged

Sidnioulz merged 38 commits into
next-releasefrom
version-non-patch-from-10.5.0-beta.1

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 7, 2026 •

Copy link
Copy Markdown
Contributor

This is an automated pull request that bumps the version from `10.5.0-beta.1` to `10.5.0-beta.2`.
Once this pull request is merged, it will trigger a new release of version `10.5.0-beta.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:

  • ✨ Feature Request: CLI: Match `storybook ai` instances by config dir as well as cwd #35392
  • 🐛 Bug: Core: Leave experimentalReview unset by default so the AI CLI plugins can enable review #35396
  • 🐛 Bug: Review: Fix inaccurate review story counts in sidebar #35391
  • 🐛 Bug: Core: Skip story-docs Code panel emission in portable stories #35387
  • 🐛 Bug: Telemetry: Prevent pnpm paths from leaking into framework.name #35345
  • 📦 Dependencies: Angular: Support Angular 22 in Webpack framework #35318
  • 🐛 Bug: Core: Fix cryptic invariant crash when dev server port detection fails #35388

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.5.0-beta.2

  • Angular: Support Angular 22 in Webpack framework - #35318, thanks EtiennePasteur!
  • CLI: Match `storybook ai` instances by config dir as well as cwd - #35392, thanks kasperpeulen!
  • Core: Fix cryptic invariant crash when dev server port detection fails - #35388, thanks kasperpeulen!
  • Core: Leave experimentalReview unset by default so the AI CLI plugins can enable review - #35396, thanks kasperpeulen!
  • Core: Skip story-docs Code panel emission in portable stories - #35387, thanks ndelangen!
  • Review: Fix inaccurate review story counts in sidebar - #35391, thanks ghengeveld!
  • Telemetry: Prevent pnpm paths from leaking into framework.name - #35345, thanks Sidnioulz!

EtiennePasteur and others added 13 commits June 29, 2026 11:35
framework.name could leak a pnpm virtual-store path (e.g.
.pnpm/@storybook+react-vite@9.0.0) instead of the stable package name,
which is version-unstable and pollutes telemetry.

Two failure modes are fixed:
- extractFrameworkPackageName only matched paths ending with the package
  name, missing pnpm virtual-store dirs; it now also matches the
  .pnpm/<encoded-name>@ form for known framework packages.
- cleanAndSanitizePath's greedy node_modules strip left a
  .pnpm/<name>@<version> tail for pnpm-resolved packages; it now decodes
  that back to the real package name (defense-in-depth for third-party
  packages), tolerating peer-dep version suffixes.
Portable stories (vitest/playwright/jest) have no manager Code panel and no
OSA server peer, so `storyDocsSourceBeforeEach` firing the server-only
`core/story-docs.extractStoryDocs` remote command rejected after the ack
timeout, failing addon-vitest browser tests when
`features.experimentalDocgenServer` is enabled.

Guard the hook on `context.parameters.__isPortableStory` and add a defensive
`.catch()` on the load chain so an unbacked remote command can never surface
as an unhandled rejection.

Co-authored-by: Cursor <cursoragent@cursor.com>
The `__isPortableStory` guard already prevents the remote command in the only
environment that hit it (portable stories). A blanket `.catch()` only masks
genuine extraction failures in scenarios that do not occur in practice, so
remove it and keep the fix to the precise guard.

Co-authored-by: Cursor <cursoragent@cursor.com>
detect-port resolves undefined instead of rejecting when the environment
denies every bind attempt (e.g. sandboxed shells used by coding agents).
That undefined slipped through getServerPort and crashed buildDevStandalone
with the cryptic 'Invariant failed: expected options to have a port'.

Also log a clear error before exiting when --exact-port is set and the
requested port is unavailable, instead of exiting silently.
…message

- NoFreePortError now uses CORE_SERVER code 18; 17 was already taken by
  OxcParseError in oxc-parser/errors.ts, and these codes must stay unique
  for telemetry.
- getServerPort now lets NoFreePortError propagate instead of swallowing
  it with logger.error + process.exit: storybook dev reports it through
  withTelemetry (like the old invariant crash did), and storybook init's
  opportunistic port probe can recover from it instead of hard-exiting.
- The --exact-port bail-out only applies when a port was actually
  requested, fixing the 'Port undefined is not available' message (and
  the pre-existing always-exit) when --exact-port is passed without -p.
Derive the widget count from the displayed review payload instead of
counting every story with a reviewing status in the sidebar store.
Replace incremental status diffing with a full clear-and-apply sync so
remounted tabs and replaced reviews do not leave stale reviewing counts
in the sidebar filter menu.
Record the resolved configDir in the runtime instance record written by
storybook dev, and let storybook ai resolve an instance when either its
recorded cwd or its recorded config dir matches the CLI's target, so
monorepo instances are found from a different cwd. When nothing matches,
the no-instance guidance now lists the running instances with their
recorded cwd/config dir and copyable retry invocations.

Related to #35359
…ection-crash

Core: Fix cryptic invariant crash when dev server port detection fails
@github-actions github-actions Bot added the release For PRs that trigger new releases. Automated label Jul 7, 2026
Angular: Support Angular 22 in Webpack framework
@storybook-bot
storybook-bot force-pushed the version-non-patch-from-10.5.0-beta.1 branch from ada6602 to 720e245 Compare July 7, 2026 13:01
ndelangen and others added 2 commits July 7, 2026 15:02
Added a check in `shouldSkipStoryDocsEmit` to skip portable stories, ensuring that the function correctly identifies and handles these cases. Updated the test suite to include a new test case for this behavior, confirming that portable stories are skipped even when they would otherwise render dynamically.

Co-authored-by: Cursor <cursoragent@cursor.com>
Implemented a new test case in `jsxDecorator.test.tsx` to verify that JSX rendering is correctly skipped for portable stories. Updated the `skipJsxRender` function in `jsxDecorator.tsx` to include a check for the `__isPortableStory` parameter, ensuring efficient handling of portable stories without unnecessary overhead.

Co-authored-by: Cursor <cursoragent@cursor.com>
kasperpeulen and others added 9 commits July 7, 2026 15:28
Findings from a dual review (subagent + codex gpt-5.5 xhigh):
- An explicit --config-dir now restricts matching to records with that
  exact configDir; previously a same-cwd instance serving a different
  config could silently win. The defaulted .storybook guess keeps the
  either-or union.
- No-instance retry examples emit --config-dir (not --cwd) for records
  with a configDir, since a bare --cwd retry fails metadata loading when
  the config is not at <cwd>/.storybook; paths with whitespace are quoted.
- The multi-instance warning no longer claims 'at this cwd' and lists
  each competing instance's cwd/config dir, since matches can span cwds.
…n enable review

The explicit `experimentalReview: false` default added in #35379 is
indistinguishable, in the merged features preset, from a user opting out
via main.ts. @storybook/addon-mcp gates review for the `storybook ai` CLI
channel as `experimentalReview !== false` (storybookjs/mcp#341), so the
explicit default silently disabled review for every Claude/Codex plugin
user as of 10.5.0-beta.1.

Make the flag an honest tri-state: unset (default) mounts the dormant
review infrastructure so the plugins can use review per-request while
direct MCP clients and the UI stay off; `false` is a hard opt-out
everywhere; `true` also enables direct MCP clients. Core's gates switch
from truthy to `!== false` accordingly, and the default features preset
must never set the flag explicitly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Modified the test in `jsxDecorator.test.tsx` to return the correct story output for portable stories. This change ensures that the test accurately reflects the expected behavior of skipping JSX rendering, enhancing the reliability of the test suite.

Co-authored-by: Cursor <cursoragent@cursor.com>
…-default' into kasper/experimental-review-unset-default
Let the state-driven effect own status sync when displayReview updates
state; keep the handler sync only for same-payload replays where state
does not change.
ghengeveld and others added 3 commits July 7, 2026 16:02
Addresses review feedback: the gate tests set changeDetection explicitly,
so nothing failed if the real defaults regressed. Apply the actual default
features preset and assert experimentalReview stays unset and review is
enabled on it.
Telemetry: Prevent pnpm paths from leaking into framework.name
@storybook-bot
storybook-bot force-pushed the version-non-patch-from-10.5.0-beta.1 branch from 720e245 to 883d12c Compare July 7, 2026 14:12
…table-stories

Core: Skip story-docs Code panel emission in portable stories
@storybook-bot
storybook-bot force-pushed the version-non-patch-from-10.5.0-beta.1 branch from 883d12c to 06dbaf9 Compare July 7, 2026 14:18
@storybook-bot
storybook-bot force-pushed the version-non-patch-from-10.5.0-beta.1 branch from 06dbaf9 to a682b21 Compare July 7, 2026 14:32
…-unset-default

Core: Leave experimentalReview unset by default so the AI CLI plugins can enable review
@storybook-bot
storybook-bot force-pushed the version-non-patch-from-10.5.0-beta.1 branch from a682b21 to aa324ec Compare July 7, 2026 15:06
@storybook-bot
storybook-bot force-pushed the version-non-patch-from-10.5.0-beta.1 branch from aa324ec to de23cc7 Compare July 7, 2026 16:09
@storybook-bot
storybook-bot force-pushed the version-non-patch-from-10.5.0-beta.1 branch from de23cc7 to cb7a60b Compare July 8, 2026 07:44
@github-actions github-actions Bot changed the title Release: Prerelease 10.5.0-beta.2 Release: Prerelease beta 10.5.0-beta.2 Jul 8, 2026
@Sidnioulz Sidnioulz added freeze Freeze the Release PR with this label ci:daily Run the CI jobs that normally run in the daily job. labels Jul 8, 2026
@Sidnioulz Sidnioulz self-assigned this Jul 8, 2026
@storybook-app-bot

Copy link
Copy Markdown
Contributor

Package Benchmarks

Commit: cb7a60b, ran on 8 July 2026 at 08:04:24 UTC

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

@storybook/builder-webpack5

Before After Difference
Dependency count 188 188 0
Self size 79 KB 79 KB 0 B
Dependency size 35.44 MB 35.57 MB 🚨 +135 KB 🚨
Bundle Size Analyzer Link Link

@storybook/angular

Before After Difference
Dependency count 185 185 0
Self size 160 KB 160 KB 0 B
Dependency size 30.65 MB 30.79 MB 🚨 +135 KB 🚨
Bundle Size Analyzer Link Link

@storybook/ember

Before After Difference
Dependency count 187 187 0
Self size 15 KB 15 KB 0 B
Dependency size 30.79 MB 30.92 MB 🚨 +135 KB 🚨
Bundle Size Analyzer Link Link

@storybook/nextjs

Before After Difference
Dependency count 533 533 0
Self size 663 KB 663 KB 0 B
Dependency size 62.16 MB 62.29 MB 🚨 +135 KB 🚨
Bundle Size Analyzer Link Link

@storybook/react-webpack5

Before After Difference
Dependency count 274 274 0
Self size 23 KB 23 KB 0 B
Dependency size 47.94 MB 48.07 MB 🚨 +135 KB 🚨
Bundle Size Analyzer Link Link

@storybook/server-webpack5

Before After Difference
Dependency count 200 200 0
Self size 16 KB 16 KB 🚨 +12 B 🚨
Dependency size 36.70 MB 36.84 MB 🚨 +135 KB 🚨
Bundle Size Analyzer Link Link

@storybook/cli

Before After Difference
Dependency count 204 204 0
Self size 821 KB 821 KB 🚨 +118 B 🚨
Dependency size 91.80 MB 91.94 MB 🚨 +139 KB 🚨
Bundle Size Analyzer Link Link

@storybook/codemod

Before After Difference
Dependency count 197 197 0
Self size 32 KB 32 KB 🚨 +36 B 🚨
Dependency size 90.28 MB 90.42 MB 🚨 +139 KB 🚨
Bundle Size Analyzer Link Link

@storybook/preset-create-react-app

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

@storybook/preset-react-webpack

Before After Difference
Dependency count 163 163 0
Self size 19 KB 19 KB 0 B
Dependency size 32.42 MB 32.55 MB 🚨 +135 KB 🚨
Bundle Size Analyzer Link Link

@Sidnioulz
Sidnioulz merged commit 1af8351 into next-release Jul 8, 2026
328 of 335 checks passed
@Sidnioulz
Sidnioulz deleted the version-non-patch-from-10.5.0-beta.1 branch July 8, 2026 08:32
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.

7 participants