Regression with default value not being selected in Controls column
See original GitHub issueDescribe the bug We’ve been loving Storybook with our Typescript setup, but after upgrading from 6.2.9 to 6.3.0, we’ve lost the feature to have SB select the default value in the Controls column.
For example, in the demo files produced with npx sb init, a Button.tsx is created.
Its size prop has a default value of medium, but the RadioControl does not select the radio option labeled medium anymore.
To Reproduce
I have a very simple reproduction repo which simply ran npx sb@next repro with no manual configurations.
System Environment Info:
System: OS: macOS 11.4 CPU: (8) x64 Intel® Core™ i7-1068NG7 CPU @ 2.30GHz Binaries: Node: 12.20.2 - ~/rg/community/bin/build/nodejs/bin/node Yarn: 1.22.5 - ~/rg/community/bin/build/yarn/bin/yarn npm: 6.14.11 - ~/rg/community/bin/build/nodejs/bin/npm Browsers: Chrome: 91.0.4472.114 Firefox: 89.0 Safari: 14.1.1
Additional context
I’m not that familiar with SB’s codebase, but what I can tell is that the value prop for RadioControl is undefined.
The only time this is not undefined is when the Story supplies it via the args property, i.e.
const Template: ComponentStory<typeof Button> = (args) => <Button {...args />
const Example1 = Template.bind({});
Example1.args = {
size: 'large'
}
Issue Analytics
- State:
- Created 2 years ago
- Comments:21 (15 by maintainers)

Top Related StackOverflow Question
@penx 👋 - so the issue here is that it is setting it to
undefinedrather than not setting it at all?@shilman would it be possible to just not pass any value at all to the props? The current behavior messes with our setup:
This allows us to have:
propsWithDefaultsobject that automatically gets the resolved types for each props, potentially with defaults. E.g. instead of'user' | 'entity' | undefinedthe type gets resolved to'user' | 'entity'which is great since that’s the actual type due to the default, andundefinedis not an option.This worked great for earlier versions of storybook, but now I have two issues:
undefined, the object spread (which will accept any own property, no matter the value) is replacing the default props with undefined.This is an awkward situation, because if you look at the types, the component always expects some props to have a value (for example the
variantprop above), but it comes withundefinedwhich typescript doesn’t even contemplate.Doesn’t it suffice just not setting the props at all? Otherwise, this will force us to either not upgrade or change our whole codebase for a storybook quirk 😕
By the way, I’ve also realized that this is only happening the second time a component is loaded in storybook. The first time, it’s fine. This was one of the biggest head-scratchers I initially found 😛
Thank you!