-
Notifications
You must be signed in to change notification settings - Fork 36
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
[Bug] HMR for manager code doesn't work, so addon-kit's watch mode doesn't do as much as expected #49
Comments
Same happens here. with machOS 12.6, Node v16.x. I have to re-build everytime the project to see changes and it is really pain in my ass P.S) I am using this addon kit without ts-emit. is that a reason this happens? |
@SpookyJelly can you elaborate tsemit part? Haven’t seen the docs for that. |
@morewings Sure, I followed the tutorial below. In here, author used the eject command to convert the boilerplate code to JavaScript. https://storybook.js.org/tutorials/create-an-addon/react/en/getting-started/ |
This is a regression for sure. We dropped the hmr code from index.ts:
The reason we dropped hmr was to avoid shipping addons with hmr. I'll look into adding it back in for dev mode. |
Investigated this a bit more, and turns out that this is a limitation with Storybook 7. In SB7, the manager is pre-bundled. The watch mode works and the generated code is updated, but Storybook doesn't rebuild the manager. In SB6, we could disable the cache to refresh the manager on each build. Prebundling was a major perf boost for Storybook users, but unfortunately, it made addon development a bit more challenging. I'm looking at other options. Will let you all know if I figure something out. |
I hope the research goes well. SB7 is really awesome and I don't want to go back SB6 :( |
This should only impact you during addon development. Not when using the addon. |
@winkerVSbecks I think @SpookyJelly is talking about developer experience. I can make addon without live reload, like in good old times. But it’s wrong. The mission of Storybook is to make devs and designers life easier, not harder. |
Do we have any ideas how to work around this with SB 7? I've tried several things on my end, but they've all failed. Local addons are still parsed (I'm using |
Adding custom import { defineConfig } from 'tsup';
import { exec } from 'node:child_process';
export default defineConfig((options) => ({
async onSuccess() {
if (!options.watch) return;
const subprocess = exec('pnpm run storybook --no-open');
subprocess.stdout?.on('data', (data) =>
console.log(`[storybook]: ${data}`)
);
return function cleanup() {
subprocess.kill();
};
},
... |
This still seems to be an issue ^, it's a real pain! |
@integrayshaun it's worth investigating @AriPerkkio's suggestion |
Am I right that addon development is broken for |
It's been a year and I don't think it's been resolved yet, has anyone found another way? |
Still an issue in 2025 |
@AriPerkkio 's solution doesn't work for me. It tries to open another storybook instance on the same port. Then I get this error:
It's really painful to develop SB addons without any HMR solution. As far as I can see it's just an issue if you use the |
Hey folks, I've discussed this a bit with maintainers and here's where we're at:
Contributions are welcome. The Core Team expect this contribution to be feasible by an external contributor, but difficult. Reach out on Discord if you need help with contributing. I'm going to update the issue a little bit to reflect on what's working and what needs to be addressed. |
@Sidnioulz, how is this pre-bundling exactly executed? Via vite? Wouldn't it be possible to turn pre-bundling off in a dev environment/mode? |
Not sure how it's done. Disabling this would undo the major performance benefits of Storybook 7, it would make launching Storybook much slower. The Core Team's proposal is to specifically watch and rebuild the addon files whilst keeping much of the manager build caching logic in place, if I understand correctly. |
Pretty sure it's not vite. It's using esbuild directly. There are two different process. The prebuild one runs at build time and then the server starts up. |
Describe the bug
Watch mode (aka live reload) is broken for me. My setup: macOS 12.6.3, Node v16.14.0. When I change the code, Storybook in browser doesn't show the change.
Steps to reproduce the behavior
yarn install
yarn start
src/Tool.tsx
Expected behavior
Changes in the code are reflected in running Storybook instance without reloading Storybook manually.
Environment
Additional context
No other context. Thanks for your work, colleagues.
The text was updated successfully, but these errors were encountered: