diff --git a/code/addons/viewport/src/defaults.ts b/code/addons/viewport/src/defaults.ts index a402f188bad5..fdc6246eb897 100644 --- a/code/addons/viewport/src/defaults.ts +++ b/code/addons/viewport/src/defaults.ts @@ -89,6 +89,62 @@ export const INITIAL_VIEWPORTS: ViewportMap = { }, type: 'mobile', }, + iphoneSE3: { + name: 'iPhone SE 3rd generation', + styles: { + height: '667px', + width: '375px', + }, + type: 'mobile', + }, + iphone13: { + name: 'iPhone 13', + styles: { + height: '844px', + width: '390px', + }, + type: 'mobile', + }, + iphone13pro: { + name: 'iPhone 13 Pro', + styles: { + height: '844px', + width: '390px', + }, + type: 'mobile', + }, + iphone13promax: { + name: 'iPhone 13 Pro Max', + styles: { + height: '926px', + width: '428px', + }, + type: 'mobile', + }, + iphone14: { + name: 'iPhone 14', + styles: { + height: '844px', + width: '390px', + }, + type: 'mobile', + }, + iphone14pro: { + name: 'iPhone 14 Pro', + styles: { + height: '852px', + width: '393px', + }, + type: 'mobile', + }, + iphone14promax: { + name: 'iPhone 14 Pro Max', + styles: { + height: '932px', + width: '430px', + }, + type: 'mobile', + }, ipad: { name: 'iPad', styles: { @@ -105,6 +161,14 @@ export const INITIAL_VIEWPORTS: ViewportMap = { }, type: 'tablet', }, + ipad11p: { + name: 'iPad Pro 11-in', + styles: { + height: '1194px', + width: '834px', + }, + type: 'tablet', + }, ipad12p: { name: 'iPad Pro 12.9-in', styles: { diff --git a/code/builders/builder-vite/src/transform-iframe-html.ts b/code/builders/builder-vite/src/transform-iframe-html.ts index d3437d5c1460..620cbed3da0a 100644 --- a/code/builders/builder-vite/src/transform-iframe-html.ts +++ b/code/builders/builder-vite/src/transform-iframe-html.ts @@ -22,7 +22,7 @@ export async function transformIframeHtml(html: string, options: Options) { })); const otherGlobals = { - ...(build?.test?.emptyBlocks ? { __STORYBOOK_BLOCKS_EMPTY_MODULE__: {} } : {}), + ...(build?.test?.disableBlocks ? { __STORYBOOK_BLOCKS_EMPTY_MODULE__: {} } : {}), }; return html diff --git a/code/builders/builder-vite/src/vite-config.ts b/code/builders/builder-vite/src/vite-config.ts index 5274248afa80..6beb0ec73aba 100644 --- a/code/builders/builder-vite/src/vite-config.ts +++ b/code/builders/builder-vite/src/vite-config.ts @@ -79,7 +79,7 @@ export async function pluginConfig(options: Options) { const frameworkName = await getFrameworkName(options); const build = await options.presets.apply('build'); - if (build?.test?.emptyBlocks) { + if (build?.test?.disableBlocks) { globals['@storybook/blocks'] = '__STORYBOOK_BLOCKS_EMPTY_MODULE__'; } diff --git a/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts b/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts index da62a70ed652..10704bc25d93 100644 --- a/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts +++ b/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts @@ -220,7 +220,7 @@ export default async ( `); } - if (build?.test?.emptyBlocks) { + if (build?.test?.disableBlocks) { globals['@storybook/blocks'] = '__STORYBOOK_BLOCKS_EMPTY_MODULE__'; } @@ -276,7 +276,7 @@ export default async ( importPathMatcher: specifier.importPathMatcher.source, })), DOCS_OPTIONS: docsOptions, - ...(build?.test?.emptyBlocks ? { __STORYBOOK_BLOCKS_EMPTY_MODULE__: {} } : {}), + ...(build?.test?.disableBlocks ? { __STORYBOOK_BLOCKS_EMPTY_MODULE__: {} } : {}), }, headHtmlSnippet, bodyHtmlSnippet, @@ -323,7 +323,7 @@ export default async ( fullySpecified: false, }, }, - builderOptions.useSWC || options.build?.test?.optimizeCompilation + builderOptions.useSWC || options.build?.test?.fastCompilation ? await createSWCLoader(Object.keys(virtualModuleMapping), options) : createBabelLoader(babelOptions, typescriptOptions, Object.keys(virtualModuleMapping)), { @@ -362,7 +362,7 @@ export default async ( ? { minimize: true, // eslint-disable-next-line no-nested-ternary - minimizer: options.build?.test?.optimizeCompilation + minimizer: options.build?.test?.fastCompilation ? [ new TerserWebpackPlugin({ parallel: true, diff --git a/code/lib/core-common/src/presets.ts b/code/lib/core-common/src/presets.ts index 3a3a2db0ce97..8cc613a33b3f 100644 --- a/code/lib/core-common/src/presets.ts +++ b/code/lib/core-common/src/presets.ts @@ -255,15 +255,13 @@ export async function loadPreset( if ( storybookOptions.isCritical !== true && - storybookOptions.build?.test?.removeNonFastAddons + (storybookOptions.build?.test?.disabledAddons?.length || 0) > 0 ) { filter = (i: PresetConfig) => { // @ts-expect-error (Converted from ts-ignore) const name = i.name ? i.name : i; - return ( - !name.includes('@storybook/addon-docs') && !name.includes('@storybook/addon-coverage') - ); + return !!storybookOptions.build?.test?.disabledAddons?.find((n) => name.includes(n)); }; } diff --git a/code/lib/core-server/src/presets/common-override-preset.ts b/code/lib/core-server/src/presets/common-override-preset.ts index 916266e65bff..bffb3f3f0d26 100644 --- a/code/lib/core-server/src/presets/common-override-preset.ts +++ b/code/lib/core-server/src/presets/common-override-preset.ts @@ -1,4 +1,4 @@ -import type { PresetProperty, StorybookConfig } from '@storybook/types'; +import type { Options, PresetProperty, StorybookConfig, TestBuildFlags } from '@storybook/types'; import { normalizeStories, commonGlobOptions } from '@storybook/core-common'; import { isAbsolute, join } from 'path'; import slash from 'slash'; @@ -18,7 +18,7 @@ export const framework: PresetProperty<'framework', StorybookConfig> = async (co }; export const stories: PresetProperty<'stories', StorybookConfig> = async (entries, options) => { - if (options?.build?.test?.removeMDXEntries) { + if (options?.build?.test?.disableMDXEntries) { const out = ( await Promise.all( normalizeStories(entries, { @@ -49,8 +49,29 @@ export const typescript: PresetProperty<'typescript', StorybookConfig> = async ( }; export const docs: PresetProperty<'docs', StorybookConfig> = async (input, options) => { - if (options?.build?.test?.removeAutoDocs) { + if (options?.build?.test?.disableAutoDocs) { return {}; } return input; }; + +const createTestBuildFeatures = (value: boolean): Required => ({ + disableBlocks: value, + disabledAddons: value ? ['@storybook/addon-docs', '@storybook/addon-coverage'] : [], + disableMDXEntries: value, + disableAutoDocs: value, + disableDocgen: value, + disableSourcemaps: value, + disableTreeShaking: value, + fastCompilation: value, +}); + +export const build = async (value: StorybookConfig['build'], options: Options) => { + return { + ...value, + test: { + ...createTestBuildFeatures(!!options.test), + ...value?.test, + }, + }; +}; diff --git a/code/lib/core-server/src/presets/common-preset.ts b/code/lib/core-server/src/presets/common-preset.ts index e953a5cd3dc7..6854a8f48682 100644 --- a/code/lib/core-server/src/presets/common-preset.ts +++ b/code/lib/core-server/src/presets/common-preset.ts @@ -11,7 +11,6 @@ import { import type { CLIOptions, CoreConfig, - TestBuildFlags, Indexer, Options, PresetPropertyFn, @@ -186,17 +185,6 @@ export const previewAnnotations = async (base: any, options: Options) => { return [...config, ...base]; }; -const testBuildFeatures = (value: boolean): Required => ({ - emptyBlocks: value, - removeNonFastAddons: value, - removeMDXEntries: value, - removeAutoDocs: value, - disableDocgen: value, - disableSourcemaps: value, - disableTreeShaking: value, - optimizeCompilation: value, -}); - export const features = async ( existing: StorybookConfig['features'] ): Promise => ({ @@ -208,16 +196,6 @@ export const features = async ( legacyDecoratorFileOrder: false, }); -export const build = async (value: StorybookConfig['build'], options: Options) => { - return { - ...value, - test: { - ...testBuildFeatures(!!options.test), - ...value?.test, - }, - }; -}; - export const csfIndexer: Indexer = { test: /(stories|story)\.(m?js|ts)x?$/, createIndex: async (fileName, options) => (await readCsf(fileName, options)).parse().indexInputs, diff --git a/code/lib/core-server/src/utils/StoryIndexGenerator.ts b/code/lib/core-server/src/utils/StoryIndexGenerator.ts index 2ecd774528b7..f77d11c8ef3c 100644 --- a/code/lib/core-server/src/utils/StoryIndexGenerator.ts +++ b/code/lib/core-server/src/utils/StoryIndexGenerator.ts @@ -337,7 +337,7 @@ export class StoryIndexGenerator { const createDocEntry = autodocs === true || (autodocs === 'tag' && hasAutodocsTag) || isStoriesMdx; - if (createDocEntry && this.options.build?.test?.removeAutoDocs !== true) { + if (createDocEntry && this.options.build?.test?.disableAutoDocs !== true) { const name = this.options.docs.defaultName ?? 'Docs'; const { metaId } = indexInputs[0]; const { title } = entries[0]; diff --git a/code/lib/types/src/modules/core-common.ts b/code/lib/types/src/modules/core-common.ts index 47c7d88cba8b..584618e337b3 100644 --- a/code/lib/types/src/modules/core-common.ts +++ b/code/lib/types/src/modules/core-common.ts @@ -266,19 +266,19 @@ export interface TestBuildFlags { /** * The package @storybook/blocks will be excluded from the bundle, even when imported in e.g. the preview. */ - emptyBlocks?: boolean; + disableBlocks?: boolean; /** - * Disable all addons + * Disable specific addons */ - removeNonFastAddons?: boolean; + disabledAddons?: string[]; /** * Filter out .mdx stories entries */ - removeMDXEntries?: boolean; + disableMDXEntries?: boolean; /** * Override autodocs to be disabled */ - removeAutoDocs?: boolean; + disableAutoDocs?: boolean; /** * Override docgen to be disabled. */ @@ -292,9 +292,9 @@ export interface TestBuildFlags { */ disableTreeShaking?: boolean; /** - * Compile/Optimize with SWC. + * Compile/Optimize with SWC/ESbuild. */ - optimizeCompilation?: boolean; + fastCompilation?: boolean; } export interface TestBuildConfig { diff --git a/code/package.json b/code/package.json index 601ef27d508e..c1d7e52bc70f 100644 --- a/code/package.json +++ b/code/package.json @@ -259,6 +259,9 @@ "vite-plugin-turbosnap": "^1.0.1", "wait-on": "^7.0.1" }, + "devDependencies": { + "@chromaui/addon-visual-tests": "^0.0.114" + }, "dependenciesMeta": { "ejs": { "built": false diff --git a/code/ui/components/package.json b/code/ui/components/package.json index 937ab45eee27..a610a92c1928 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -71,7 +71,6 @@ "util-deprecate": "^1.0.2" }, "devDependencies": { - "@chromaui/addon-visual-tests": "^0.0.77", "@popperjs/core": "^2.6.0", "@radix-ui/react-scroll-area": "^1.0.5", "@storybook/icons": "^1.1.6", diff --git a/code/yarn.lock b/code/yarn.lock index ce57e7431391..95a491aaf8ad 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -2432,12 +2432,13 @@ __metadata: languageName: node linkType: hard -"@chromaui/addon-visual-tests@npm:^0.0.77": - version: 0.0.77 - resolution: "@chromaui/addon-visual-tests@npm:0.0.77" +"@chromaui/addon-visual-tests@npm:^0.0.114": + version: 0.0.114 + resolution: "@chromaui/addon-visual-tests@npm:0.0.114" dependencies: "@storybook/design-system": "npm:^7.15.15" - chromatic: "npm:7.2.0-next.1" + "@urql/exchange-auth": "npm:^2.1.6" + chromatic: "npm:^7.2.3" date-fns: "npm:^2.30.0" filesize: "npm:^10.0.12" jsonfile: "npm:^6.1.0" @@ -2445,6 +2446,7 @@ __metadata: ts-dedent: "npm:^2.2.0" urql: "npm:^4.0.3" uuid: "npm:^9.0.0" + zod: "npm:^3.22.2" peerDependencies: "@storybook/blocks": ^7.2.0 "@storybook/client-logger": ^7.2.0 @@ -2461,7 +2463,7 @@ __metadata: optional: true react-dom: optional: true - checksum: e1f51e73bb95a66f9753a3f9acdcdfad2975c450588f2403e20840a1b4e9ba7a71906db53adcb3d6baecce1f329166835f24cabe9ff40f51609848f9c1b67988 + checksum: 786858de1712c2b807f2622da42176fe8f2ac9e05bd26afba662fabe179f78033d7dd9e23d71615554c92129b94314cf48fff977069008a15c033500261b7307 languageName: node linkType: hard @@ -6358,7 +6360,6 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/components@workspace:ui/components" dependencies: - "@chromaui/addon-visual-tests": "npm:^0.0.77" "@popperjs/core": "npm:^2.6.0" "@radix-ui/react-scroll-area": "npm:^1.0.5" "@radix-ui/react-select": "npm:^1.2.2" @@ -7363,6 +7364,7 @@ __metadata: "@babel/preset-react": "npm:^7.22.15" "@babel/preset-typescript": "npm:^7.23.2" "@babel/runtime": "npm:^7.23.2" + "@chromaui/addon-visual-tests": "npm:^0.0.114" "@emotion/jest": "npm:^11.10.0" "@jest/globals": "npm:^29.3.1" "@nx/workspace": "npm:17.0.2" @@ -9764,6 +9766,16 @@ __metadata: languageName: node linkType: hard +"@urql/core@npm:>=4.1.0": + version: 4.1.4 + resolution: "@urql/core@npm:4.1.4" + dependencies: + "@0no-co/graphql.web": "npm:^1.0.1" + wonka: "npm:^6.3.2" + checksum: 66540058380d61d9c59670d7a8b561889147a21c1d251db41fd302626ec4002d030fa292009b4ccc22f24f9efeed5f82e334782a2f57c28b8580b7274ee68813 + languageName: node + linkType: hard + "@urql/core@npm:^4.1.0": version: 4.1.3 resolution: "@urql/core@npm:4.1.3" @@ -9774,6 +9786,16 @@ __metadata: languageName: node linkType: hard +"@urql/exchange-auth@npm:^2.1.6": + version: 2.1.6 + resolution: "@urql/exchange-auth@npm:2.1.6" + dependencies: + "@urql/core": "npm:>=4.1.0" + wonka: "npm:^6.3.2" + checksum: d4140ad0fba0b1beacefcfb7a520662d97429f70888c61191c94e8811ac2b0678a01127e97fa473918dbe34a3e6cf6eece52bf44f6943057232594fa0949d58a + languageName: node + linkType: hard + "@vitejs/plugin-basic-ssl@npm:1.0.1": version: 1.0.1 resolution: "@vitejs/plugin-basic-ssl@npm:1.0.1" @@ -12720,14 +12742,14 @@ __metadata: languageName: node linkType: hard -"chromatic@npm:7.2.0-next.1": - version: 7.2.0-next.1 - resolution: "chromatic@npm:7.2.0-next.1" +"chromatic@npm:^7.2.3": + version: 7.6.0 + resolution: "chromatic@npm:7.6.0" bin: chroma: dist/bin.js chromatic: dist/bin.js chromatic-cli: dist/bin.js - checksum: bae3db70834766b82488e2c419f9e4dc297f372ba6987b1abf7688f875b1405caa37375c43f0a02b391b6c23514f04e9a5ff759ef5c3c42d6a11aed22ff4b910 + checksum: 5ed93689daea8ad22fe3a81e7238357933063905cf5f3acb5a2ec54dbcb5f9ae18c0c66b8bc2d7ed0c909144d9620864f97db70427d10f46de6c7960f6612b2b languageName: node linkType: hard @@ -31586,6 +31608,13 @@ __metadata: languageName: node linkType: hard +"zod@npm:^3.22.2": + version: 3.22.4 + resolution: "zod@npm:3.22.4" + checksum: 7578ab283dac0eee66a0ad0fc4a7f28c43e6745aadb3a529f59a4b851aa10872b3890398b3160f257f4b6817b4ce643debdda4fb21a2c040adda7862cab0a587 + languageName: node + linkType: hard + "zone.js@npm:^0.13.0": version: 0.13.3 resolution: "zone.js@npm:0.13.3" diff --git a/docs/versions/next.json b/docs/versions/next.json index f4ad6c1f1945..73fbcd0d0cb0 100644 --- a/docs/versions/next.json +++ b/docs/versions/next.json @@ -1 +1 @@ -{"version":"7.6.0-alpha.5","info":{"plain":"- Addons, core: Make `react` and Storybook packages `devDependencies` where possible - [#24676](https://github.com/storybookjs/storybook/pull/24676), thanks [@JReinhold](https://github.com/JReinhold)!\n- Angular: Handle nested module metadata - [#24798](https://github.com/storybookjs/storybook/pull/24798), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Angular: Include object configured styles - [#24768](https://github.com/storybookjs/storybook/pull/24768), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Angular: Support v17 - [#24717](https://github.com/storybookjs/storybook/pull/24717), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- ReactNative: Fix missing assert dep in docs-tools - [#24732](https://github.com/storybookjs/storybook/pull/24732), thanks [@dannyhw](https://github.com/dannyhw)!\n- SWC: Add settings for react and preact - [#24805](https://github.com/storybookjs/storybook/pull/24805), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Svelte: Fix source with decorators always showing the `SlotDecorator` component - [#24800](https://github.com/storybookjs/storybook/pull/24800), thanks [@JReinhold](https://github.com/JReinhold)!\n- TestBuild: Disable composition when `--test` is `true` - [#24799](https://github.com/storybookjs/storybook/pull/24799), thanks [@ndelangen](https://github.com/ndelangen)!\n- TestBuild: Disable docs related stuff for test builds - [#24691](https://github.com/storybookjs/storybook/pull/24691), thanks [@ndelangen](https://github.com/ndelangen)!\n- TestBuild: Disable telemetry for test builds - [#24706](https://github.com/storybookjs/storybook/pull/24706), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- TestBuild: Disable warnOnIncompatibleAddons - [#24797](https://github.com/storybookjs/storybook/pull/24797), thanks [@ndelangen](https://github.com/ndelangen)!\n- TestBuild: Globalize `@storybook/blocks` if `build.test.emptyBlocks` is `true` - [#24650](https://github.com/storybookjs/storybook/pull/24650), thanks [@ndelangen](https://github.com/ndelangen)!\n- TestBuild: Implement builder options for test build - [#24826](https://github.com/storybookjs/storybook/pull/24826), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- TestBuild: No sourcemaps for test builds - [#24804](https://github.com/storybookjs/storybook/pull/24804), thanks [@ndelangen](https://github.com/ndelangen)!\n- UI: Fix horizontal scroll bar in Canvas hidden by styling - [#24408](https://github.com/storybookjs/storybook/pull/24408), thanks [@yoshi2no](https://github.com/yoshi2no)!\n- UI: Logo fixed value - [#24726](https://github.com/storybookjs/storybook/pull/24726), thanks [@black-arm](https://github.com/black-arm)!\n- UI: improve A11Y remove redundant styling rules, update icon color - [#24402](https://github.com/storybookjs/storybook/pull/24402), thanks [@tolkadot](https://github.com/tolkadot)!\n- Webpack5: Add export-order-loader and remove babel-plugin-named-exports-order - [#24749](https://github.com/storybookjs/storybook/pull/24749), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Webpack5: Add react-docgen loader and remove babel-plugin-react-docgen - [#24762](https://github.com/storybookjs/storybook/pull/24762), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Webpack5: Fix race condition for export-order loader - [#24817](https://github.com/storybookjs/storybook/pull/24817), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Webpack5: Hide critical dependency warning - [#24784](https://github.com/storybookjs/storybook/pull/24784), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!"}} +{"version":"7.6.0-alpha.5","info":{"plain":"- Addons, core: Make `react` and Storybook packages `devDependencies` where possible - [#24676](https://github.com/storybookjs/storybook/pull/24676), thanks [@JReinhold](https://github.com/JReinhold)!\n- Angular: Handle nested module metadata - [#24798](https://github.com/storybookjs/storybook/pull/24798), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Angular: Include object configured styles - [#24768](https://github.com/storybookjs/storybook/pull/24768), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Angular: Support v17 - [#24717](https://github.com/storybookjs/storybook/pull/24717), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- ReactNative: Fix missing assert dep in docs-tools - [#24732](https://github.com/storybookjs/storybook/pull/24732), thanks [@dannyhw](https://github.com/dannyhw)!\n- SWC: Add settings for react and preact - [#24805](https://github.com/storybookjs/storybook/pull/24805), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Svelte: Fix source with decorators always showing the `SlotDecorator` component - [#24800](https://github.com/storybookjs/storybook/pull/24800), thanks [@JReinhold](https://github.com/JReinhold)!\n- TestBuild: Disable composition when `--test` is `true` - [#24799](https://github.com/storybookjs/storybook/pull/24799), thanks [@ndelangen](https://github.com/ndelangen)!\n- TestBuild: Disable docs related stuff for test builds - [#24691](https://github.com/storybookjs/storybook/pull/24691), thanks [@ndelangen](https://github.com/ndelangen)!\n- TestBuild: Disable telemetry for test builds - [#24706](https://github.com/storybookjs/storybook/pull/24706), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- TestBuild: Disable warnOnIncompatibleAddons - [#24797](https://github.com/storybookjs/storybook/pull/24797), thanks [@ndelangen](https://github.com/ndelangen)!\n- TestBuild: Globalize `@storybook/blocks` if `build.test.disableBlocks` is `true` - [#24650](https://github.com/storybookjs/storybook/pull/24650), thanks [@ndelangen](https://github.com/ndelangen)!\n- TestBuild: Implement builder options for test build - [#24826](https://github.com/storybookjs/storybook/pull/24826), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- TestBuild: No sourcemaps for test builds - [#24804](https://github.com/storybookjs/storybook/pull/24804), thanks [@ndelangen](https://github.com/ndelangen)!\n- UI: Fix horizontal scroll bar in Canvas hidden by styling - [#24408](https://github.com/storybookjs/storybook/pull/24408), thanks [@yoshi2no](https://github.com/yoshi2no)!\n- UI: Logo fixed value - [#24726](https://github.com/storybookjs/storybook/pull/24726), thanks [@black-arm](https://github.com/black-arm)!\n- UI: improve A11Y remove redundant styling rules, update icon color - [#24402](https://github.com/storybookjs/storybook/pull/24402), thanks [@tolkadot](https://github.com/tolkadot)!\n- Webpack5: Add export-order-loader and remove babel-plugin-named-exports-order - [#24749](https://github.com/storybookjs/storybook/pull/24749), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Webpack5: Add react-docgen loader and remove babel-plugin-react-docgen - [#24762](https://github.com/storybookjs/storybook/pull/24762), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Webpack5: Fix race condition for export-order loader - [#24817](https://github.com/storybookjs/storybook/pull/24817), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Webpack5: Hide critical dependency warning - [#24784](https://github.com/storybookjs/storybook/pull/24784), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!"}}