Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
716 commits
Select commit Hold shift + click to select a range
19ebb92
revert addon-docs linking workaround
JReinhold Jul 10, 2025
0262446
Update generateBundle to preserve process.env.NODE_ENV for production…
ndelangen Jul 10, 2025
4c1957d
Merge branch 'norbert/esm-builders' into norbert/esm-renderers
ndelangen Jul 10, 2025
c672533
bust cache
ndelangen Jul 10, 2025
36ca675
Merge pull request #31970 from storybookjs/norbert/esm-builders
ndelangen Jul 10, 2025
1b638eb
Apply suggestion from @greptile-apps[bot]
JReinhold Jul 10, 2025
646d670
replace node_env in runtime entries (not just global-runtime)
ndelangen Jul 10, 2025
113639f
Merge branch 'norbert/esm-renderers' of https://github.com/storybookj…
ndelangen Jul 10, 2025
2c005c5
Add dts property to entry points in buildEntries configuration
ndelangen Jul 10, 2025
364e959
replace require.resolve in addon-onboarding with json import
JReinhold Jul 10, 2025
da8d807
return channel
JReinhold Jul 10, 2025
d7290f0
Refactor entry points in package.json to simplify configuration by re…
ndelangen Jul 10, 2025
83c4658
Merge branch 'sb10/esm-only' into norbert/esm-renderers
ndelangen Jul 10, 2025
f76d883
Refactor entry points in package.json to streamline configuration by …
ndelangen Jul 10, 2025
d9a2def
Merge branch 'norbert/esm-renderers' of https://github.com/storybookj…
ndelangen Jul 10, 2025
dcea463
Merge pull request #32003 from storybookjs/jeppe/export-module-utils
JReinhold Jul 10, 2025
428fa53
simplify package.json import
JReinhold Jul 10, 2025
a138c5c
Merge branch 'sb10/esm-only' into norbert/esm-renderers
ndelangen Jul 10, 2025
374b59f
bust cache
ndelangen Jul 10, 2025
39f1c1d
Merge branch 'norbert/esm-renderers' of https://github.com/storybookj…
ndelangen Jul 10, 2025
ede379b
Merge pull request #32005 from storybookjs/jeppe/remove-require-onboa…
JReinhold Jul 10, 2025
e0251f6
convert framework html-vite to new bundling script & ESM-only
ndelangen Jul 10, 2025
34074b9
make it ESM
ndelangen Jul 10, 2025
1b00591
wip nextjs
ndelangen Jul 10, 2025
1eafcf5
convert nextjs framework to esm only
ndelangen Jul 11, 2025
d553993
Merge pull request #31982 from storybookjs/norbert/esm-renderers
ndelangen Jul 11, 2025
f1d5214
Merge branch 'next' into sb10/esm-only
ndelangen Jul 11, 2025
2c5e6d6
Merge branch 'sb10/esm-only' into norbert/esm-frameworks
ndelangen Jul 11, 2025
d469d31
Refactor Next.js package.json to structure mock exports with types an…
ndelangen Jul 11, 2025
60d75c8
Merge branch 'norbert/esm-frameworks' of https://github.com/storybook…
ndelangen Jul 11, 2025
172ca8f
cleanup
ndelangen Jul 11, 2025
83af8ad
simplify
ndelangen Jul 11, 2025
f9f0847
fix: update import path for OriginalNextLegacyImage in next-legacy-im…
ndelangen Jul 11, 2025
9b154d1
fix: update import paths for loader-utils and add missing module decl…
ndelangen Jul 11, 2025
5523c43
fix: correct import path for loader-utils in get-font-face-declaratio…
ndelangen Jul 11, 2025
ec5ef8e
chore: update gitHead references in package.json files across multipl…
ndelangen Jul 11, 2025
8a2553a
store failing sandbox as a zip, for debugging purposes
ndelangen Jul 14, 2025
9c9938e
refactor: streamline sandbox creation and artifact zipping in CircleC…
ndelangen Jul 14, 2025
95964d0
fix: update CircleCI config to use a variable for template in sandbox…
ndelangen Jul 14, 2025
33c85aa
chore: remove sandbox zipping and artifact storage from CircleCI config
ndelangen Jul 14, 2025
90100fb
chore: add zipping and artifact storage for failed sandboxes in Circl…
ndelangen Jul 14, 2025
4e82eff
chore: remove zipping and artifact storage for failed sandboxes in Ci…
ndelangen Jul 14, 2025
53d5d01
add back root preset/manager/preview entries to all addons and render…
JReinhold Jul 14, 2025
2d0cd41
upgrade monorepo vite version
ndelangen Jul 14, 2025
21a722f
convert preact-vite framework to esm only
ndelangen Jul 14, 2025
e447790
convert react-vite framework to esm only
ndelangen Jul 14, 2025
5b48989
convert react-webpack5 framework to esm only
ndelangen Jul 14, 2025
bdb0115
convert server-webpack5 framework to esm only
ndelangen Jul 14, 2025
90b481c
convert svelte-vite framework to esm only
ndelangen Jul 14, 2025
42798f8
pin rollup
ndelangen Jul 14, 2025
c6277c4
fix format
JReinhold Jul 14, 2025
5047401
add require condition to framework validation
JReinhold Jul 14, 2025
c5dc0f4
convert vue3-vite framework to esm only
ndelangen Jul 14, 2025
debac69
convert web-components-vite framework to esm only
ndelangen Jul 14, 2025
6881b3f
add types for preset entrypoint for react-vite because it's used in o…
ndelangen Jul 14, 2025
afcebb7
fix svelte
ndelangen Jul 14, 2025
5950ae5
bust cache
ndelangen Jul 14, 2025
b44bfb7
Merge pull request #32035 from storybookjs/jeppe/allow-cjs-frameworks
JReinhold Jul 14, 2025
85027d2
convert angular framework to esm only
ndelangen Jul 14, 2025
b034fb2
Merge branch 'sb10/esm-only' into jeppe/add-root-files
JReinhold Jul 14, 2025
f556464
Merge branch 'sb10/esm-only' into norbert/esm-frameworks
ndelangen Jul 14, 2025
920a3f0
cache bust
ndelangen Jul 14, 2025
f5fd128
convert ember framework to esm only
ndelangen Jul 14, 2025
d1a1a27
convert nextjs-vite framework to esm only
ndelangen Jul 14, 2025
a63032c
convert react-native-web-vite framework to esm only
ndelangen Jul 14, 2025
fde622e
remove require from frameworks as much as possible
ndelangen Jul 14, 2025
214109c
convert sveltekit framework to esm only
ndelangen Jul 14, 2025
123ebe8
convert remaining frameworks to esm only and update package.json depe…
ndelangen Jul 14, 2025
dabbbfd
Merge branch 'next' into sb10/esm-only
ndelangen Jul 14, 2025
dd94350
Merge branch 'sb10/esm-only' into norbert/esm-frameworks
ndelangen Jul 14, 2025
46f9e7d
bust cache
ndelangen Jul 14, 2025
30daeee
Update package.json files for multiple frameworks to use ES module sy…
ndelangen Jul 14, 2025
d2353d9
Merge pull request #32034 from storybookjs/jeppe/add-root-files
JReinhold Jul 14, 2025
910e914
Refactor angular-cli-webpack.js to use ES module syntax and clean up …
ndelangen Jul 14, 2025
037dd48
Merge branch 'next' into sb10/esm-only
ndelangen Jul 15, 2025
031f3ae
Merge branch 'sb10/esm-only' into norbert/esm-frameworks
ndelangen Jul 15, 2025
890479e
Refactor post-install script to improve package name retrieval. Intro…
ndelangen Jul 15, 2025
285414f
Enhance post-install script to handle relative paths for package name…
ndelangen Jul 15, 2025
bdfbd05
Enhance post-install script with name matching function for framework…
ndelangen Jul 15, 2025
c2c8fb8
Update post-install script to include URL handling in package name re…
ndelangen Jul 15, 2025
1af664c
Add "type": "module" to package.json for ESM support in React renderer
ndelangen Jul 15, 2025
9d7c3d0
Update package.json to add debug-storybook script and change package …
ndelangen Jul 15, 2025
9f9cd0c
Refactor build-storybook script in package.json to remove debug optio…
ndelangen Jul 15, 2025
7f72aef
Update preset exports in multiple framework files to include the '.js…
ndelangen Jul 15, 2025
6e9d799
convert codemod to esm only
ndelangen Jul 15, 2025
e29f107
convert core-webpack to esm only
ndelangen Jul 15, 2025
8b6a9cc
build sveltekit preview entry, change mocks to entry points.
JReinhold Jul 15, 2025
6a3f144
convert csf-plugin to esm only
ndelangen Jul 15, 2025
ac63d85
convert create-react-app to esm only
ndelangen Jul 15, 2025
69addeb
convert preset-react-webpack to esm only
ndelangen Jul 15, 2025
6561a8f
convert preset-server-webpack to esm only
ndelangen Jul 15, 2025
05db4bf
broaden version ranges and get them in sync across monorepo
ndelangen Jul 15, 2025
063429f
Merge branch 'norbert/esm-frameworks' into norbert/esm-final-packages
ndelangen Jul 15, 2025
8a694af
Refactor preset files to use fileURLToPath for module resolution and …
ndelangen Jul 15, 2025
781cc4f
Update package.json exports in server-webpack preset to use root path…
ndelangen Jul 15, 2025
630e814
Merge branch 'norbert/esm-final-packages' of https://github.com/story…
ndelangen Jul 15, 2025
d66502f
Refactor optimizeViteDeps export in SvelteKit preset to remove type a…
ndelangen Jul 15, 2025
16e9d95
Merge branch 'norbert/esm-frameworks' into norbert/esm-final-packages
ndelangen Jul 15, 2025
a0f8497
Update acorn and yaml package versions in yarn.lock for improved comp…
ndelangen Jul 15, 2025
9d531bd
Add CsfPluginOptions type export to csf-plugin index for enhanced typ…
ndelangen Jul 15, 2025
fd8f0b3
Refactor Angular package.json and build entries to streamline client …
ndelangen Jul 16, 2025
e4b8262
Refactor getPackageNameFromPath function in postinstall script to use…
ndelangen Jul 16, 2025
f272762
Update moduleIsAvailable function to use existsSync for module resolu…
ndelangen Jul 16, 2025
b2b40da
Fix import of vite-plugin-storybook-nextjs in Next.js Vite preset to …
ndelangen Jul 16, 2025
c077ba3
revert it back to using require, as this needs to be sync, and many o…
ndelangen Jul 16, 2025
a63ec5b
Refactor getPackageAliases function to return mapping directly, simpl…
ndelangen Jul 16, 2025
1e4b78c
Refactor SWC loader configuration to simplify loading of JS config an…
ndelangen Jul 16, 2025
03cdce0
Refactor loadConfig assignment in resolveNextConfig function to handl…
ndelangen Jul 16, 2025
46c5e3d
Update package.json and build entries to simplify vite-plugin export …
ndelangen Jul 16, 2025
556a556
Update SvelteKit package.json to simplify vite-plugin export and disa…
ndelangen Jul 16, 2025
eca16e6
Fix SvelteKit preview.js export to include file extension for improve…
ndelangen Jul 16, 2025
dec05a4
Refactor vite-plugin export in package.json and build entries to stre…
ndelangen Jul 16, 2025
8f730e5
Add note for sb-original package in entry-utils to clarify its purpos…
ndelangen Jul 16, 2025
ac287b9
Remove rollup dependency from package.json in yarn-pnp directory to s…
ndelangen Jul 16, 2025
4eaa7c0
Refactor Angular CLI webpack configuration to replace module availabi…
ndelangen Jul 16, 2025
d29f2d4
Merge branch 'norbert/esm-frameworks' into norbert/esm-final-packages
ndelangen Jul 16, 2025
be1c066
Update package.json and yarn.lock files to remove beta version constr…
ndelangen Jul 16, 2025
bb93f24
Refactor codemod index.ts to use join for path resolution, enhancing …
ndelangen Jul 16, 2025
f6d9972
Refactor isReactScriptsInstalled function to use camelCase for parame…
ndelangen Jul 16, 2025
5edb9cc
Update isReactScriptsInstalled function to use 'with' option for JSON…
ndelangen Jul 16, 2025
ed8f351
migrate eslint rules and config to esm
JReinhold Jul 16, 2025
6960650
update scripts to generate ESM
JReinhold Jul 16, 2025
d8478a4
delete unused bundle scripts
ndelangen Jul 16, 2025
1954659
Merge branch 'next' into sb10/esm-only
ndelangen Jul 16, 2025
2d5efd0
Merge branch 'sb10/esm-only' into norbert/fix-create-storybook
ndelangen Jul 16, 2025
c9c3b28
Merge branch 'sb10/esm-only' into norbert/esm-frameworks
ndelangen Jul 16, 2025
7d8e9cd
Merge branch 'norbert/esm-frameworks' into norbert/esm-final-packages
ndelangen Jul 16, 2025
70d4748
Merge branch 'norbert/esm-final-packages' into norbert/esm-cleanup
ndelangen Jul 16, 2025
b6b6f15
move eslint-plugin prebuild to new entries config
JReinhold Jul 16, 2025
db91fb2
migrate eslint plugin scripts to esm
JReinhold Jul 16, 2025
86bac88
Merge pull request #32006 from storybookjs/norbert/esm-frameworks
ndelangen Jul 17, 2025
19d3954
Merge pull request #32044 from storybookjs/norbert/esm-final-packages
ndelangen Jul 17, 2025
5e70188
Merge pull request #32054 from storybookjs/norbert/esm-cleanup
ndelangen Jul 17, 2025
bc45199
make eslint-plugin scripts cjs again, keep src as esm
JReinhold Jul 17, 2025
81faab2
use tinyexec for executing prebuild scripts
JReinhold Jul 17, 2025
b54d842
fixes
ndelangen Jul 17, 2025
a55d003
Refactor preset.ts to use fileURLToPath for module resolution
ndelangen Jul 17, 2025
19484b5
Merge branch 'sb10/esm-only' into jeppe/eslint-plugin-esm-only
JReinhold Jul 17, 2025
6d7c542
remove last bundling script, remove tsup
JReinhold Jul 17, 2025
8c855eb
Merge branch 'next' into sb10/esm-only
ndelangen Jul 17, 2025
b9ecf7d
Update input.tsx to import styles as a namespace for better compatibi…
ndelangen Jul 17, 2025
e6c5f02
split out build configurations to their respective packages
JReinhold Jul 17, 2025
565f879
simplify coverage reporter CJS workaround
JReinhold Jul 17, 2025
fe8d6e0
remove unused bundler properties from package.jsons
JReinhold Jul 17, 2025
f192224
"fix" type errors in build config imports
JReinhold Jul 17, 2025
db98076
fix build configs
JReinhold Jul 17, 2025
f03b41a
remove CJS references from docs about configuring storybook
ndelangen Jul 17, 2025
ba4910b
Add note on ESM requirements in main-config documentation
ndelangen Jul 17, 2025
ef37c4c
Update main-config documentation to clarify ESM requirements and impr…
ndelangen Jul 17, 2025
6ca37e9
generate metafiles named by package name, share metafile arg logic be…
JReinhold Jul 17, 2025
13fa584
Add ESM requirements for `.storybook/main.*` file in migration docume…
ndelangen Jul 17, 2025
0cd019d
cleanup
JReinhold Jul 17, 2025
1bc2664
comment on sb
JReinhold Jul 17, 2025
2152eb2
cleanup
JReinhold Jul 17, 2025
646e025
Merge pull request #32064 from storybookjs/jeppe/eslint-plugin-esm-only
JReinhold Jul 17, 2025
2d814db
fix type import
JReinhold Jul 17, 2025
df03743
Merge branch 'sb10/esm-only' of github.com:storybookjs/storybook into…
JReinhold Jul 17, 2025
b9cc155
Merge pull request #32065 from storybookjs/jeppe/esm-only-cleanup
JReinhold Jul 17, 2025
8b7e582
Merge pull request #32066 from storybookjs/jeppe/simple-module-exports
JReinhold Jul 17, 2025
11f9e9d
Merge branch 'sb10/esm-only' into jeppe/fix-benchmarks
JReinhold Jul 17, 2025
7ef5096
Merge branch 'next' into sb10/esm-only
ndelangen Jul 21, 2025
5cf3c40
Refactor: Replace require.resolve with import.meta.resolve for module…
ndelangen Jul 21, 2025
2657cc3
move static server asset
ndelangen Jul 21, 2025
c26a31c
chore: remove templates directory from package.json file inclusion
ndelangen Jul 21, 2025
ca34c3f
fix: update mock import paths to use .ts extension for consistency
ndelangen Jul 21, 2025
5b10994
cache bust
ndelangen Jul 21, 2025
277d43a
fix resolving mocks in esm environment
valentinpalkovic Jul 21, 2025
c3f9e91
hoist import from 'storybook/test'
JReinhold Jul 21, 2025
607c774
bust cache
ndelangen Jul 21, 2025
22b6c75
Merge branch 'next' into sb10/esm-only
ndelangen Jul 21, 2025
1acbfac
Merge branch 'sb10/esm-only' into fix-react-test
ndelangen Jul 21, 2025
f7baf10
disable minification, make CJS compat banner work when added multiple…
JReinhold Jul 21, 2025
7db4ab6
Merge branch 'sb10/esm-only' into jeppe/unminify
JReinhold Jul 21, 2025
bbdc051
whoops
JReinhold Jul 21, 2025
621f60e
Merge branch 'jeppe/fix-benchmarks' of github.com:storybookjs/storybo…
JReinhold Jul 21, 2025
4058f5e
Merge pull request #32068 from storybookjs/jeppe/fix-benchmarks
JReinhold Jul 21, 2025
4dc1329
Merge branch 'sb10/esm-only' into jeppe/unminify
JReinhold Jul 22, 2025
e015057
Apply suggestion from @greptile-apps[bot]
JReinhold Jul 22, 2025
d45426a
Merge branch 'sb10/esm-only' into norbert/fix-create-storybook
JReinhold Jul 22, 2025
657eecc
add comment about CJS compat banner
JReinhold Jul 22, 2025
2dd5f42
fix script check
JReinhold Jul 22, 2025
36648ca
bust nx cache
JReinhold Jul 22, 2025
86b5497
remove more relative imports from create-storybook to core
JReinhold Jul 22, 2025
3975783
Refactor: Simplify mock path resolution and enhance external path che…
ndelangen Jul 22, 2025
389c22c
Merge branch 'sb10/esm-only' of https://github.com/storybookjs/storyb…
ndelangen Jul 22, 2025
d7fa6b2
Refactor: Comment out storybook version tests in event log checker
ndelangen Jul 22, 2025
3035d51
Merge branch 'sb10/esm-only' into fix-react-test
ndelangen Jul 22, 2025
92fe4b2
Merge branch 'sb10/esm-only' into norbert/esm-docs-changes
ndelangen Jul 22, 2025
4afba39
Refactor: Comment out unused versions import in event log checker
ndelangen Jul 22, 2025
7e336af
Merge branch 'next' into sb10/esm-only
ndelangen Jul 22, 2025
9e5774e
Merge branch 'sb10/esm-only' into fix-react-test
ndelangen Jul 22, 2025
f34e3e2
Merge branch 'sb10/esm-only' into norbert/esm-docs-changes
ndelangen Jul 22, 2025
f4d1b57
Update docs/api/main-config/main-config.mdx
ndelangen Jul 22, 2025
a57cb02
Merge branch 'sb10/esm-only' into norbert/fix-create-storybook
ndelangen Jul 22, 2025
3814ac9
fix lint
JReinhold Jul 22, 2025
5851c2c
Merge branch 'norbert/fix-create-storybook' of github.com:storybookjs…
JReinhold Jul 22, 2025
afe98a4
cleanup imports
JReinhold Jul 22, 2025
8d8299c
revert module changes
JReinhold Jul 22, 2025
a73825e
Update docs/_snippets/module-aliases-config.md
ndelangen Jul 22, 2025
8b38015
Update docs/_snippets/storybook-addons-preset.md
ndelangen Jul 22, 2025
4200f3f
throw original import error when require fails
JReinhold Jul 22, 2025
c35377c
Add documentation for local addon resolution in migration guide for S…
ndelangen Jul 22, 2025
ea1fbc3
Merge branch 'norbert/esm-docs-changes' of https://github.com/storybo…
ndelangen Jul 22, 2025
1c2b4b5
Merge pull request #32067 from storybookjs/norbert/esm-docs-changes
ndelangen Jul 22, 2025
fec302c
Merge branch 'sb10/esm-only' into fix-react-test
ndelangen Jul 22, 2025
8c31f6f
Merge pull request #32104 from storybookjs/jeppe/improve-require-fall…
JReinhold Jul 23, 2025
b17e1e0
Merge branch 'sb10/esm-only' of github.com:storybookjs/storybook into…
JReinhold Jul 23, 2025
4eec7d3
fix lint
JReinhold Jul 23, 2025
d91f948
Merge branch 'sb10/esm-only' into jeppe/unminify
JReinhold Jul 23, 2025
8845f5f
remove unnecessary postbuild scripts
JReinhold Jul 23, 2025
2c4c53e
fix running postbuild scripts, refactor generate bundle to support me…
JReinhold Jul 23, 2025
31ea1a0
fix adding storybook config dir to vite config allow list
JReinhold Jul 23, 2025
d4c135f
make esbuild analyzer local, support any size of metafile
JReinhold Jul 23, 2025
8ea4158
Merge pull request #32090 from storybookjs/fix-react-test
JReinhold Jul 23, 2025
caf0fa1
Merge pull request #31947 from storybookjs/norbert/fix-create-storybook
JReinhold Jul 23, 2025
9a0d6b3
disable eslint for raw index.js analyzer file
JReinhold Jul 23, 2025
bd72ec7
really fix lint this time
JReinhold Jul 23, 2025
ac50575
Merge pull request #32092 from storybookjs/jeppe/unminify
ndelangen Jul 23, 2025
9045cf5
Merge branch 'next' into sb10/esm-only
ndelangen Jul 23, 2025
0ba91a7
Merge branch 'sb10/esm-only' of https://github.com/storybookjs/storyb…
ndelangen Jul 23, 2025
0b2ae49
change metafile output to match pacakge dir name instead of package n…
JReinhold Jul 23, 2025
b194e30
bust nx cache
JReinhold Jul 23, 2025
48e931b
Merge branch 'sb10/esm-only' of github.com:storybookjs/storybook into…
JReinhold Jul 23, 2025
0825667
add comment about metafile location and nx
JReinhold Jul 23, 2025
acae391
convert to fileURL before importing core bin
JReinhold Jul 23, 2025
50f4824
fix mix of UNIX and POSIX paths when transforming them
JReinhold Jul 23, 2025
1c97efc
wrap absolute imported paths in pathToFileURL
JReinhold Jul 24, 2025
9ee7ac9
support spaces in paths on windows
JReinhold Jul 24, 2025
a6f7a6d
support spaces in windows paths
JReinhold Jul 24, 2025
fc1c0d5
fix type generation on windows and with spaces in path
JReinhold Jul 24, 2025
f9cbdb8
fix dispatching when path have space on windows
JReinhold Jul 24, 2025
ed94372
fix package publishing in paths with spaces
JReinhold Jul 24, 2025
969ff0a
cleanup
JReinhold Jul 24, 2025
a057748
Merge branch 'next' into sb10/esm-only
ndelangen Jul 24, 2025
b2dc04d
Merge branch 'sb10/esm-only' into jeppe/fix-windows-runtime
JReinhold Jul 24, 2025
1df8da9
small improvements
ndelangen Jul 24, 2025
dc7e86b
Merge pull request #32109 from storybookjs/sonda-analyzer
ndelangen Jul 24, 2025
4a09205
Update scripts/knip.config.ts
JReinhold Jul 24, 2025
19dfdec
Merge pull request #32116 from storybookjs/jeppe/fix-windows-runtime
JReinhold Jul 24, 2025
c76863c
Merge branch 'next' into sb10/esm-only
ndelangen Aug 12, 2025
a15101b
Refactor CircleCI configuration to streamline job definitions and imp…
ndelangen Aug 12, 2025
ce979aa
Add new error classes for global settings and CommonJS config support
ndelangen Aug 12, 2025
49719b5
Refactor imports in various files to include isCI and optionalEnvToBo…
ndelangen Aug 12, 2025
513e6bf
Merge branch 'next' into sb10/esm-only
ndelangen Aug 12, 2025
0f91036
fix unit test
ndelangen Aug 12, 2025
b6655bb
Refactor mocking utilities to enhance path resolution
valentinpalkovic Aug 13, 2025
dcd0f62
remove flaky story capture
ndelangen Aug 13, 2025
f8d7853
reduce size of
ndelangen Aug 13, 2025
0eb8aef
Refactor imports across multiple files to use named import for 'ts-de…
ndelangen Aug 13, 2025
9ee3107
bust cache
ndelangen Aug 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2,181 changes: 1,090 additions & 1,091 deletions .circleci/config.yml

