Skip to content

Commit

Permalink
Merge pull request #26960 from storybookjs/jeppe/react-prerelease-san…
Browse files Browse the repository at this point in the history
…dboxes

React: Support v19 betas in peer dependencies
(cherry picked from commit 6a6da24)
  • Loading branch information
JReinhold authored and storybook-bot committed May 6, 2024
1 parent 85705aa commit a17ae31
Show file tree
Hide file tree
Showing 25 changed files with 157 additions and 145 deletions.
10 changes: 5 additions & 5 deletions .circleci/config.yml
Expand Up @@ -707,30 +707,30 @@ workflows:
requires:
- build
- create-sandboxes:
parallelism: 35
parallelism: 37
requires:
- build
# - smoke-test-sandboxes: # disabled for now
# requires:
# - create-sandboxes
- build-sandboxes:
parallelism: 35
parallelism: 37
requires:
- create-sandboxes
- chromatic-sandboxes:
parallelism: 32
parallelism: 34
requires:
- build-sandboxes
- e2e-production:
parallelism: 30
parallelism: 32
requires:
- build-sandboxes
- e2e-dev:
parallelism: 2
requires:
- create-sandboxes
- test-runner-production:
parallelism: 30
parallelism: 32
requires:
- build-sandboxes

Expand Down
Expand Up @@ -44,6 +44,8 @@ export default {
docs: {
name: 'ResolvedReact',
},
// the version string changes with every release of React/Next.js/Preact, not worth snapshotting
chromatic: { disable: true },
},
};

