Skip to content

Conversation

@kylegach
Copy link
Contributor

@kylegach kylegach commented Nov 21, 2025

What I did

Update all* links to SB site to have trailing slash

  • It should be all, but in reality the various regexes I used could have left some behind

Checklist for Contributors

Testing

Manual testing

  1. Check for broken links

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli-storybook/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

Summary by CodeRabbit

  • Documentation
    • Standardized documentation URLs across the codebase by normalizing trailing slash formatting for improved consistency and routing
    • Updated GitHub help discussion templates and contribution guidelines
    • Corrected and normalized addon and framework-specific documentation links
    • Improved internal documentation cross-references and hyperlink targets throughout guides and READMEs

✏️ Tip: You can customize this high-level summary in your review settings.

* It should be all, but in reality the various regexes I used could have left some behind
@nx-cloud
Copy link

nx-cloud bot commented Nov 21, 2025

View your CI Pipeline Execution ↗ for commit 9244ac1

Command Status Duration Result
nx run-many -t check -c production --parallel=7 ✅ Succeeded 1s View ↗
nx run-many -t build -c production --parallel=3 ✅ Succeeded 3s View ↗

☁️ Nx Cloud last updated this comment at 2025-11-26 14:42:11 UTC

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 21, 2025

📝 Walkthrough

Walkthrough

This pull request normalizes documentation and external URLs across the Storybook codebase by systematically adding trailing slashes to URLs in code, templates, comments, and documentation. The changes affect over 200 files, including framework templates, core components, CLI automigrate fixes, and documentation sites, plus a structural refactor of the GitHub discussion template.

Changes