Large diffs are not rendered by default.

20 changes: 13 additions & 7 deletions .github/workflows/canary-release-pr.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Publish canary release of PR
run-name: "Canary release: PR #${{ inputs.pr }}, triggered by ${{ github.triggering_actor }}"
run-name: "Canary release: PR #${{ github.event_name == 'workflow_dispatch' && inputs.pr || github.event.pull_request.number }}, triggered by ${{ github.triggering_actor }}"

on:
workflow_dispatch:
Expand All @@ -8,13 +8,15 @@ on:
description: "Pull request number to create a canary release for"
required: true
type: number
pull_request:
types: [opened, synchronize, reopened]

env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1

concurrency:
group: ${{ github.workflow }}-${{ github.event.inputs.pr }}
group: ${{ github.workflow }}-${{ github.event_name == 'workflow_dispatch' && inputs.pr || github.event.pull_request.number }}
cancel-in-progress: true

permissions:
Expand All @@ -25,6 +27,7 @@ jobs:
name: Release canary version
runs-on: ubuntu-latest
environment: release
if: github.event_name == 'workflow_dispatch' || github.head_ref == 'sb10/esm-only'
steps:
- name: Fail if triggering actor is not administrator
uses: prince-chrismc/check-actor-permissions-action@v2.0.4
Expand All @@ -36,7 +39,8 @@ jobs:
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
PR_INFO=$(gh pr view ${{ inputs.pr }} --repo ${{ github.repository }} --json isCrossRepository,headRefOid,headRefName,headRepository,headRepositoryOwner --jq '{isFork: .isCrossRepository, owner: .headRepositoryOwner.login, repoName: .headRepository.name, branch: .headRefName, sha: .headRefOid}')
PR_NUMBER=${{ github.event_name == 'workflow_dispatch' && inputs.pr || github.event.pull_request.number }}
PR_INFO=$(gh pr view $PR_NUMBER --repo ${{ github.repository }} --json isCrossRepository,headRefOid,headRefName,headRepository,headRepositoryOwner --jq '{isFork: .isCrossRepository, owner: .headRepositoryOwner.login, repoName: .headRepository.name, branch: .headRefName, sha: .headRefOid}')
echo $PR_INFO
# Loop through each key-value pair in PR_INFO and set as step output
for key in $(echo "$PR_INFO" | jq -r 'keys[]'); do
Expand Down Expand Up @@ -78,7 +82,8 @@ jobs:
id: version
working-directory: scripts
run: |
yarn release:version --exact 0.0.0-pr-${{ inputs.pr }}-sha-${{ steps.info.outputs.shortSha }} --verbose
PR_NUMBER=${{ github.event_name == 'workflow_dispatch' && inputs.pr || github.event.pull_request.number }}
yarn release:version --exact 0.0.0-pr-$PR_NUMBER-sha-${{ steps.info.outputs.shortSha }} --verbose