Expand Down
2 changes: 1 addition & 1 deletion code/addons/links/package.json
Expand Up @@ -78,7 +78,7 @@
"typescript": "^5.3.2"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
},
"peerDependenciesMeta": {
"react": {
Expand Down
5 changes: 5 additions & 0 deletions code/e2e-tests/addon-docs.spec.ts
Expand Up @@ -200,6 +200,11 @@ test.describe('addon-docs', () => {
expectedReactVersionRange = /^17/;
} else if (templateName.includes('react16')) {
expectedReactVersionRange = /^16/;
} else if (
templateName.includes('react-vite/prerelease') ||
templateName.includes('react-webpack/prerelease')
) {
expectedReactVersionRange = /^19/;
}

// Arrange - Get the actual versions
Expand Down
4 changes: 2 additions & 2 deletions code/frameworks/nextjs/package.json
Expand Up @@ -133,8 +133,8 @@
},
"peerDependencies": {
"next": "^13.5.0 || ^14.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"webpack": "^5.0.0"
},
"peerDependenciesMeta": {
Expand Down
4 changes: 2 additions & 2 deletions code/frameworks/react-vite/package.json
Expand Up @@ -64,8 +64,8 @@
"vite": "^4.0.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"vite": "^4.0.0 || ^5.0.0"
},
"engines": {
Expand Down
4 changes: 2 additions & 2 deletions code/frameworks/react-webpack5/package.json
Expand Up @@ -53,8 +53,8 @@
"@types/node": "^18.0.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"typescript": ">= 4.2.x"
},
"peerDependenciesMeta": {
Expand Down
44 changes: 44 additions & 0 deletions code/lib/cli/src/sandbox-templates.ts
Expand Up @@ -201,6 +201,28 @@ const baseTemplates = {
},
skipTasks: ['bench'],
},
'react-vite/prerelease-ts': {
name: 'React Prerelease (Vite | TypeScript)',
/**
* 1. Create a Vite project with the React template
* 2. Add React beta versions
* 3. Add resolutions for @types/react and @types/react-dom, see https://react.dev/blog/2024/04/25/react-19-upgrade-guide#installing
* 4. Add @types/react and @types/react-dom pointing to the beta packages
*/
script: `
npm create vite --yes {{beforeDir}} -- --template react-ts && \
cd {{beforeDir}} && \
yarn add react@beta react-dom@beta && \
jq '.resolutions += {"@types/react": "npm:types-react@beta", "@types/react-dom": "npm:types-react-dom@beta"}' package.json > tmp.json && mv tmp.json package.json && \
yarn add --dev @types/react@npm:types-react@beta @types/react-dom@npm:types-react-dom@beta
`,
expected: {
framework: '@storybook/react-vite',
renderer: '@storybook/react',
builder: '@storybook/builder-vite',
},
skipTasks: ['e2e-tests-dev', 'bench'],
},
'react-webpack/18-ts': {
name: 'React Latest (Webpack | TypeScript)',
script: 'yarn create webpack5-react {{beforeDir}}',
Expand All @@ -222,6 +244,26 @@ const baseTemplates = {
},
skipTasks: ['e2e-tests-dev', 'bench'],
},
'react-webpack/prerelease-ts': {
name: 'React Prerelease (Webpack | TypeScript)',
/**
* 1. Create a Webpack project with React beta versions
* 3. Add resolutions for @types/react and @types/react-dom, see https://react.dev/blog/2024/04/25/react-19-upgrade-guide#installing
* 4. Add @types/react and @types/react-dom pointing to the beta packages
*/
script: `
yarn create webpack5-react {{beforeDir}} --version-react="beta" --version-react-dom="beta" && \
cd {{beforeDir}} && \
jq '.resolutions += {"@types/react": "npm:types-react@beta", "@types/react-dom": "npm:types-react-dom@beta"}' package.json > tmp.json && mv tmp.json package.json && \
yarn add --dev @types/react@npm:types-react@beta @types/react-dom@npm:types-react-dom@beta
`,
expected: {
framework: '@storybook/react-webpack5',
renderer: '@storybook/react',
builder: '@storybook/builder-webpack5',
},
skipTasks: ['e2e-tests-dev', 'bench'],
},
'solid-vite/default-js': {
name: 'SolidJS Latest (Vite | JavaScript)',
script: 'npx degit solidjs/templates/js {{beforeDir}}',
Expand Down Expand Up @@ -628,6 +670,8 @@ export const daily: TemplateKey[] = [
'angular-cli/prerelease',
'cra/default-js',
'react-vite/default-js',
'react-vite/prerelease-ts',
'react-webpack/prerelease-ts',
'vue3-vite/default-js',
'vue-cli/default-js',
'lit-vite/default-js',
Expand Down
4 changes: 2 additions & 2 deletions code/lib/react-dom-shim/package.json
Expand Up @@ -58,8 +58,8 @@
"typescript": "^5.3.2"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
},
"publishConfig": {
"access": "public"
Expand Down
4 changes: 2 additions & 2 deletions code/lib/theming/package.json
Expand Up @@ -68,8 +68,8 @@
"typescript": "^5.3.2"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
},
"peerDependenciesMeta": {
"react": {
Expand Down
4 changes: 2 additions & 2 deletions code/presets/react-webpack/package.json
Expand Up @@ -84,8 +84,8 @@
"typescript": "^5.3.2"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
},
"peerDependenciesMeta": {
"typescript": {
Expand Down
4 changes: 2 additions & 2 deletions code/renderers/react/package.json
Expand Up @@ -80,8 +80,8 @@
"require-from-string": "^2.0.2"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"typescript": ">= 4.2.x"
},
"peerDependenciesMeta": {
Expand Down
4 changes: 2 additions & 2 deletions code/ui/blocks/package.json
Expand Up @@ -75,8 +75,8 @@
"@types/color-convert": "^2.0.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
},
"peerDependenciesMeta": {
"react": {
Expand Down
5 changes: 1 addition & 4 deletions code/ui/blocks/src/components/Source.tsx
Expand Up @@ -98,7 +98,7 @@ const Source: FunctionComponent<SourceProps> = ({
language,
code,
dark,
format,
format = false,
...rest
}) => {
const { typography } = useTheme();
Expand Down Expand Up @@ -138,7 +138,4 @@ const Source: FunctionComponent<SourceProps> = ({
);
};

Source.defaultProps = {
format: false,
};
export { Source, StyledSyntaxHighlighter };
4 changes: 2 additions & 2 deletions code/ui/components/package.json
Expand Up @@ -86,8 +86,8 @@
"use-resize-observer": "^9.1.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
},
"publishConfig": {
"access": "public"
Expand Down
4 changes: 0 additions & 4 deletions code/ui/components/src/components/form/field/field.tsx
Expand Up @@ -38,7 +38,3 @@ export const Field = ({ label, children, ...props }: FieldProps) => (
{children}
</Wrapper>
);

Field.defaultProps = {
label: undefined,
};
21 changes: 6 additions & 15 deletions code/ui/components/src/components/tabs/tabs.tsx
Expand Up @@ -134,14 +134,14 @@ export interface TabsProps {
export const Tabs: FC<TabsProps> = memo(
({
children,
selected,
selected = null,
actions,
absolute,
bordered,
tools,
absolute = false,
bordered = false,
tools = null,
backgroundColor,
id: htmlId,
menuName,
id: htmlId = null,
menuName = 'Tabs',
emptyState,
showToolsWhenEmpty,
}) => {
Expand Down Expand Up @@ -211,15 +211,6 @@ export const Tabs: FC<TabsProps> = memo(
}
);
Tabs.displayName = 'Tabs';
Tabs.defaultProps = {
id: null,
children: null,
tools: null,
selected: null,
absolute: false,
bordered: false,
menuName: 'Tabs',
};

export interface TabsStateProps {
children: TabsProps['children'];
Expand Down
33 changes: 11 additions & 22 deletions code/ui/components/src/components/tooltip/ListItem.tsx
Expand Up @@ -186,17 +186,18 @@ export interface ListItemProps extends Omit<ComponentProps<typeof Item>, 'href'
}

const ListItem = ({
loading,
title,
center,
right,
icon,
active,
disabled,
loading = false,
title = <span>Loading state</span>,
center = null,
right = null,

active = false,
disabled = false,
isIndented,
href,
onClick,
LinkWrapper,
href = null,
onClick = null,
icon,
LinkWrapper = null,
...rest
}: ListItemProps) => {
const itemProps = getItemProps(onClick, href, LinkWrapper);
Expand All @@ -220,16 +221,4 @@ const ListItem = ({
);
};

ListItem.defaultProps = {
loading: false,
title: <span>Loading state</span>,
center: null,
right: null,
active: false,
disabled: false,
href: null,
LinkWrapper: null,
onClick: null,
};

export default ListItem;
18 changes: 10 additions & 8 deletions code/ui/components/src/components/tooltip/Tooltip.tsx
Expand Up @@ -126,7 +126,16 @@ export interface TooltipProps {

export const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(
(
{ placement, hasChrome, children, arrowProps, tooltipRef, color, withArrows, ...props },
{
placement = 'top',
hasChrome = true,
children,
arrowProps = {},
tooltipRef,
color,
withArrows,
...props
},
ref
) => {
return (
Expand All @@ -139,10 +148,3 @@ export const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(
);

Tooltip.displayName = 'Tooltip';
Tooltip.defaultProps = {
color: undefined,
tooltipRef: undefined,
hasChrome: true,
placement: 'top',
arrowProps: {},
};
Expand Up @@ -58,7 +58,7 @@ export interface TooltipLinkListProps {
LinkWrapper?: LinkWrapperType;
}

export const TooltipLinkList = ({ links, LinkWrapper }: TooltipLinkListProps) => {
export const TooltipLinkList = ({ links, LinkWrapper = null }: TooltipLinkListProps) => {
const hasIcon = links.some((link) => link.icon);
return (
<List>
Expand All @@ -68,7 +68,3 @@ export const TooltipLinkList = ({ links, LinkWrapper }: TooltipLinkListProps) =>
</List>
);
};

TooltipLinkList.defaultProps = {
LinkWrapper: ListItem.defaultProps.LinkWrapper,
};
6 changes: 0 additions & 6 deletions code/ui/components/src/components/tooltip/TooltipMessage.tsx
Expand Up @@ -60,9 +60,3 @@ export const TooltipMessage = ({ title, desc, links }: TooltipMessageProps) => {
</MessageWrapper>
);
};

TooltipMessage.defaultProps = {
title: null,
desc: null,
links: null,
};

0 comments on commit a17ae31

Please sign in to comment.