Cohort / File(s) Summary
GitHub Issue/Discussion Templates
.github/DISCUSSION_TEMPLATE/help.yml, .github/ISSUE_TEMPLATE/bug_report.yml, .github.amrom.workers.devments/good-first-issue.md, .github.amrom.workers.devments/invalid-link.md
Restructured help.yml from flat blocks to list-based form schema; updated reproduction link documentation and contributing guide URLs with trailing slashes.
Root Documentation
CONTRIBUTING.md, MIGRATION.md, README.md
Updated contributor guide with reformatted code examples and tip formatting; expanded API migration notes for Button, Bar, Modal, and Tooltip components; normalized URLs across Storybook documentation links with trailing slashes.
Addon Documentation
code/addons/a11y/README.md, code/addons/docs/README.md, code/addons/docs/docs/*.md (docspage, mdx, multiframework, props-tables, recipes, theming), code/addons/links/README.md, code/addons/themes/README.md
Updated documentation URLs and internal links to include trailing slashes; reformatted blockquoted content sections.
Addon Component Files
code/addons/docs/src/blocks/blocks/Canvas.stories.tsx, code/addons/docs/src/blocks/components/ArgsTable/ArgControl.tsx, code/addons/docs/src/blocks/components/ArgsTable/Empty.tsx, code/addons/docs/src/blocks/components/Story.tsx, code/addons/docs/src/blocks/examples/CanvasParameters.stories.tsx
Normalized Storybook documentation URLs in component props and error messages by adding trailing slashes.
Vitest Addon
code/addons/vitest/src/components/GlobalErrorModal.stories.tsx, code/addons/vitest/src/components/TestProviderRender.stories.tsx, code/addons/vitest/src/preset.ts
Updated getDocsUrl mock and upgrade information URLs to include trailing slashes.
Builder Configuration
code/builders/builder-vite/README.md, code/builders/builder-vite/input/iframe.html
Updated Vite and webpack builder documentation references with trailing slashes and hash fragments.
Core Server & Assets
code/core/assets/server/base-preview-body.html, code/core/src/__tests/storybook-error.test.ts, code/core/src/core-server/utils/StoryIndexGenerator.ts, code/core/src/core-server/utils/whats-new.ts
Normalized error documentation and WhatsNew endpoint URLs; updated test expectations for trailing slash consistency.
Core Module Documentation & Configuration
code/core/src/actions/README.md, code/core/src/channels/README.md, code/core/src/cli/eslintPlugin.ts, code/core/src/client-logger/README.md, code/core/src/measure/README.md, code/core/src/node-logger/README.md, code/core/src/outline/README.md, code/core/src/preview-api/README-addons.md, code/core/src/preview-errors.ts, code/core/src/server-errors.ts, code/core/src/test/README.md, code/core/src/telemetry/README.md, code/core/src/telemetry/telemetry.ts, code/core/src/viewport/README.md
Updated documentation links, error reference URLs, JSDoc annotations, and telemetry endpoint URLs with trailing slashes.
Core Manager Components
code/core/src/csf/story.ts, code/core/src/manager/README.md, code/core/src/manager/components/mobile/about/MobileAbout.tsx, code/core/src/manager/components/panel/Panel.tsx, code/core/src/manager/components/sidebar/RefBlocks.tsx, code/core/src/manager/components/sidebar/RefIndicator.tsx, code/core/src/manager/settings/About.tsx, code/core/src/manager/settings/SettingsFooter.tsx
Updated JSDoc @see references and component href links with trailing slash normalization.
Core Manager Tests
code/core/src/manager-api/tests/refs.test.ts
Updated test expectations for trailing slash in Storybook source URL.
Core Type Definitions
code/core/src/types/modules/addons.ts
Updated JSDoc @see anchor references to use trailing slash format.
Framework READMEs
code/frameworks/{angular,ember,html-vite,nextjs,nextjs-vite,preact-vite,react-native-web-vite,react-vite,react-webpack5,server-webpack5,svelte-vite,sveltekit,vue3-vite,web-components-vite}/README.md
Updated framework-specific documentation links with trailing slashes before query parameters.
Framework Template Files
code/frameworks/**/template/cli/{js,ts}/{Page,*.jsx,*.tsx,*.vue,*.js,*.svelte}
Updated hardcoded Storybook docs links in rendered templates and components from https://storybook.js.org/docs to https://storybook.js.org/docs/ across all framework templates.
Framework Public Types
code/frameworks/angular/src/client/public-types.ts, code/frameworks/angular/template/cli/page.component.ts, code/frameworks/angular/template/stories/others/ngx-translate/README.mdx, code/frameworks/nextjs-vite/README.md, code/frameworks/vue3-vite/src/types.ts
Updated JSDoc @see CSF documentation anchors and template URL references.
Renderer Public Types
code/renderers/{html,preact,react,server,svelte,vue3,web-components}/src/public-types.ts
Updated JSDoc @see CSF anchor references from csf#... to csf/#... format.
Renderer Template Files
code/renderers/{html,preact,react,svelte,vue3,web-components}/template/cli/{js,ts}/{Page.*,*.vue}
Updated Storybook documentation links in rendered template files with trailing slashes.
Renderer Documentation
code/renderers/web-components/src/docs/__testfixtures__/lit-html-welcome/input.js
Updated Storybook basics URL with trailing slash.
CLI/Automigrate Fixes
code/lib/cli-storybook/src/autoblock/block-major-version.ts, code/lib/cli-storybook/src/automigrate/fixes/{addon-a11y-addon-test.ts,eslint-plugin.ts,fix-faux-esm-require.ts,nextjs-to-nextjs-vite.ts,wrap-getAbsolutePath.ts}, code/lib/cli-storybook/src/codemod/csf-factories.ts, code/lib/create-storybook/src/commands/AddonConfigurationCommand.ts
Updated migration guide links and fix metadata URLs with trailing slashes and anchor fragments.
ESLint Plugin Documentation
code/lib/eslint-plugin/docs/rules/{await-interactions.md,csf-component.md,no-renderer-packages.md,no-stories-of.md,use-storybook-expect.md,use-storybook-testing-library.md}
Updated framework support, CSF, and interactions documentation links with trailing slashes.
Preset READMEs
code/presets/{react-webpack,server-webpack}/README.md
Updated preset documentation and writing-presets links with trailing slashes.
Site Documentation
docs/_snippets/custom-docs-page.md, docs/addons/{addon-types.mdx,configure-addons.mdx,index.mdx,install-addons.mdx,writing-addons.mdx}, docs/api/main-config/{main-config-addons.mdx,main-config-babel*.mdx,main-config-swc.mdx}, docs/builders/webpack.mdx, docs/configure/{index.mdx,telemetry.mdx,user-interface/storybook-addons.mdx}, docs/essentials/themes.mdx, docs/get-started/{conclusion.mdx,frameworks/*.mdx,install.mdx,whats-a-story.mdx,why-storybook.mdx}, docs/releases/upgrading.mdx, docs/sharing/design-integrations.mdx, docs/writing-{docs,stories,tests}/*.mdx
Normalized addon catalog, documentation, and integrations URLs with trailing slashes throughout the site documentation.
Test Storybooks
test-storybooks/ember-cli/app/templates/components/welcome-page.hbs, test-storybooks/server-kitchen-sink/views/welcome/welcome.pug, test-storybooks/yarn-pnp/src/stories/Page.vue
Updated Storybook documentation URLs in test templates and reformatted template HTML/quote styles.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Rationale: While the changes follow a highly repetitive pattern (adding trailing slashes to URLs across documentation, code, and templates), the massive scope of 200+ affected files requires careful verification to ensure:

  • URLs are correctly normalized across all contexts (query strings, anchors, endpoints)
  • No unintended side effects from URL changes to actual API endpoints (e.g., telemetry, whats-new, docs)
  • The structural refactor in help.yml maintains intended form behavior
  • JSDoc anchor format changes (#/#) are semantically correct

Areas requiring extra attention:

  • .github/DISCUSSION_TEMPLATE/help.yml — structural change from flat to list-based schema needs validation of form rendering
  • code/core/src/telemetry/telemetry.ts — trailing slash added to default endpoint URL; verify this doesn't break API contract
  • code/core/src/core-server/utils/whats-new.ts — endpoint URL modification should be tested
  • Cross-framework template consistency — ensure all template files correctly point to /docs/ endpoint
  • Test expectations in code/core/src/__tests/storybook-error.test.ts — verify all trailing slash patterns are validated correctly

Possibly related PRs

✨ Finishing touches
  • 📝 Generate docstrings

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
code/builders/builder-vite/README.md (1)

136-146: Fix quoting typo in reactDocgen example

The updated Docgen description and link look good, but the code sample has a small syntax error:

export default {
  typescript: {
    reactDocgen: 'react-docgen`
  }
}

The closing character should be a quote, not a backtick.

You can fix it with:

 export default {
   typescript: {
-    reactDocgen: 'react-docgen`
+    reactDocgen: 'react-docgen'
   }
 }
🧹 Nitpick comments (6)
docs/essentials/themes.mdx (1)

9-9: Style improvement: Consider removing "of" from "inside of".

The static analysis tool flagged a minor style issue in line 9. The phrase "inside of the preview" reads more naturally as "inside the preview." This is not related to the trailing slash normalization but improves readability. Additionally, verify that this is the intended final text; the AI summary mentions "added a trailing period" to this sentence, but clarity on the specific textual changes would be helpful.

Consider applying this minor style improvement:

-Storybook's [Themes](https://github.com/storybookjs/storybook/tree/next/code/addons/themes) addon allows you to switch between multiple themes for your components inside of the preview in [Storybook](https://storybook.js.org/).
+Storybook's [Themes](https://github.com/storybookjs/storybook/tree/next/code/addons/themes) addon allows you to switch between multiple themes for your components inside the preview in [Storybook](https://storybook.js.org/).
code/renderers/web-components/template/cli/js/Page.js (1)

44-46: Consider keeping formatting consistent with line 40.

The multi-line formatting of this anchor tag differs from the single-line formatting used on line 40. For consistency within the file, consider keeping the anchor on a single line:

-        <a href="https://storybook.js.org/docs/" target="_blank" rel="noopener noreferrer">
-          docs
-        </a>
+        <a href="https://storybook.js.org/docs/" target="_blank" rel="noopener noreferrer">docs</a>
code/core/src/manager/settings/SettingsFooter.tsx (1)

21-30: Community support URL fix is good; consider aligning the Docs link

The updated community link https://storybook.js.org/community/?ref=ui#support looks correct and keeps the query/hash intact.

You may also want to normalize the preceding “Docs” link to https://storybook.js.org/?ref=ui for consistency with this PR’s trailing‑slash goal.

code/addons/docs/docs/props-tables.md (1)

62-203: Docs URL updates are correct; one optional wording nit

  • All updated links under /docs/api/csf/ and /docs/essentials/controls/ now consistently include a trailing slash before fragments, which matches the rest of the repo.
  • The table row for type.required currently says “Whether or not the property is required.” You could simplify this to “Whether the property is required.” if you’d like to follow the style hint.
docs/get-started/install.mdx (1)

281-331: Consider aligning the remaining community help link (Preact) with the new pattern

You’ve normalized most “Storybook's help documentation” links to https://storybook.js.org/community/#support. The Preact block still uses the old form without the trailing slash:

<IfRenderer renderer="preact">
  * Storybook's Preact Vite [framework documentation](./frameworks/preact-vite.mdx) for more information on how to set up Storybook in your Preact project with Vite.
  * [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help.
</IfRenderer>

For consistency with the other renderers, you could update it as:

-    * [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help.
+    * [Storybook's help documentation](https://storybook.js.org/community/#support) to contact the community and ask for help.
MIGRATION.md (1)

2199-2201: Use descriptive link text (MD059).

Replace “More info here” with meaningful text for accessibility and linting.

[scribble: MD059]

-[More info here](https://storybook.js.org/docs/migration-guide/#storiesmdx-to-mdxcsf).
+[Migration guide: Stories MDX to MDX CSF](https://storybook.js.org/docs/migration-guide/#storiesmdx-to-mdxcsf).
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between edf82eb and 9244ac1.

📒 Files selected for processing (164)
  • .github/DISCUSSION_TEMPLATE/help.yml (1 hunks)
  • .github/ISSUE_TEMPLATE/bug_report.yml (1 hunks)
  • .github.amrom.workers.devments/good-first-issue.md (1 hunks)
  • .github.amrom.workers.devments/invalid-link.md (1 hunks)
  • CONTRIBUTING.md (5 hunks)
  • MIGRATION.md (33 hunks)
  • README.md (2 hunks)
  • code/addons/a11y/README.md (1 hunks)
  • code/addons/docs/README.md (2 hunks)
  • code/addons/docs/docs/docspage.md (1 hunks)
  • code/addons/docs/docs/mdx.md (1 hunks)
  • code/addons/docs/docs/multiframework.md (2 hunks)
  • code/addons/docs/docs/props-tables.md (3 hunks)
  • code/addons/docs/docs/recipes.md (1 hunks)
  • code/addons/docs/docs/theming.md (1 hunks)
  • code/addons/docs/src/blocks/blocks/Canvas.stories.tsx (1 hunks)
  • code/addons/docs/src/blocks/components/ArgsTable/ArgControl.tsx (1 hunks)
  • code/addons/docs/src/blocks/components/ArgsTable/Empty.tsx (2 hunks)
  • code/addons/docs/src/blocks/components/Story.tsx (1 hunks)
  • code/addons/docs/src/blocks/examples/CanvasParameters.stories.tsx (1 hunks)
  • code/addons/links/README.md (1 hunks)
  • code/addons/themes/README.md (1 hunks)
  • code/addons/vitest/src/components/GlobalErrorModal.stories.tsx (1 hunks)
  • code/addons/vitest/src/components/TestProviderRender.stories.tsx (1 hunks)
  • code/addons/vitest/src/preset.ts (1 hunks)
  • code/builders/builder-vite/README.md (2 hunks)
  • code/builders/builder-vite/input/iframe.html (1 hunks)
  • code/core/assets/server/base-preview-body.html (1 hunks)
  • code/core/src/__tests/storybook-error.test.ts (3 hunks)
  • code/core/src/actions/README.md (1 hunks)
  • code/core/src/channels/README.md (1 hunks)
  • code/core/src/cli/eslintPlugin.ts (1 hunks)
  • code/core/src/client-logger/README.md (1 hunks)
  • code/core/src/core-server/utils/StoryIndexGenerator.ts (1 hunks)
  • code/core/src/core-server/utils/whats-new.ts (1 hunks)
  • code/core/src/csf/story.ts (6 hunks)
  • code/core/src/manager-api/tests/refs.test.ts (2 hunks)
  • code/core/src/manager/README.md (1 hunks)
  • code/core/src/manager/components/mobile/about/MobileAbout.tsx (1 hunks)
  • code/core/src/manager/components/panel/Panel.tsx (1 hunks)
  • code/core/src/manager/components/sidebar/RefBlocks.tsx (3 hunks)
  • code/core/src/manager/components/sidebar/RefIndicator.tsx (2 hunks)
  • code/core/src/manager/settings/About.tsx (1 hunks)
  • code/core/src/manager/settings/SettingsFooter.tsx (1 hunks)
  • code/core/src/measure/README.md (1 hunks)
  • code/core/src/node-logger/README.md (1 hunks)
  • code/core/src/outline/README.md (1 hunks)
  • code/core/src/preview-api/README-addons.md (1 hunks)
  • code/core/src/preview-errors.ts (1 hunks)
  • code/core/src/server-errors.ts (6 hunks)
  • code/core/src/telemetry/README.md (1 hunks)
  • code/core/src/telemetry/telemetry.ts (1 hunks)
  • code/core/src/test/README.md (1 hunks)
  • code/core/src/types/modules/addons.ts (6 hunks)
  • code/core/src/viewport/README.md (2 hunks)
  • code/frameworks/angular/README.md (1 hunks)
  • code/frameworks/angular/src/client/public-types.ts (3 hunks)
  • code/frameworks/angular/template/cli/page.component.ts (1 hunks)
  • code/frameworks/angular/template/stories/others/ngx-translate/README.mdx (1 hunks)
  • code/frameworks/ember/README.md (1 hunks)
  • code/frameworks/html-vite/README.md (1 hunks)
  • code/frameworks/html-vite/template/cli/js/Page.js (1 hunks)
  • code/frameworks/html-vite/template/cli/ts/Page.ts (1 hunks)
  • code/frameworks/nextjs-vite/README.md (1 hunks)
  • code/frameworks/nextjs-vite/template/cli/js/Page.jsx (1 hunks)
  • code/frameworks/nextjs-vite/template/cli/ts/Page.tsx (1 hunks)
  • code/frameworks/nextjs/README.md (1 hunks)
  • code/frameworks/nextjs/template/cli/js/Page.jsx (1 hunks)
  • code/frameworks/nextjs/template/cli/ts/Page.tsx (1 hunks)
  • code/frameworks/preact-vite/README.md (1 hunks)
  • code/frameworks/preact-vite/template/cli/Page.jsx (1 hunks)
  • code/frameworks/react-native-web-vite/README.md (1 hunks)
  • code/frameworks/react-native-web-vite/template/cli/js/Page.jsx (1 hunks)
  • code/frameworks/react-native-web-vite/template/cli/ts/Page.tsx (1 hunks)
  • code/frameworks/react-vite/README.md (1 hunks)
  • code/frameworks/react-vite/template/cli/js/Page.jsx (1 hunks)
  • code/frameworks/react-vite/template/cli/ts/Page.tsx (1 hunks)
  • code/frameworks/react-webpack5/README.md (1 hunks)
  • code/frameworks/react-webpack5/template/cli/js/Page.jsx (1 hunks)
  • code/frameworks/react-webpack5/template/cli/ts/Page.tsx (1 hunks)
  • code/frameworks/server-webpack5/README.md (1 hunks)
  • code/frameworks/svelte-vite/README.md (1 hunks)
  • code/frameworks/svelte-vite/template/cli/js/Page.svelte (1 hunks)
  • code/frameworks/svelte-vite/template/cli/ts/Page.svelte (1 hunks)
  • code/frameworks/sveltekit/README.md (1 hunks)
  • code/frameworks/sveltekit/template/cli/js/Page.svelte (1 hunks)
  • code/frameworks/sveltekit/template/cli/ts/Page.svelte (1 hunks)
  • code/frameworks/vue3-vite/README.md (1 hunks)
  • code/frameworks/vue3-vite/src/types.ts (1 hunks)
  • code/frameworks/vue3-vite/template/cli/js/Page.vue (1 hunks)
  • code/frameworks/vue3-vite/template/cli/ts/Page.vue (1 hunks)
  • code/frameworks/web-components-vite/README.md (1 hunks)
  • code/frameworks/web-components-vite/template/cli/js/Page.js (1 hunks)
  • code/frameworks/web-components-vite/template/cli/ts/Page.ts (1 hunks)
  • code/lib/cli-storybook/src/autoblock/block-major-version.ts (2 hunks)
  • code/lib/cli-storybook/src/automigrate/fixes/addon-a11y-addon-test.ts (1 hunks)
  • code/lib/cli-storybook/src/automigrate/fixes/eslint-plugin.ts (1 hunks)
  • code/lib/cli-storybook/src/automigrate/fixes/fix-faux-esm-require.ts (1 hunks)
  • code/lib/cli-storybook/src/automigrate/fixes/nextjs-to-nextjs-vite.ts (1 hunks)
  • code/lib/cli-storybook/src/automigrate/fixes/wrap-getAbsolutePath.ts (1 hunks)
  • code/lib/cli-storybook/src/codemod/csf-factories.ts (2 hunks)
  • code/lib/create-storybook/src/commands/AddonConfigurationCommand.ts (1 hunks)
  • code/lib/eslint-plugin/docs/rules/await-interactions.md (1 hunks)
  • code/lib/eslint-plugin/docs/rules/csf-component.md (1 hunks)
  • code/lib/eslint-plugin/docs/rules/no-renderer-packages.md (1 hunks)
  • code/lib/eslint-plugin/docs/rules/no-stories-of.md (1 hunks)
  • code/lib/eslint-plugin/docs/rules/use-storybook-expect.md (1 hunks)
  • code/lib/eslint-plugin/docs/rules/use-storybook-testing-library.md (1 hunks)
  • code/presets/react-webpack/README.md (1 hunks)
  • code/presets/server-webpack/README.md (1 hunks)
  • code/renderers/html/src/public-types.ts (1 hunks)
  • code/renderers/html/template/cli/js/Page.js (1 hunks)
  • code/renderers/html/template/cli/ts/Page.ts (1 hunks)
  • code/renderers/preact/src/public-types.ts (1 hunks)
  • code/renderers/preact/template/cli/Page.jsx (1 hunks)
  • code/renderers/react/src/public-types.ts (3 hunks)
  • code/renderers/react/template/cli/js/Page.jsx (1 hunks)
  • code/renderers/react/template/cli/ts/Page.tsx (1 hunks)
  • code/renderers/server/src/public-types.ts (1 hunks)
  • code/renderers/svelte/src/public-types.ts (3 hunks)
  • code/renderers/svelte/template/cli/js/Page.svelte (1 hunks)
  • code/renderers/svelte/template/cli/ts/Page.svelte (1 hunks)
  • code/renderers/vue3/src/public-types.ts (3 hunks)
  • code/renderers/vue3/template/cli/js/Page.vue (1 hunks)
  • code/renderers/vue3/template/cli/ts/Page.vue (1 hunks)
  • code/renderers/web-components/src/docs/__testfixtures__/lit-html-welcome/input.js (1 hunks)
  • code/renderers/web-components/src/public-types.ts (1 hunks)
  • code/renderers/web-components/template/cli/js/Page.js (1 hunks)
  • code/renderers/web-components/template/cli/ts/Page.ts (1 hunks)
  • docs/_snippets/custom-docs-page.md (1 hunks)
  • docs/addons/addon-types.mdx (1 hunks)
  • docs/addons/configure-addons.mdx (2 hunks)
  • docs/addons/index.mdx (1 hunks)
  • docs/addons/install-addons.mdx (3 hunks)
  • docs/addons/writing-addons.mdx (1 hunks)
  • docs/api/main-config/main-config-addons.mdx (1 hunks)
  • docs/api/main-config/main-config-babel-default.mdx (1 hunks)
  • docs/api/main-config/main-config-babel.mdx (1 hunks)
  • docs/api/main-config/main-config-swc.mdx (2 hunks)
  • docs/builders/webpack.mdx (2 hunks)
  • docs/configure/index.mdx (1 hunks)
  • docs/configure/telemetry.mdx (1 hunks)
  • docs/configure/user-interface/storybook-addons.mdx (1 hunks)
  • docs/essentials/themes.mdx (1 hunks)
  • docs/get-started/conclusion.mdx (1 hunks)
  • docs/get-started/frameworks/nextjs-vite.mdx (1 hunks)
  • docs/get-started/frameworks/nextjs.mdx (1 hunks)
  • docs/get-started/frameworks/react-native-web-vite.mdx (1 hunks)
  • docs/get-started/frameworks/svelte-vite.mdx (2 hunks)
  • docs/get-started/frameworks/sveltekit.mdx (2 hunks)
  • docs/get-started/install.mdx (3 hunks)
  • docs/get-started/whats-a-story.mdx (1 hunks)
  • docs/get-started/why-storybook.mdx (1 hunks)
  • docs/releases/upgrading.mdx (1 hunks)
  • docs/sharing/design-integrations.mdx (2 hunks)
  • docs/writing-docs/code-panel.mdx (1 hunks)
  • docs/writing-docs/index.mdx (1 hunks)
  • docs/writing-stories/index.mdx (1 hunks)
  • docs/writing-tests/index.mdx (1 hunks)
  • docs/writing-tests/integrations/stories-in-unit-tests.mdx (1 hunks)
  • docs/writing-tests/integrations/test-runner.mdx (6 hunks)
  • test-storybooks/ember-cli/app/templates/components/welcome-page.hbs (3 hunks)
  • test-storybooks/server-kitchen-sink/views/welcome/welcome.pug (1 hunks)
  • test-storybooks/yarn-pnp/src/stories/Page.vue (2 hunks)
🧰 Additional context used
🧠 Learnings (13)
📚 Learning: 2025-11-05T09:38:47.712Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/Select/Select.tsx:200-204
Timestamp: 2025-11-05T09:38:47.712Z
Learning: Repo: storybookjs/storybook — Guidance: Until Storybook 11 is released, do not suggest using React.useId anywhere (e.g., in code/core/src/components/components/Select/Select.tsx) to maintain compatibility with React 17 runtimes. Prefer advising: accept a caller-provided props.id and, if needed, generate a client-only fallback id to minimize SSR hydration issues — but avoid useId. Resume prompting for useId after Storybook 11.

Applied to files:

  • code/frameworks/react-webpack5/template/cli/ts/Page.tsx
  • test-storybooks/ember-cli/app/templates/components/welcome-page.hbs
  • code/frameworks/react-webpack5/template/cli/js/Page.jsx
  • docs/get-started/whats-a-story.mdx
  • code/frameworks/html-vite/README.md
  • docs/releases/upgrading.mdx
  • code/core/src/actions/README.md
  • code/frameworks/sveltekit/template/cli/js/Page.svelte
  • code/frameworks/react-native-web-vite/README.md
  • code/addons/docs/docs/docspage.md
  • code/core/src/preview-errors.ts
  • docs/writing-stories/index.mdx
  • code/core/src/client-logger/README.md
  • code/core/src/test/README.md
  • code/core/src/node-logger/README.md
  • code/frameworks/vue3-vite/template/cli/ts/Page.vue
  • docs/get-started/frameworks/nextjs-vite.mdx
  • code/frameworks/nextjs/template/cli/ts/Page.tsx
  • code/frameworks/preact-vite/template/cli/Page.jsx
  • docs/get-started/conclusion.mdx
  • code/builders/builder-vite/README.md
  • code/renderers/svelte/template/cli/ts/Page.svelte
  • docs/writing-tests/index.mdx
  • code/frameworks/html-vite/template/cli/js/Page.js
  • code/frameworks/nextjs-vite/template/cli/ts/Page.tsx
  • code/frameworks/angular/template/cli/page.component.ts
  • code/frameworks/preact-vite/README.md
  • code/frameworks/nextjs/template/cli/js/Page.jsx
  • .github.amrom.workers.devments/good-first-issue.md
  • code/addons/docs/src/blocks/components/Story.tsx
  • docs/addons/index.mdx
  • code/core/src/manager/settings/About.tsx
  • code/addons/links/README.md
  • code/lib/cli-storybook/src/codemod/csf-factories.ts
  • code/addons/docs/src/blocks/components/ArgsTable/ArgControl.tsx
  • code/lib/eslint-plugin/docs/rules/no-stories-of.md
  • code/renderers/react/template/cli/ts/Page.tsx
  • code/core/src/types/modules/addons.ts
  • docs/builders/webpack.mdx
  • code/lib/cli-storybook/src/automigrate/fixes/wrap-getAbsolutePath.ts
  • code/core/src/manager/components/panel/Panel.tsx
  • code/addons/docs/docs/multiframework.md
  • test-storybooks/server-kitchen-sink/views/welcome/welcome.pug
  • docs/writing-docs/code-panel.mdx
  • code/core/src/channels/README.md
  • code/frameworks/react-vite/README.md
  • docs/get-started/install.mdx
  • docs/get-started/frameworks/react-native-web-vite.mdx
  • docs/get-started/frameworks/sveltekit.mdx
  • code/lib/cli-storybook/src/automigrate/fixes/addon-a11y-addon-test.ts
  • code/renderers/html/template/cli/ts/Page.ts
  • code/addons/a11y/README.md
  • code/frameworks/nextjs-vite/README.md
  • code/frameworks/react-vite/template/cli/js/Page.jsx
  • code/lib/eslint-plugin/docs/rules/await-interactions.md
  • code/renderers/preact/template/cli/Page.jsx
  • code/addons/docs/src/blocks/components/ArgsTable/Empty.tsx
  • code/core/src/manager/settings/SettingsFooter.tsx
  • code/addons/vitest/src/components/GlobalErrorModal.stories.tsx
  • code/addons/vitest/src/preset.ts
  • code/lib/eslint-plugin/docs/rules/csf-component.md
  • test-storybooks/yarn-pnp/src/stories/Page.vue
  • code/frameworks/react-webpack5/README.md
  • code/addons/docs/docs/theming.md
  • code/frameworks/sveltekit/template/cli/ts/Page.svelte
  • docs/writing-tests/integrations/test-runner.mdx
  • code/renderers/vue3/src/public-types.ts
  • docs/configure/user-interface/storybook-addons.mdx
  • code/frameworks/sveltekit/README.md
  • code/renderers/svelte/template/cli/js/Page.svelte
  • code/frameworks/web-components-vite/README.md
  • code/core/src/manager/components/mobile/about/MobileAbout.tsx
  • code/frameworks/nextjs-vite/template/cli/js/Page.jsx
  • code/addons/docs/README.md
  • code/lib/cli-storybook/src/automigrate/fixes/eslint-plugin.ts
  • code/frameworks/html-vite/template/cli/ts/Page.ts
  • code/core/src/preview-api/README-addons.md
  • code/frameworks/vue3-vite/README.md
  • code/lib/eslint-plugin/docs/rules/no-renderer-packages.md
  • code/frameworks/nextjs/README.md
  • code/renderers/react/src/public-types.ts
  • code/renderers/web-components/template/cli/ts/Page.ts
  • code/renderers/web-components/template/cli/js/Page.js
  • code/renderers/vue3/template/cli/ts/Page.vue
  • code/frameworks/server-webpack5/README.md
  • .github.amrom.workers.devments/invalid-link.md
  • code/frameworks/react-vite/template/cli/ts/Page.tsx
  • docs/get-started/why-storybook.mdx
  • code/frameworks/svelte-vite/template/cli/ts/Page.svelte
  • code/core/src/manager/components/sidebar/RefIndicator.tsx
  • code/frameworks/web-components-vite/template/cli/js/Page.js
  • MIGRATION.md
  • docs/writing-tests/integrations/stories-in-unit-tests.mdx
  • docs/essentials/themes.mdx
  • code/lib/cli-storybook/src/automigrate/fixes/nextjs-to-nextjs-vite.ts
  • code/lib/eslint-plugin/docs/rules/use-storybook-expect.md
  • code/frameworks/vue3-vite/template/cli/js/Page.vue
  • code/renderers/react/template/cli/js/Page.jsx
  • code/core/src/csf/story.ts
  • code/renderers/html/template/cli/js/Page.js
  • code/core/src/core-server/utils/StoryIndexGenerator.ts
  • code/addons/docs/docs/props-tables.md
  • docs/configure/telemetry.mdx
  • code/core/src/manager/README.md
  • code/core/assets/server/base-preview-body.html
  • code/frameworks/web-components-vite/template/cli/ts/Page.ts
  • code/renderers/vue3/template/cli/js/Page.vue
  • code/lib/cli-storybook/src/automigrate/fixes/fix-faux-esm-require.ts
  • code/lib/cli-storybook/src/autoblock/block-major-version.ts
  • code/renderers/web-components/src/docs/__testfixtures__/lit-html-welcome/input.js
  • code/core/src/viewport/README.md
  • code/frameworks/ember/README.md
  • docs/get-started/frameworks/svelte-vite.mdx
  • code/lib/eslint-plugin/docs/rules/use-storybook-testing-library.md
  • docs/addons/install-addons.mdx
  • code/frameworks/svelte-vite/template/cli/js/Page.svelte
  • code/core/src/outline/README.md
  • code/presets/server-webpack/README.md
  • code/core/src/manager/components/sidebar/RefBlocks.tsx
  • docs/get-started/frameworks/nextjs.mdx
  • README.md
  • CONTRIBUTING.md
  • code/core/src/server-errors.ts
  • code/frameworks/svelte-vite/README.md
  • code/presets/react-webpack/README.md
📚 Learning: 2025-11-05T09:37:25.920Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/tooltip/WithTooltip.tsx:54-96
Timestamp: 2025-11-05T09:37:25.920Z
Learning: Repo: storybookjs/storybook — In code/core/src/components/components/tooltip/WithTooltip.tsx, the legacy WithTooltip implementation is intentionally reintroduced for backward compatibility and is deprecated; maintainers (per Sidnioulz) do not want maintenance or improvements on it. Prefer WithTooltipNew/Popover; avoid suggesting changes to WithTooltip.* going forward.

Applied to files:

  • code/frameworks/react-webpack5/template/cli/ts/Page.tsx
  • test-storybooks/ember-cli/app/templates/components/welcome-page.hbs
  • code/frameworks/react-webpack5/template/cli/js/Page.jsx
  • code/addons/docs/src/blocks/blocks/Canvas.stories.tsx
  • code/frameworks/sveltekit/template/cli/js/Page.svelte
  • code/addons/docs/docs/docspage.md
  • docs/writing-stories/index.mdx
  • code/core/src/client-logger/README.md
  • code/frameworks/vue3-vite/template/cli/ts/Page.vue
  • code/frameworks/nextjs/template/cli/ts/Page.tsx
  • code/frameworks/preact-vite/template/cli/Page.jsx
  • code/renderers/svelte/template/cli/ts/Page.svelte
  • code/frameworks/html-vite/template/cli/js/Page.js
  • code/frameworks/nextjs-vite/template/cli/ts/Page.tsx
  • code/frameworks/angular/template/cli/page.component.ts
  • code/frameworks/nextjs/template/cli/js/Page.jsx
  • code/addons/docs/src/blocks/components/Story.tsx
  • code/core/src/manager/settings/About.tsx
  • code/lib/cli-storybook/src/codemod/csf-factories.ts
  • code/addons/docs/src/blocks/components/ArgsTable/ArgControl.tsx
  • code/lib/eslint-plugin/docs/rules/no-stories-of.md
  • code/renderers/react/template/cli/ts/Page.tsx
  • code/core/src/types/modules/addons.ts
  • docs/builders/webpack.mdx
  • code/core/src/manager/components/panel/Panel.tsx
  • docs/writing-docs/code-panel.mdx
  • code/core/src/channels/README.md
  • docs/get-started/install.mdx
  • docs/get-started/frameworks/react-native-web-vite.mdx
  • docs/get-started/frameworks/sveltekit.mdx
  • code/renderers/html/template/cli/ts/Page.ts
  • code/frameworks/angular/template/stories/others/ngx-translate/README.mdx
  • code/frameworks/react-vite/template/cli/js/Page.jsx
  • code/renderers/preact/template/cli/Page.jsx
  • code/addons/docs/src/blocks/components/ArgsTable/Empty.tsx
  • code/core/src/manager/settings/SettingsFooter.tsx
  • test-storybooks/yarn-pnp/src/stories/Page.vue
  • code/frameworks/react-webpack5/README.md
  • code/frameworks/sveltekit/template/cli/ts/Page.svelte
  • code/renderers/svelte/template/cli/js/Page.svelte
  • code/core/src/manager/components/mobile/about/MobileAbout.tsx
  • code/frameworks/nextjs-vite/template/cli/js/Page.jsx
  • code/addons/docs/README.md
  • code/frameworks/html-vite/template/cli/ts/Page.ts
  • code/core/src/preview-api/README-addons.md
  • code/lib/eslint-plugin/docs/rules/no-renderer-packages.md
  • code/renderers/react/src/public-types.ts
  • code/renderers/web-components/template/cli/ts/Page.ts
  • code/addons/docs/src/blocks/examples/CanvasParameters.stories.tsx
  • code/renderers/web-components/template/cli/js/Page.js
  • code/renderers/vue3/template/cli/ts/Page.vue
  • .github.amrom.workers.devments/invalid-link.md
  • code/frameworks/react-vite/template/cli/ts/Page.tsx
  • docs/get-started/why-storybook.mdx
  • code/frameworks/svelte-vite/template/cli/ts/Page.svelte
  • code/core/src/manager/components/sidebar/RefIndicator.tsx
  • code/frameworks/web-components-vite/template/cli/js/Page.js
  • MIGRATION.md
  • docs/writing-tests/integrations/stories-in-unit-tests.mdx
  • docs/essentials/themes.mdx
  • code/lib/eslint-plugin/docs/rules/use-storybook-expect.md
  • code/frameworks/vue3-vite/template/cli/js/Page.vue
  • code/renderers/react/template/cli/js/Page.jsx
  • code/core/src/csf/story.ts
  • code/renderers/html/template/cli/js/Page.js
  • code/core/src/core-server/utils/StoryIndexGenerator.ts
  • docs/configure/telemetry.mdx
  • code/core/src/manager/README.md
  • code/frameworks/web-components-vite/template/cli/ts/Page.ts
  • code/renderers/vue3/template/cli/js/Page.vue
  • code/lib/cli-storybook/src/autoblock/block-major-version.ts
  • code/renderers/web-components/src/docs/__testfixtures__/lit-html-welcome/input.js
  • code/core/src/viewport/README.md
  • code/frameworks/ember/README.md
  • docs/get-started/frameworks/svelte-vite.mdx
  • code/lib/eslint-plugin/docs/rules/use-storybook-testing-library.md
  • code/frameworks/svelte-vite/template/cli/js/Page.svelte
  • code/core/src/outline/README.md
  • code/core/src/manager/components/sidebar/RefBlocks.tsx
  • README.md
📚 Learning: 2025-10-01T15:24:01.060Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32594
File: code/core/src/components/components/Popover/WithPopover.tsx:7-9
Timestamp: 2025-10-01T15:24:01.060Z
Learning: In the Storybook repository, "react-aria-components/patched-dist/*" (e.g., "react-aria-components/patched-dist/Dialog", "react-aria-components/patched-dist/Popover", "react-aria-components/patched-dist/Tooltip") are valid import paths created by a patch applied to the react-aria-components package. These imports should not be flagged as broken or invalid until a maintainer explicitly states they are no longer acceptable.

Applied to files:

  • code/frameworks/react-webpack5/template/cli/js/Page.jsx
  • docs/releases/upgrading.mdx
  • docs/writing-tests/index.mdx
  • code/frameworks/nextjs/template/cli/js/Page.jsx
  • code/lib/cli-storybook/src/codemod/csf-factories.ts
  • code/renderers/react/template/cli/ts/Page.tsx
  • code/core/src/types/modules/addons.ts
  • code/core/src/manager/components/panel/Panel.tsx
  • test-storybooks/server-kitchen-sink/views/welcome/welcome.pug
  • code/core/src/channels/README.md
  • code/lib/cli-storybook/src/automigrate/fixes/addon-a11y-addon-test.ts
  • code/addons/a11y/README.md
  • code/frameworks/react-vite/template/cli/js/Page.jsx
  • code/renderers/preact/template/cli/Page.jsx
  • code/addons/vitest/src/components/GlobalErrorModal.stories.tsx
  • test-storybooks/yarn-pnp/src/stories/Page.vue
  • code/addons/docs/docs/theming.md
  • docs/configure/user-interface/storybook-addons.mdx
  • code/lib/eslint-plugin/docs/rules/no-renderer-packages.md
  • .github.amrom.workers.devments/invalid-link.md
  • docs/get-started/why-storybook.mdx
  • code/frameworks/web-components-vite/template/cli/js/Page.js
  • MIGRATION.md
  • code/frameworks/web-components-vite/template/cli/ts/Page.ts
  • code/lib/cli-storybook/src/automigrate/fixes/fix-faux-esm-require.ts
  • code/renderers/web-components/src/docs/__testfixtures__/lit-html-welcome/input.js
  • code/core/src/manager/components/sidebar/RefBlocks.tsx
  • docs/get-started/frameworks/nextjs.mdx
  • README.md
  • code/presets/react-webpack/README.md
📚 Learning: 2025-10-02T09:22:13.215Z
Learnt from: JReinhold
Repo: storybookjs/storybook PR: 32607
File: code/package.json:243-243
Timestamp: 2025-10-02T09:22:13.215Z
Learning: The Storybook repository uses Yarn v^4 (any 4.x version) as the package manager, configured via .yarnrc.yml and package.json packageManager field. Specific patch versions within v4 can be upgraded as needed.

Applied to files:

  • docs/releases/upgrading.mdx
  • code/builders/builder-vite/README.md
  • code/lib/eslint-plugin/docs/rules/no-renderer-packages.md
  • MIGRATION.md
  • code/core/src/manager/README.md
  • CONTRIBUTING.md
📚 Learning: 2025-10-03T07:55:42.639Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/manager/components/preview/Toolbar.tsx:102-105
Timestamp: 2025-10-03T07:55:42.639Z
Learning: In code/core/src/manager/components/preview/Toolbar.tsx, we intentionally do not add aria-label/aria-labelledby to StyledToolbar (AbstractToolbar) because the enclosing section is already labeled via an sr-only heading and the toolbar is the only content. Revisit only if real user testing indicates a need.

Applied to files:

  • docs/addons/addon-types.mdx
  • MIGRATION.md
📚 Learning: 2025-09-29T13:20:23.346Z
Learnt from: mrginglymus
Repo: storybookjs/storybook PR: 32556
File: code/core/package.json:309-313
Timestamp: 2025-09-29T13:20:23.346Z
Learning: The `fast-printf` dependency in Storybook's core package is bundled into the final distribution during the build process, so it should remain in devDependencies rather than being moved to dependencies, following the same pattern as other bundled dependencies like `open`.

Applied to files:

  • code/builders/builder-vite/README.md
  • code/core/src/channels/README.md
  • code/lib/eslint-plugin/docs/rules/no-renderer-packages.md
  • docs/get-started/why-storybook.mdx
  • MIGRATION.md
📚 Learning: 2025-11-05T09:36:55.944Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/Tabs/Tabs.stories.tsx:222-227
Timestamp: 2025-11-05T09:36:55.944Z
Learning: Repo: storybookjs/storybook PR: 32458 — In code/core/src/components/components/Button/Button.tsx (React/TypeScript), ButtonProps includes ariaLabel?: string | false and the component maps it to the DOM aria-label. Convention: ariaLabel is mandatory on all Button usages — provide a descriptive string for icon-only buttons; set ariaLabel=false when the button’s children already serve as the accessible name. Do not suggest using a raw aria-label prop on Button call sites.

Applied to files:

  • docs/writing-tests/index.mdx
  • code/core/src/manager/settings/About.tsx
  • code/core/src/types/modules/addons.ts
  • code/core/src/manager/components/panel/Panel.tsx
  • code/lib/cli-storybook/src/automigrate/fixes/addon-a11y-addon-test.ts
  • code/addons/a11y/README.md
  • code/addons/docs/src/blocks/components/ArgsTable/Empty.tsx
  • code/frameworks/web-components-vite/template/cli/js/Page.js
  • MIGRATION.md
  • code/core/src/csf/story.ts
📚 Learning: 2025-09-24T09:39:39.233Z
Learnt from: ndelangen
Repo: storybookjs/storybook PR: 32507
File: code/core/src/manager/globals/globals-module-info.ts:25-33
Timestamp: 2025-09-24T09:39:39.233Z
Learning: In Storybook, storybook/actions/decorator is a preview-only entrypoint and should not be included in manager globals configuration. The duplicatedKeys array in code/core/src/manager/globals/globals-module-info.ts is specifically for manager-side externalization, not preview entrypoints.

Applied to files:

  • docs/addons/index.mdx
  • code/core/src/types/modules/addons.ts
  • code/frameworks/angular/template/stories/others/ngx-translate/README.mdx
  • code/addons/vitest/src/components/TestProviderRender.stories.tsx
  • docs/get-started/why-storybook.mdx
  • MIGRATION.md
  • docs/essentials/themes.mdx
  • code/core/src/csf/story.ts
  • code/core/src/core-server/utils/StoryIndexGenerator.ts
  • code/core/src/manager/README.md
  • code/core/assets/server/base-preview-body.html
  • code/frameworks/web-components-vite/template/cli/ts/Page.ts
  • code/core/src/manager/components/sidebar/RefBlocks.tsx
📚 Learning: 2025-09-24T13:04:58.631Z
Learnt from: cylewaitforit
Repo: storybookjs/storybook PR: 31965
File: code/lib/eslint-plugin/src/rules/only-csf3.ts:31-33
Timestamp: 2025-09-24T13:04:58.631Z
Learning: The Storybook ESLint plugin supports ESLint v8.57+ where context.sourceCode is already available as a property since it was introduced in v8.40.0, so no fallback to context.getSourceCode() is needed in rules.

Applied to files:

  • code/lib/eslint-plugin/docs/rules/no-stories-of.md
  • docs/writing-docs/code-panel.mdx
  • code/lib/cli-storybook/src/automigrate/fixes/eslint-plugin.ts
  • code/core/src/cli/eslintPlugin.ts
  • MIGRATION.md
  • code/core/src/server-errors.ts
📚 Learning: 2025-09-17T07:32:14.512Z
Learnt from: ndelangen
Repo: storybookjs/storybook PR: 32484
File: code/core/src/core-server/utils/open-in-browser.ts:6-6
Timestamp: 2025-09-17T07:32:14.512Z
Learning: When reviewing async functions that perform side effects like opening browsers, `.catch()` is preferred over `await` if the operation should be non-blocking. This prevents unhandled Promise rejections while keeping the operation as fire-and-forget.

Applied to files:

  • code/lib/eslint-plugin/docs/rules/await-interactions.md
📚 Learning: 2025-09-17T07:31:04.432Z
Learnt from: ndelangen
Repo: storybookjs/storybook PR: 32484
File: code/core/package.json:326-326
Timestamp: 2025-09-17T07:31:04.432Z
Learning: In Storybook's core package, dependencies like `open` are bundled into the final distribution during the build process, so they should remain in devDependencies rather than being moved to dependencies. End users don't need these packages as separate runtime dependencies since they're included in the bundled code.

Applied to files:

  • code/lib/eslint-plugin/docs/rules/no-renderer-packages.md
  • MIGRATION.md
  • docs/configure/telemetry.mdx
  • CONTRIBUTING.md
📚 Learning: 2025-09-18T20:51:06.618Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/viewport/components/Tool.tsx:38-39
Timestamp: 2025-09-18T20:51:06.618Z
Learning: The useGlobals hook from storybook/manager-api returns a tuple where the third element (storyGlobals) is typed as Globals, not Globals | undefined. This means TypeScript guarantees it's always defined, making the `in` operator safe to use without additional null checks.

Applied to files:

  • MIGRATION.md
📚 Learning: 2025-09-18T20:51:06.618Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/viewport/components/Tool.tsx:38-39
Timestamp: 2025-09-18T20:51:06.618Z
Learning: In viewport tool code, when using the `useGlobals` hook from storybook/manager-api, the third returned value `storyGlobals` is guaranteed by TypeScript to be defined (not undefined/null), making the `in` operator safe to use without additional null checks.

Applied to files:

  • MIGRATION.md
🧬 Code graph analysis (7)
code/renderers/server/src/public-types.ts (1)
code/core/src/csf/story.ts (2)
  • ComponentAnnotations (431-518)
  • AnnotatedStoryFn (552-556)
code/renderers/web-components/src/public-types.ts (1)
code/core/src/csf/story.ts (2)
  • ComponentAnnotations (431-518)
  • AnnotatedStoryFn (552-556)
code/core/src/manager/components/panel/Panel.tsx (1)
code/core/src/components/index.ts (2)
  • Link (31-31)
  • Link (87-87)
code/renderers/preact/src/public-types.ts (1)
code/core/src/csf/story.ts (2)
  • ComponentAnnotations (431-518)
  • AnnotatedStoryFn (552-556)
code/renderers/html/src/public-types.ts (1)
code/core/src/csf/story.ts (2)
  • ComponentAnnotations (431-518)
  • AnnotatedStoryFn (552-556)
code/core/src/manager/components/sidebar/RefBlocks.tsx (2)
code/core/src/components/index.ts (2)
  • Link (31-31)
  • Link (87-87)
code/core/src/components/components/tooltip/TooltipLinkList.tsx (1)
  • Link (39-39)
code/core/src/__tests/storybook-error.test.ts (1)
code/core/src/storybook-error.ts (1)
  • appendErrorRef (9-23)
🪛 LanguageTool
docs/addons/addon-types.mdx

[grammar] ~30-~30: Ensure spelling is correct
Context: ...r-ignore-end */} ### Toolbars Toolbar addons allow you to add your own custom tools ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