- name: Publish v${{ steps.version.outputs.next-version }}
env:
Expand All @@ -91,7 +96,7 @@ jobs:
uses: mcky/find-and-replace-pull-request-body@v1.1.6-mcky
with:
githubToken: ${{ secrets.GH_TOKEN }}
prNumber: ${{ inputs.pr }}
prNumber: ${{ github.event_name == 'workflow_dispatch' && inputs.pr || '' }}
find: "CANARY_RELEASE_SECTION"
isHtmlCommentTag: true
replace: |
Expand All @@ -111,14 +116,15 @@ jobs:

To request a new release of this pull request, mention the `@storybookjs/core` team.

_core team members can create a new canary release [here](https://github.com/storybookjs/storybook/actions/workflows/canary-release-pr.yml) or locally with `gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=${{ inputs.pr }}`_
_core team members can create a new canary release [here](https://github.com/storybookjs/storybook/actions/workflows/canary-release-pr.yml) or locally with `gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=${{ github.event_name == 'workflow_dispatch' && inputs.pr || github.event.pull_request.number }}`_
</details>

- name: Create failing comment on PR
if: failure()
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
gh pr comment ${{ inputs.pr }}\
PR_NUMBER=${{ github.event_name == 'workflow_dispatch' && inputs.pr || github.event.pull_request.number }}
gh pr comment $PR_NUMBER\
--repo "${{github.repository }}"\
--body "Failed to publish canary version of this pull request, triggered by @${{ github.triggering_actor }}. See the failed workflow run at: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
6 changes: 4 additions & 2 deletions .github/workflows/tests-unit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ env:
jobs:
build:
name: Core Unit Tests, windows-latest
strategy:
fail-fast: false
runs-on: windows-11-arm
steps:
- uses: actions/checkout@v4
Expand All @@ -24,6 +22,10 @@ jobs:
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: 'yarn'
cache-dependency-path: |
code/yarn.lock
scripts/yarn.lock

- name: install scripts
run: |
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
22.13.1
22.16.0

105 changes: 104 additions & 1 deletion MIGRATION.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
<h1>Migration</h1>

- [From version 9.x to 10.0.0](#from-version-9x-to-1000)
- [Core Changes](#core-changes)
- [Local addons must be fully resolved](#local-addons-must-be-fully-resolved)
- [The `.storybook/main.*`-file must be valid ESM](#the-storybookmain-file-must-be-valid-esm)
- [Node.js 20.19+ or 22.12+ required](#nodejs-2019-or-2212-required)
- [Require `tsconfig.json` `moduleResolution` set to value that supports `types` condition](#require-tsconfigjson-moduleresolution-set-to-value-that-supports-types-condition)
- [`core.builder` configuration must be a fully resolved path](#corebuilder-configuration-must-be-a-fully-resolved-path)
- [From version 8.x to 9.0.0](#from-version-8x-to-900)
- [Core Changes and Removals](#core-changes-and-removals)
- [Dropped support for legacy packages](#dropped-support-for-legacy-packages)
Expand Down Expand Up @@ -97,7 +104,7 @@
- [MDX is upgraded to v3](#mdx-is-upgraded-to-v3)
- [Dropping support for \*.stories.mdx (CSF in MDX) format and MDX1 support](#dropping-support-for-storiesmdx-csf-in-mdx-format-and-mdx1-support)
- [Dropping support for id, name and story in Story block](#dropping-support-for-id-name-and-story-in-story-block)
- [Core changes](#core-changes)
- [Core changes](#core-changes-1)
- [`framework.options.builder.useSWC` for Webpack5-based projects removed](#frameworkoptionsbuilderuseswc-for-webpack5-based-projects-removed)
- [Removed `@babel/core` and `babel-loader` from `@storybook/builder-webpack5`](#removed-babelcore-and-babel-loader-from-storybookbuilder-webpack5)
- [`framework.options.fastRefresh` for Webpack5-based projects removed](#frameworkoptionsfastrefresh-for-webpack5-based-projects-removed)
Expand Down Expand Up @@ -477,6 +484,102 @@
- [Packages renaming](#packages-renaming)
- [Deprecated embedded addons](#deprecated-embedded-addons)

## From version 9.x to 10.0.0

### Core Changes

#### Local addons must be fully resolved

In Storybook 9 it was possible to do reference local addons by a relative path, like so:

```ts
// main.ts

export default {
addons: ["./my-addon.ts"],
};
```

In Storybook 10 this relative path, should be fully resolved, like so:

```ts
// main.ts

export default {
addons: [import.meta.resolve("./my-addon.ts")],
};
```

#### The `.storybook/main.*`-file must be valid ESM

Storybook will load the `.storybook/main.*` file as an ESM file.
Thus CJS constants (`require`, `__dirname`, `__filename`) will not be defined.

You can define these constants yourself, like so:

```ts
import { createRequire } from "node:module";
import { dirname } from "node:path";
import { fileURLToPath } from "node:url";

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const require = createRequire(import.meta.url);
```

A `main.ts` file that's CJS is no longer supported.

#### Node.js 20.19+ or 22.12+ required

Storybook 10 now requires Node.js version 20.19+ or 22.12+. We require these new ranges so Node.js supports `require(esm)` without a flag.

#### Require `tsconfig.json` `moduleResolution` set to value that supports `types` condition

Storybook 10 has removed all `typesVersions` fields from `package.json` files. This field was previously needed for older TypeScript module resolution strategies that didn't support the `types` condition in package.json exports.

**Required action:** Update your `tsconfig.json` to use a `moduleResolution` that supports the `types` condition:

```json
{
"compilerOptions": {
"moduleResolution": "bundler" // or "node16"/"nodenext"
}
}
```

**Supported values:**

- `"bundler"` (recommended for modern bundler-based projects)
- `"node16"` or `"nodenext"` (Node.js 16+ module resolution)

**Note:** If you're currently using `moduleResolution: "node"` (the old Node.js 10-style resolution), you'll need to upgrade to one of the supported values above.

This change simplifies our package structure and aligns with modern TypeScript standards. Only TypeScript projects are affected - JavaScript projects require no changes.

#### `core.builder` configuration must be a fully resolved path

> [!NOTE]
> In the majority of cases, this is only relevant for authors of Storybook framework packages, as regular users very rarely set the `core.builder` property manually.

When setting the `core.builder` or `core.builder.name` option in the main configuration, it must now be a fully resolved path to a builder's entry point, instead of just to the builder package's root directory.

In a preset:

```diff
import { dirname, join } from 'node:path';

const getAbsolutePath = (input) =>
dirname(require.resolve(join(input, 'package.json')));

export const core = {
- builder: getAbsolutePath('@storybook/builder-vite'),
- // 👆 results in eg. `/absolute/path/node_modules/@storybook/builder-vite
+ builder: import.meta.resolve('@storybook/builder-vite'),
+ // 👆 results in eg. `/absolute/path/node_modules/@storybook/builder-vite/index.js
renderer: getAbsolutePath('@storybook/react'),
};
```

## From version 8.x to 9.0.0

### Core Changes and Removals
Expand Down
83 changes: 0 additions & 83 deletions code/.storybook/bench.stories.tsx

This file was deleted.

81 changes: 81 additions & 0 deletions code/.storybook/bench/bench.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import React from 'react';

import type { Meta } from '@storybook/react-vite';

import { safeMetafileArg } from '../../../scripts/bench/safe-args';

// @ts-expect-error - TS doesn't know about import.meta.glob from Vite
const allMetafiles = import.meta.glob(['../../bench/esbuild-metafiles/**/*.json'], {
import: 'default',
});

export default {
title: 'Bench',
parameters: {
layout: 'fullscreen',
chromatic: { disableSnapshot: true },
},
args: {
// default to the core/node.json metafile
metafile: safeMetafileArg(
Object.keys(allMetafiles).find((path) => path.includes('/core/node.json'))!
),
},
argTypes: {
metafile: {
options: Object.keys(allMetafiles).map(safeMetafileArg).sort(),
mapping: Object.fromEntries(
Object.keys(allMetafiles).map((path) => [safeMetafileArg(path), path])
),
control: {
type: 'select',
labels: Object.fromEntries(
Object.keys(allMetafiles).map((path) => {
const [, dirname, subEntry] = /esbuild-metafiles\/(.+)\/(.+).json/.exec(path)!;

// most metafile directories are named exactly like their package name within the @storybook scope
let packageName = '@storybook/' + dirname;

// but some are not, so we need to map them to the correct package name
switch (dirname) {
case 'core': {
packageName = 'storybook';
break;
}
case 'eslint-plugin':
packageName = 'eslint-plugin-storybook';
break;
case 'create-storybook':
case 'storybook-addon-pseudo-states':
packageName = dirname;
}

return [safeMetafileArg(path), `${packageName} - ${subEntry}`];
})
),
},
},
},
beforeEach: async ({ args }) => {
if (!args.metafile) {
globalThis.metafile = undefined;
return;
}
const metafile = await allMetafiles[args.metafile]();
// this is read by the bundle-analyzer iframe via parent.metafile, in bundle-analyzer/index.js
globalThis.metafile = JSON.stringify(metafile);
},
render: (args) => {
return (
<iframe
src="/bundle-analyzer/index.html"
style={{ border: 'none', width: '100%', height: '100vh' }}
key={args.metafile} // force re-render on args change
/>
);
},
} satisfies Meta;

export const ESBuildAnalyzer = {
name: 'ESBuild Metafiles',
};
Loading
Loading