-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
Docs: Update all* links to SB site to have trailing slash #33127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: next
Are you sure you want to change the base?
Conversation
* It should be all, but in reality the various regexes I used could have left some behind
|
View your CI Pipeline Execution ↗ for commit 9244ac1
☁️ Nx Cloud last updated this comment at |
📝 WalkthroughWalkthroughThis 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
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:
Areas requiring extra attention:
Possibly related PRs
✨ Finishing touches
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.
Example instruction:
Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later. Comment |
There was a problem hiding this 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 inreactDocgenexampleThe 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 linkThe updated community link
https://storybook.js.org/community/?ref=ui#supportlooks correct and keeps the query/hash intact.You may also want to normalize the preceding “Docs” link to
https://storybook.js.org/?ref=uifor 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.requiredcurrently 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 patternYou’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
📒 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.tsxtest-storybooks/ember-cli/app/templates/components/welcome-page.hbscode/frameworks/react-webpack5/template/cli/js/Page.jsxdocs/get-started/whats-a-story.mdxcode/frameworks/html-vite/README.mddocs/releases/upgrading.mdxcode/core/src/actions/README.mdcode/frameworks/sveltekit/template/cli/js/Page.sveltecode/frameworks/react-native-web-vite/README.mdcode/addons/docs/docs/docspage.mdcode/core/src/preview-errors.tsdocs/writing-stories/index.mdxcode/core/src/client-logger/README.mdcode/core/src/test/README.mdcode/core/src/node-logger/README.mdcode/frameworks/vue3-vite/template/cli/ts/Page.vuedocs/get-started/frameworks/nextjs-vite.mdxcode/frameworks/nextjs/template/cli/ts/Page.tsxcode/frameworks/preact-vite/template/cli/Page.jsxdocs/get-started/conclusion.mdxcode/builders/builder-vite/README.mdcode/renderers/svelte/template/cli/ts/Page.sveltedocs/writing-tests/index.mdxcode/frameworks/html-vite/template/cli/js/Page.jscode/frameworks/nextjs-vite/template/cli/ts/Page.tsxcode/frameworks/angular/template/cli/page.component.tscode/frameworks/preact-vite/README.mdcode/frameworks/nextjs/template/cli/js/Page.jsx.github.amrom.workers.devments/good-first-issue.mdcode/addons/docs/src/blocks/components/Story.tsxdocs/addons/index.mdxcode/core/src/manager/settings/About.tsxcode/addons/links/README.mdcode/lib/cli-storybook/src/codemod/csf-factories.tscode/addons/docs/src/blocks/components/ArgsTable/ArgControl.tsxcode/lib/eslint-plugin/docs/rules/no-stories-of.mdcode/renderers/react/template/cli/ts/Page.tsxcode/core/src/types/modules/addons.tsdocs/builders/webpack.mdxcode/lib/cli-storybook/src/automigrate/fixes/wrap-getAbsolutePath.tscode/core/src/manager/components/panel/Panel.tsxcode/addons/docs/docs/multiframework.mdtest-storybooks/server-kitchen-sink/views/welcome/welcome.pugdocs/writing-docs/code-panel.mdxcode/core/src/channels/README.mdcode/frameworks/react-vite/README.mddocs/get-started/install.mdxdocs/get-started/frameworks/react-native-web-vite.mdxdocs/get-started/frameworks/sveltekit.mdxcode/lib/cli-storybook/src/automigrate/fixes/addon-a11y-addon-test.tscode/renderers/html/template/cli/ts/Page.tscode/addons/a11y/README.mdcode/frameworks/nextjs-vite/README.mdcode/frameworks/react-vite/template/cli/js/Page.jsxcode/lib/eslint-plugin/docs/rules/await-interactions.mdcode/renderers/preact/template/cli/Page.jsxcode/addons/docs/src/blocks/components/ArgsTable/Empty.tsxcode/core/src/manager/settings/SettingsFooter.tsxcode/addons/vitest/src/components/GlobalErrorModal.stories.tsxcode/addons/vitest/src/preset.tscode/lib/eslint-plugin/docs/rules/csf-component.mdtest-storybooks/yarn-pnp/src/stories/Page.vuecode/frameworks/react-webpack5/README.mdcode/addons/docs/docs/theming.mdcode/frameworks/sveltekit/template/cli/ts/Page.sveltedocs/writing-tests/integrations/test-runner.mdxcode/renderers/vue3/src/public-types.tsdocs/configure/user-interface/storybook-addons.mdxcode/frameworks/sveltekit/README.mdcode/renderers/svelte/template/cli/js/Page.sveltecode/frameworks/web-components-vite/README.mdcode/core/src/manager/components/mobile/about/MobileAbout.tsxcode/frameworks/nextjs-vite/template/cli/js/Page.jsxcode/addons/docs/README.mdcode/lib/cli-storybook/src/automigrate/fixes/eslint-plugin.tscode/frameworks/html-vite/template/cli/ts/Page.tscode/core/src/preview-api/README-addons.mdcode/frameworks/vue3-vite/README.mdcode/lib/eslint-plugin/docs/rules/no-renderer-packages.mdcode/frameworks/nextjs/README.mdcode/renderers/react/src/public-types.tscode/renderers/web-components/template/cli/ts/Page.tscode/renderers/web-components/template/cli/js/Page.jscode/renderers/vue3/template/cli/ts/Page.vuecode/frameworks/server-webpack5/README.md.github.amrom.workers.devments/invalid-link.mdcode/frameworks/react-vite/template/cli/ts/Page.tsxdocs/get-started/why-storybook.mdxcode/frameworks/svelte-vite/template/cli/ts/Page.sveltecode/core/src/manager/components/sidebar/RefIndicator.tsxcode/frameworks/web-components-vite/template/cli/js/Page.jsMIGRATION.mddocs/writing-tests/integrations/stories-in-unit-tests.mdxdocs/essentials/themes.mdxcode/lib/cli-storybook/src/automigrate/fixes/nextjs-to-nextjs-vite.tscode/lib/eslint-plugin/docs/rules/use-storybook-expect.mdcode/frameworks/vue3-vite/template/cli/js/Page.vuecode/renderers/react/template/cli/js/Page.jsxcode/core/src/csf/story.tscode/renderers/html/template/cli/js/Page.jscode/core/src/core-server/utils/StoryIndexGenerator.tscode/addons/docs/docs/props-tables.mddocs/configure/telemetry.mdxcode/core/src/manager/README.mdcode/core/assets/server/base-preview-body.htmlcode/frameworks/web-components-vite/template/cli/ts/Page.tscode/renderers/vue3/template/cli/js/Page.vuecode/lib/cli-storybook/src/automigrate/fixes/fix-faux-esm-require.tscode/lib/cli-storybook/src/autoblock/block-major-version.tscode/renderers/web-components/src/docs/__testfixtures__/lit-html-welcome/input.jscode/core/src/viewport/README.mdcode/frameworks/ember/README.mddocs/get-started/frameworks/svelte-vite.mdxcode/lib/eslint-plugin/docs/rules/use-storybook-testing-library.mddocs/addons/install-addons.mdxcode/frameworks/svelte-vite/template/cli/js/Page.sveltecode/core/src/outline/README.mdcode/presets/server-webpack/README.mdcode/core/src/manager/components/sidebar/RefBlocks.tsxdocs/get-started/frameworks/nextjs.mdxREADME.mdCONTRIBUTING.mdcode/core/src/server-errors.tscode/frameworks/svelte-vite/README.mdcode/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.tsxtest-storybooks/ember-cli/app/templates/components/welcome-page.hbscode/frameworks/react-webpack5/template/cli/js/Page.jsxcode/addons/docs/src/blocks/blocks/Canvas.stories.tsxcode/frameworks/sveltekit/template/cli/js/Page.sveltecode/addons/docs/docs/docspage.mddocs/writing-stories/index.mdxcode/core/src/client-logger/README.mdcode/frameworks/vue3-vite/template/cli/ts/Page.vuecode/frameworks/nextjs/template/cli/ts/Page.tsxcode/frameworks/preact-vite/template/cli/Page.jsxcode/renderers/svelte/template/cli/ts/Page.sveltecode/frameworks/html-vite/template/cli/js/Page.jscode/frameworks/nextjs-vite/template/cli/ts/Page.tsxcode/frameworks/angular/template/cli/page.component.tscode/frameworks/nextjs/template/cli/js/Page.jsxcode/addons/docs/src/blocks/components/Story.tsxcode/core/src/manager/settings/About.tsxcode/lib/cli-storybook/src/codemod/csf-factories.tscode/addons/docs/src/blocks/components/ArgsTable/ArgControl.tsxcode/lib/eslint-plugin/docs/rules/no-stories-of.mdcode/renderers/react/template/cli/ts/Page.tsxcode/core/src/types/modules/addons.tsdocs/builders/webpack.mdxcode/core/src/manager/components/panel/Panel.tsxdocs/writing-docs/code-panel.mdxcode/core/src/channels/README.mddocs/get-started/install.mdxdocs/get-started/frameworks/react-native-web-vite.mdxdocs/get-started/frameworks/sveltekit.mdxcode/renderers/html/template/cli/ts/Page.tscode/frameworks/angular/template/stories/others/ngx-translate/README.mdxcode/frameworks/react-vite/template/cli/js/Page.jsxcode/renderers/preact/template/cli/Page.jsxcode/addons/docs/src/blocks/components/ArgsTable/Empty.tsxcode/core/src/manager/settings/SettingsFooter.tsxtest-storybooks/yarn-pnp/src/stories/Page.vuecode/frameworks/react-webpack5/README.mdcode/frameworks/sveltekit/template/cli/ts/Page.sveltecode/renderers/svelte/template/cli/js/Page.sveltecode/core/src/manager/components/mobile/about/MobileAbout.tsxcode/frameworks/nextjs-vite/template/cli/js/Page.jsxcode/addons/docs/README.mdcode/frameworks/html-vite/template/cli/ts/Page.tscode/core/src/preview-api/README-addons.mdcode/lib/eslint-plugin/docs/rules/no-renderer-packages.mdcode/renderers/react/src/public-types.tscode/renderers/web-components/template/cli/ts/Page.tscode/addons/docs/src/blocks/examples/CanvasParameters.stories.tsxcode/renderers/web-components/template/cli/js/Page.jscode/renderers/vue3/template/cli/ts/Page.vue.github.amrom.workers.devments/invalid-link.mdcode/frameworks/react-vite/template/cli/ts/Page.tsxdocs/get-started/why-storybook.mdxcode/frameworks/svelte-vite/template/cli/ts/Page.sveltecode/core/src/manager/components/sidebar/RefIndicator.tsxcode/frameworks/web-components-vite/template/cli/js/Page.jsMIGRATION.mddocs/writing-tests/integrations/stories-in-unit-tests.mdxdocs/essentials/themes.mdxcode/lib/eslint-plugin/docs/rules/use-storybook-expect.mdcode/frameworks/vue3-vite/template/cli/js/Page.vuecode/renderers/react/template/cli/js/Page.jsxcode/core/src/csf/story.tscode/renderers/html/template/cli/js/Page.jscode/core/src/core-server/utils/StoryIndexGenerator.tsdocs/configure/telemetry.mdxcode/core/src/manager/README.mdcode/frameworks/web-components-vite/template/cli/ts/Page.tscode/renderers/vue3/template/cli/js/Page.vuecode/lib/cli-storybook/src/autoblock/block-major-version.tscode/renderers/web-components/src/docs/__testfixtures__/lit-html-welcome/input.jscode/core/src/viewport/README.mdcode/frameworks/ember/README.mddocs/get-started/frameworks/svelte-vite.mdxcode/lib/eslint-plugin/docs/rules/use-storybook-testing-library.mdcode/frameworks/svelte-vite/template/cli/js/Page.sveltecode/core/src/outline/README.mdcode/core/src/manager/components/sidebar/RefBlocks.tsxREADME.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.jsxdocs/releases/upgrading.mdxdocs/writing-tests/index.mdxcode/frameworks/nextjs/template/cli/js/Page.jsxcode/lib/cli-storybook/src/codemod/csf-factories.tscode/renderers/react/template/cli/ts/Page.tsxcode/core/src/types/modules/addons.tscode/core/src/manager/components/panel/Panel.tsxtest-storybooks/server-kitchen-sink/views/welcome/welcome.pugcode/core/src/channels/README.mdcode/lib/cli-storybook/src/automigrate/fixes/addon-a11y-addon-test.tscode/addons/a11y/README.mdcode/frameworks/react-vite/template/cli/js/Page.jsxcode/renderers/preact/template/cli/Page.jsxcode/addons/vitest/src/components/GlobalErrorModal.stories.tsxtest-storybooks/yarn-pnp/src/stories/Page.vuecode/addons/docs/docs/theming.mddocs/configure/user-interface/storybook-addons.mdxcode/lib/eslint-plugin/docs/rules/no-renderer-packages.md.github.amrom.workers.devments/invalid-link.mddocs/get-started/why-storybook.mdxcode/frameworks/web-components-vite/template/cli/js/Page.jsMIGRATION.mdcode/frameworks/web-components-vite/template/cli/ts/Page.tscode/lib/cli-storybook/src/automigrate/fixes/fix-faux-esm-require.tscode/renderers/web-components/src/docs/__testfixtures__/lit-html-welcome/input.jscode/core/src/manager/components/sidebar/RefBlocks.tsxdocs/get-started/frameworks/nextjs.mdxREADME.mdcode/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.mdxcode/builders/builder-vite/README.mdcode/lib/eslint-plugin/docs/rules/no-renderer-packages.mdMIGRATION.mdcode/core/src/manager/README.mdCONTRIBUTING.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.mdxMIGRATION.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.mdcode/core/src/channels/README.mdcode/lib/eslint-plugin/docs/rules/no-renderer-packages.mddocs/get-started/why-storybook.mdxMIGRATION.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.mdxcode/core/src/manager/settings/About.tsxcode/core/src/types/modules/addons.tscode/core/src/manager/components/panel/Panel.tsxcode/lib/cli-storybook/src/automigrate/fixes/addon-a11y-addon-test.tscode/addons/a11y/README.mdcode/addons/docs/src/blocks/components/ArgsTable/Empty.tsxcode/frameworks/web-components-vite/template/cli/js/Page.jsMIGRATION.mdcode/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.mdxcode/core/src/types/modules/addons.tscode/frameworks/angular/template/stories/others/ngx-translate/README.mdxcode/addons/vitest/src/components/TestProviderRender.stories.tsxdocs/get-started/why-storybook.mdxMIGRATION.mddocs/essentials/themes.mdxcode/core/src/csf/story.tscode/core/src/core-server/utils/StoryIndexGenerator.tscode/core/src/manager/README.mdcode/core/assets/server/base-preview-body.htmlcode/frameworks/web-components-vite/template/cli/ts/Page.tscode/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.mddocs/writing-docs/code-panel.mdxcode/lib/cli-storybook/src/automigrate/fixes/eslint-plugin.tscode/core/src/cli/eslintPlugin.tsMIGRATION.mdcode/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.mdMIGRATION.mddocs/configure/telemetry.mdxCONTRIBUTING.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
| - [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/) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 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 tohttps://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/'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 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', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 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.
| width: 100%; | ||
| min-height: 40; | ||
| display: flex; | ||
| align-items: center; | ||
| gap: 6px; | ||
| padding-inline: 6px; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
| 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.
|
|
||
| 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. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
| 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. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
| 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.").
What I did
Update all* links to SB site to have trailing slash
Checklist for Contributors
Testing
Manual testing
Documentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal,ci:mergedorci:dailyGH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli-storybook/src/sandbox-templates.tsMake 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
✏️ Tip: You can customize this high-level summary in your review settings.