code/builders/builder-vite/README.md

[grammar] ~138-~138: Ensure spelling is correct
Context: ...e controls panel, and for several other addons. Docgen is supported in Svelte, Vue 3, ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

docs/sharing/design-integrations.mdx

[grammar] ~105-~105: Ensure spelling is correct
Context: ...book-zeplin/) to connect Storybook. The addon displays designs from Zeplin alongside ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

docs/builders/webpack.mdx

[grammar] ~87-~87: Ensure spelling is correct
Context: ...don-webpack5-compiler-swc/) addon. This addon increases ecosystem compatibility with ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~87-~87: Ensure spelling is correct
Context: ...Run the following command to set up the addon automatically: {/* prettier-ignore-sta...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~103-~103: Ensure spelling is correct
Context: ...Run the following command to set up the addon automatically: {/* prettier-ignore-sta...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

code/addons/a11y/README.md

[grammar] ~13-~13: Ensure spelling is correct
Context: ... getting started with the accessibility addon](https://storybook.js.org/docs/writing-tests/accessibility-testing/#accessibility-checks-with-a11y-addon?ref=readme) Learn more about Storybook at [storybook...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

docs/writing-tests/integrations/test-runner.mdx

[grammar] ~561-~561: Ensure spelling is correct
Context: ...ue to how the flag works, as it removes addons that have an impact on performance (e.g...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~571-~571: Ensure spelling is correct
Context: ...@storybook/addon-coverage/) is based on Webpack5 loaders and Vite plugins for code instr...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

code/addons/docs/docs/recipes.md

[style] ~285-~285: This phrase is redundant. Consider using “outside”.
Context: ...arbitrary JSX to your MDX documentation outside of a <Story> block, decorators no longer...

(OUTSIDE_OF)

docs/configure/user-interface/storybook-addons.mdx

[grammar] ~10-~10: Ensure spelling is correct
Context: ...book's core features are implemented as addons, such as [addon-docs](https://storybo...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

code/frameworks/server-webpack5/README.md

[grammar] ~233-~233: Ensure spelling is correct
Context: ...t API to customize as you wish. As some addons assume the story is rendered in JS, the...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

code/core/src/measure/README.md

[grammar] ~15-~15: Ensure spelling is correct
Context: ...-9550-7ae28bc70bf4.gif) ## Usage This addon requires Storybook 6.3 or later. Measur...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

docs/writing-tests/integrations/stories-in-unit-tests.mdx

[grammar] ~70-~70: Ensure spelling is correct
Context: ...ybook/testing-angular/). However, these addons still lack support for the latest stabl...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

docs/essentials/themes.mdx

[style] ~9-~9: This phrase is redundant. Consider using “inside”.
Context: ...een multiple themes for your components inside of the preview in [Storybook](https://stor...

(OUTSIDE_OF)

code/addons/docs/docs/props-tables.md

[style] ~197-~197: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’.
Context: ... | | type.required | Whether or not the property is required ...

(WHETHER)

docs/addons/install-addons.mdx

[grammar] ~8-~8: Ensure spelling is correct
Context: ...Storybook by installing and registering addons. ## Automatic installation Storybook ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

README.md

[grammar] ~136-~136: Ensure spelling is correct
Context: ... eventually deprecate or remove certain addons in favor of new and better tools. If y...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~141-~141: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...eprecated-addon-contexts) to help you. If you're using addon-storyshots, we highl...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

CONTRIBUTING.md

[style] ~164-~164: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...code/ directory. For example, if you want to build the @storybook/react, `@storybo...

(REP_WANT_TO_VB)


[style] ~221-~221: Consider a more expressive alternative.
Context: ...for any unintentional local changes. To do this, you can use the following command...

(DO_ACHIEVE)

🪛 markdownlint-cli2 (0.18.1)
MIGRATION.md

2953-2953: Link text should be descriptive

(MD059, descriptive-link-text)

CONTRIBUTING.md

144-144: Multiple headings with the same content

(MD024, no-duplicate-heading)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: normal
  • GitHub Check: Core Unit Tests, windows-latest

Comment on lines +48 to +50
- [Create a Storybook reproduction](https://storybook.js.org/docs/react/contribute/how-to-reproduce/)
- [How to create a Minimal, Complete, and Verifiable example](https://stackoverflow.com/help/mcve)
- [Contributing to Storybook](https://storybook.js.org/docs/contribute/how-to-contribute)
- [Contributing to Storybook](https://storybook.js.org/docs/contribute/how-to-contribute/)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

LGTM! GitHub template links normalized.

Both contribution documentation links now include trailing slashes. Optionally, you may want to verify these URLs remain valid after the changes.


🏁 Script executed:

#!/bin/bash
# Description: Verify that the updated documentation URLs are accessible and not broken.

# Test both URLs return successful responses
echo "Checking contribute/how-to-reproduce/ URL..."
curl -I -s -o /dev/null -w "%{http_code}" "https://storybook.js.org/docs/react/contribute/how-to-reproduce/"

echo "Checking contribute/how-to-contribute/ URL..."
curl -I -s -o /dev/null -w "%{http_code}" "https://storybook.js.org/docs/contribute/how-to-contribute/"

Length of output: 97



---

🏁 Script executed:

```shell
#!/bin/bash
# Follow redirects to see final destination URLs

echo "Following redirect for contribute/how-to-reproduce/ URL..."
curl -I -s -L -w "Final URL: %{url_effective}\nHTTP Status: %{http_code}\n" "https://storybook.js.org/docs/react/contribute/how-to-reproduce/" 2>/dev/null | tail -2

echo ""
echo "Following redirect for contribute/how-to-contribute/ URL..."
curl -I -s -L -w "Final URL: %{url_effective}\nHTTP Status: %{http_code}\n" "https://storybook.js.org/docs/contribute/how-to-contribute/" 2>/dev/null | tail -2

echo ""
echo "Testing if URLs without trailing slashes return different response..."
curl -I -s -o /dev/null -w "Without slash (how-to-reproduce): %{http_code}\n" "https://storybook.js.org/docs/react/contribute/how-to-reproduce"
curl -I -s -o /dev/null -w "Without slash (how-to-contribute): %{http_code}\n" "https://storybook.js.org/docs/contribute/how-to-contribute"

Length of output: 422


Fix second documentation URL redirect issue.

The first URL (contribute/how-to-reproduce/) correctly resolves after redirect. However, the second URL has a problem:

  • https://storybook.js.org/docs/contribute/how-to-contribute/ redirects to https://storybook.js.org/docs/contribute (parent directory)

This suggests the second URL path is incorrect or outdated. The URL should be updated to the correct documentation page that actually exists, or the contributing documentation should be verified to determine the correct endpoint.

🤖 Prompt for AI Agents
.github.amrom.workers.devments/invalid-link.md around lines 48 to 50: the second link to
Storybook contributing currently redirects to the parent directory because the
path is outdated; open the Storybook docs site to find the correct
"Contributing" page (or the current canonical URL for contributing guidelines)
and replace the existing URL with that exact, non-redirecting URL (or remove the
link if the page no longer exists), ensuring the link points directly to the
live documentation endpoint.

const retryingFetch = retry(fetch);

const URL = process.env.STORYBOOK_TELEMETRY_URL || 'https://storybook.js.org/event-log';
const URL = process.env.STORYBOOK_TELEMETRY_URL || 'https://storybook.js.org/event-log/';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify the telemetry endpoint accepts requests with a trailing slash.

This change modifies a production API endpoint used for POST requests. Some servers redirect URLs with trailing slashes to their non-trailing counterparts (or vice versa), and POST requests may not follow redirects properly, potentially causing telemetry data loss.

Please verify this endpoint works correctly with the trailing slash:


🏁 Script executed:

#!/bin/bash
# Test the telemetry endpoint with trailing slash
# Note: Using a minimal test payload

echo "Testing endpoint WITH trailing slash..."
curl -i -X POST https://storybook.js.org/event-log/ \
  -H "Content-Type: application/json" \
  -d '{"test": "endpoint_check"}' \
  -w "\nHTTP Status: %{http_code}\n"

echo -e "\n---\n"

echo "Testing endpoint WITHOUT trailing slash..."
curl -i -X POST https://storybook.js.org/event-log \
  -H "Content-Type: application/json" \
  -d '{"test": "endpoint_check"}' \
  -w "\nHTTP Status: %{http_code}\n"

Length of output: 2117


Remove the trailing slash from the telemetry endpoint URL.

The verification reveals that the endpoint with trailing slash (https://storybook.js.org/event-log/) returns HTTP 308 (Permanent Redirect) to /event-log (without trailing slash). While HTTP 308 preserves the POST method, redirects for telemetry POST requests are undesirable and can cause data loss if the redirect target fails or behaves unexpectedly. The endpoint should be:

const URL = process.env.STORYBOOK_TELEMETRY_URL || 'https://storybook.js.org/event-log';
🤖 Prompt for AI Agents
In code/core/src/telemetry/telemetry.ts around line 21, the telemetry endpoint
constant includes a trailing slash which triggers an HTTP 308 redirect; change
the default URL to remove the trailing slash so the constant becomes
'https://storybook.js.org/event-log' (or ensure process.env value doesn't
include a trailing slash) to avoid redirecting POST requests.

const ADDON_INSTALLATION_INSTRUCTIONS = {
'@storybook/addon-vitest':
'https://storybook.js.org/docs/writing-tests/integrations/vitest-addon#manual-setup',
'https://storybook.js.org/docs/writing-tests/integrations/vitest-addon/#manual-setup',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify the updated URL resolves correctly.

The trailing slash before the anchor (/#manual-setup) is a valid URL pattern and aligns with the PR's normalization objective. However, since this URL is shown to users when addon configuration fails, please confirm that the updated URL resolves without redirects or 404 errors.

Consider running a script to validate all updated URLs in this PR:


🏁 Script executed:

#!/bin/bash
# Description: Validate that the vitest addon manual setup URL resolves correctly

# Test the new URL
curl -I -L "https://storybook.js.org/docs/writing-tests/integrations/vitest-addon/#manual-setup" 2>&1 | grep -E "HTTP|Location"

# Also test without the trailing slash to see if there's a redirect
echo "---"
echo "Testing original URL for comparison:"
curl -I -L "https://storybook.js.org/docs/writing-tests/integrations/vitest-addon#manual-setup" 2>&1 | grep -E "HTTP|Location"

Length of output: 78


Revert the URL to the original format without the trailing slash before the anchor.

The verification reveals a critical issue: the updated URL with the trailing slash before the anchor (/#manual-setup) triggers a 308 redirect before resolving, whereas the original URL without the trailing slash (#manual-setup) resolves directly without any redirect. Since this is a user-facing documentation link shown when addon configuration fails, the canonical version should be used to avoid unnecessary network overhead.

The PR's trailing slash normalization pattern is not appropriate for this URL. Update line 12 to use the original URL format:

'https://storybook.js.org/docs/writing-tests/integrations/vitest-addon#manual-setup',
🤖 Prompt for AI Agents
In code/lib/create-storybook/src/commands/AddonConfigurationCommand.ts around
line 12, the documentation URL was changed to include a trailing slash before
the anchor which causes a 308 redirect; revert that change so the link uses the
canonical form without the slash. Replace the current URL string with
'https://storybook.js.org/docs/writing-tests/integrations/vitest-addon#manual-setup'
(remove the slash before the anchor) so the link resolves directly without
redirect.

Comment on lines +564 to +569
width: 100%;
min-height: 40;
display: flex;
align-items: center;
gap: 6px;
padding-inline: 6px;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix CSS unit in example (min-height should include px).

Use a valid unit to avoid copy/paste errors by readers.

 width: 100%;
-min-height: 40;
+min-height: 40px;
 display: flex;
 align-items: center;
 gap: 6px;
 padding-inline: 6px;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
width: 100%;
min-height: 40;
display: flex;
align-items: center;
gap: 6px;
padding-inline: 6px;
width: 100%;
min-height: 40px;
display: flex;
align-items: center;
gap: 6px;
padding-inline: 6px;
🤖 Prompt for AI Agents
In MIGRATION.md around lines 564 to 569, the CSS example uses "min-height: 40;"
which is missing a unit; update that declaration to include a valid CSS unit
(e.g., "min-height: 40px;") so the example is correct for copy/paste and renders
as intended.

Comment on lines +647 to 661

These prop were not used inside Storybook and have been removed.

#### Removed: hasChrome

The `hasChrome` prop was removed because it should be handled by the tooltip being shown instead. Popover and Tooltip both have a `hasChrome` prop. TooltipNote never needs this prop and does not have it.

#### Removed: closeOnTriggerHidden, followCursor, closeOnOutsideClick

The `closeOnTriggerHidden`, `followCursor` and `closeOnOutsideClick` prop has been removed. WithTooltip will now authoritatively decide when and where to show or hide its tooltip. It will always close on clicks outside the tooltip, because tooltips should never be modal.

#### Removed: interactive

Thed `interactive` prop has been removed as it does not align with our vision for accessible components with a well-defined role. Use PopoverProvider instead of WithTooltip to show interactive overlays.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Typos and pluralization in WithTooltip notes.

Tighten grammar and fix a stray typo.

-These prop were not used inside Storybook and have been removed.
+These props were not used inside Storybook and have been removed.

-The `closeOnTriggerHidden`, `followCursor` and `closeOnOutsideClick` prop has been removed.
+The `closeOnTriggerHidden`, `followCursor`, and `closeOnOutsideClick` props have been removed.

-Thed `interactive` prop has been removed as it does not align with our vision for accessible components with a well-defined role.
+The `interactive` prop has been removed as it does not align with our vision for accessible components with a well‑defined role.
🤖 Prompt for AI Agents
In MIGRATION.md around lines 647 to 661, fix typos and pluralization: change
"These prop were not used inside Storybook and have been removed." to "These
props were not used inside Storybook and have been removed.", change "The
`closeOnTriggerHidden`, `followCursor` and `closeOnOutsideClick` prop has been
removed." to plural form "The `closeOnTriggerHidden`, `followCursor`, and
`closeOnOutsideClick` props have been removed.", and correct "Thed `interactive`
prop" to "The `interactive` prop"; also ensure punctuation/spacing around the
listed props is consistent (commas and Oxford comma) and re-run a quick
proofread to catch any other minor grammar issues in that block.

Comment on lines +819 to 821
During development of Storybook [Tags](https://storybook.js.org/docs/writing-stories/tags/), we created `dev-only`, `docs-only`, and `test-only` built-in tags. These tags were never documented and superseded by the currently-documented `dev`, `autodocs`, and `test` tags which provide more precise control. The outdated `x-only` tags are removed in 10.0.
During development of Storybook [Tags](https://storybook.js.org/docs/writing-stories/tags/), we created `dev-only`, `docs-only`, and `test-only` built-in tags. These tags were never documented and superceded by the currently-documented `dev`, `autodocs`, and `test` tags which provide more precise control. The outdated `x-only` tags are removed in 10.0.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove duplicated sentence and correct spelling (“superseded”).

Two near-identical lines are present; keep one and use the correct “superseded”.

-During development of Storybook [Tags](https://storybook.js.org/docs/writing-stories/tags/), we created `dev-only`, `docs-only`, and `test-only` built-in tags. These tags were never documented and superseded by the currently-documented `dev`, `autodocs`, and `test` tags which provide more precise control. The outdated `x-only` tags are removed in 10.0.
-During development of Storybook [Tags](https://storybook.js.org/docs/writing-stories/tags/), we created `dev-only`, `docs-only`, and `test-only` built-in tags. These tags were never documented and superceded by the currently-documented `dev`, `autodocs`, and `test` tags which provide more precise control. The outdated `x-only` tags are removed in 10.0.
+During development of Storybook [Tags](https://storybook.js.org/docs/writing-stories/tags/), we created `dev-only`, `docs-only`, and `test-only` built‑in tags. These tags were never documented and were superseded by the currently documented `dev`, `autodocs`, and `test` tags, which provide more precise control. The outdated `x-only` tags are removed in 10.0.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
During development of Storybook [Tags](https://storybook.js.org/docs/writing-stories/tags/), we created `dev-only`, `docs-only`, and `test-only` built-in tags. These tags were never documented and superseded by the currently-documented `dev`, `autodocs`, and `test` tags which provide more precise control. The outdated `x-only` tags are removed in 10.0.
During development of Storybook [Tags](https://storybook.js.org/docs/writing-stories/tags/), we created `dev-only`, `docs-only`, and `test-only` built-in tags. These tags were never documented and superceded by the currently-documented `dev`, `autodocs`, and `test` tags which provide more precise control. The outdated `x-only` tags are removed in 10.0.
During development of Storybook [Tags](https://storybook.js.org/docs/writing-stories/tags/), we created `dev-only`, `docs-only`, and `test-only` built‑in tags. These tags were never documented and were superseded by the currently documented `dev`, `autodocs`, and `test` tags, which provide more precise control. The outdated `x-only` tags are removed in 10.0.
🤖 Prompt for AI Agents
In MIGRATION.md around lines 819 to 821, there are two near-identical sentences;
remove the duplicate so only one remains and correct the misspelling
"superceded" to "superseded" (ensure the retained sentence reads: "During
development of Storybook Tags, we created `dev-only`, `docs-only`, and
`test-only` built-in tags. These tags were never documented and superseded by
the currently-documented `dev`, `autodocs`, and `test` tags which provide more
precise control. The outdated `x-only` tags are removed in 10.0.").

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants