Skip to content
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

Update dependencies for React 19 type compatibility #30031

Open
wants to merge 6 commits into
base: next
Choose a base branch
from

Conversation

mrginglymus
Copy link

@mrginglymus mrginglymus commented Dec 11, 2024

What I did

A number of bundled packages in storybook still use the deprecated global JSX namespace from React; this PR makes minor updates to those packages to bring in React 19 type-compatible versions.

There may be further issues with @storybook/blocks, but I'm having trouble building it (even on next). I'm on a limited dev environment as I only have access to a Windows and WSL dev environment, and storybook does not play nice with Windows...

Checklist for Contributors

Testing

The changes in this PR are covered in the following automated tests:

  • stories
  • unit tests
  • integration tests
  • end-to-end tests

Manual testing

This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli-storybook/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

🦋 Canary release

This pull request has been released as version 0.0.0-pr-30031-sha-5acb6e15. Try it out in a new sandbox by running npx [email protected] sandbox or in an existing project with npx [email protected] upgrade.

More information
Published version 0.0.0-pr-30031-sha-5acb6e15
Triggered by @yannbf
Repository mrginglymus/storybook
Branch r19-type-compat
Commit 5acb6e15
Datetime Sat Dec 14 09:32:09 UTC 2024 (1734168729)
Workflow run 12328745571

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

core team members can create a new canary release here or locally with gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=30031

name before after diff z %
createSize 0 B 0 B 0 B - -
generateSize 77.7 MB 77.7 MB 0 B 4.32 0%
initSize 136 MB 136 MB -64.3 kB 4.27 0%
diffSize 58.4 MB 58.3 MB -64.3 kB 4.26 -0.1%
buildSize 7.24 MB 6.86 MB -380 kB -0.54 -5.5%
buildSbAddonsSize 1.88 MB 1.52 MB -361 kB -0.4 -23.8%
buildSbCommonSize 195 kB 195 kB 0 B - 0%
buildSbManagerSize 1.86 MB 1.86 MB -6.28 kB -12.94 -0.3%
buildSbPreviewSize 0 B 0 B 0 B - -
buildStaticSize 0 B 0 B 0 B - -
buildPrebuildSize 3.93 MB 3.57 MB -367 kB -0.45 -10.3%
buildPreviewSize 3.3 MB 3.29 MB -12.5 kB -235.31 -0.4%
testBuildSize 0 B 0 B 0 B - -
testBuildSbAddonsSize 0 B 0 B 0 B - -
testBuildSbCommonSize 0 B 0 B 0 B - -
testBuildSbManagerSize 0 B 0 B 0 B - -
testBuildSbPreviewSize 0 B 0 B 0 B - -
testBuildStaticSize 0 B 0 B 0 B - -
testBuildPrebuildSize 0 B 0 B 0 B - -
testBuildPreviewSize 0 B 0 B 0 B - -
name before after diff z %
createTime 24s 16.9s -7s -125ms 0.53 -42.1%
generateTime 19.7s 21.6s 1.9s 0.08 8.8%
initTime 14.2s 20.9s 6.6s 3.46 🔺32%
buildTime 14.2s 8.2s -5s -999ms -0.79 -72.4%
testBuildTime 0ms 0ms 0ms - -
devPreviewResponsive 5s 4.7s -289ms -0.82 -6.1%
devManagerResponsive 3.6s 3.6s -2ms -0.61 -0.1%
devManagerHeaderVisible 596ms 519ms -77ms -0.78 -14.8%
devManagerIndexVisible 627ms 549ms -78ms -1.16 -14.2%
devStoryVisibleUncached 1.4s 1.7s 259ms -0.17 14.8%
devStoryVisible 625ms 551ms -74ms -1.09 -13.4%
devAutodocsVisible 554ms 474ms -80ms -0.67 -16.9%
devMDXVisible 517ms 463ms -54ms -0.75 -11.7%
buildManagerHeaderVisible 689ms 537ms -152ms -0.71 -28.3%
buildManagerIndexVisible 805ms 631ms -174ms -0.71 -27.6%
buildStoryVisible 631ms 501ms -130ms -0.59 -25.9%
buildAutodocsVisible 446ms 402ms -44ms -0.68 -10.9%
buildMDXVisible 479ms 396ms -83ms -0.74 -21%

Greptile Summary

Updates dependencies and type definitions across multiple packages to ensure compatibility with React 19, particularly addressing the deprecated global JSX namespace.

  • Added patch to code/.yarn/patches/markdown-to-jsx-npm-7.7.1-6038885620.patch to use React.ReactNode instead of React.ReactChild
  • Updated React peer dependencies in code/lib/blocks/package.json to include React 19 beta
  • Modified code/renderers/react/src/types.ts to import JSX namespace directly from React
  • Updated emotion packages and @radix-ui/react-dialog in code/core/package.json for React 19 compatibility
  • Added 'as const' assertion in code/lib/blocks/src/blocks/mdx.tsx for type safety

💡 (1/5) You can manually trigger the bot by mentioning @greptileai in a comment!

@imjordanxd
Copy link

It would be EPIC if this could be pack-ported to Storybook v6 and v7 🚀

@mrginglymus
Copy link
Author

OK, I found the problem with building @storybook/blocks. I've updated markdown-to-jsx to its latest version, but even that doesn't fully support React 19 yet type-wise, so I've patched it to expedite getting storybook type-compatible, and will raise a PR over there soon.

@mrginglymus mrginglymus marked this pull request as ready for review December 14, 2024 09:31
@yannbf yannbf added the ci:merged Run the CI jobs that normally run when merged. label Dec 14, 2024
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

5 file(s) reviewed, no comment(s)
Edit PR Review Bot Settings | Greptile

@yannbf
Copy link
Member

yannbf commented Dec 14, 2024

Thanks for your contribution @mrginglymus! I have started a canary release so you can test it out in a real scenario.

@imjordanxd unfortunately won't happen, it would be amazing if you could upgrade your project instead. There are a ton of incredible fixes and features we have shipped since Storybook 6/7, please consider upgrading if possible.

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

5 file(s) reviewed, no comment(s)
Edit PR Review Bot Settings | Greptile

Copy link

nx-cloud bot commented Dec 14, 2024

☁️ Nx Cloud Report

CI is running/has finished running commands for commit 5acb6e1. As they complete they will appear below. Click to see the status, the terminal output, and the build insights.

📂 See all runs for this CI Pipeline Execution


✅ Successfully ran 1 target

Sent with 💌 from NxCloud.

@storybook-pr-benchmarking
Copy link

Package Benchmarks

Commit: 5acb6e1, ran on 14 December 2024 at 09:45:17 UTC

The following packages have significant changes to their size or dependencies:

@storybook/addon-a11y

Before After Difference
Dependency count 59 59 0
Self size 411 KB 45 KB 🎉 -366 KB 🎉
Dependency size 13.46 MB 13.46 MB 0 B
Bundle Size Analyzer Link Link

@storybook/addon-onboarding

Before After Difference
Dependency count 0 2 🚨 +2 🚨
Self size 235 KB 216 KB 🎉 -19 KB 🎉
Dependency size 670 B 235 KB 🚨 +235 KB 🚨
Bundle Size Analyzer Link Link

@storybook/core

Before After Difference
Dependency count 50 50 0
Self size 21.44 MB 21.39 MB 🎉 -46 KB 🎉
Dependency size 14.36 MB 14.36 MB 0 B
Bundle Size Analyzer Link Link

@storybook/experimental-nextjs-vite

Before After Difference
Dependency count 153 87 🎉 -66 🎉
Self size 231 KB 231 KB 🎉 -16 B 🎉
Dependency size 47.61 MB 31.57 MB 🎉 -16.04 MB 🎉
Bundle Size Analyzer Link Link

storybook

Before After Difference
Dependency count 51 51 0
Self size 22 KB 22 KB 0 B
Dependency size 35.80 MB 35.75 MB 🎉 -46 KB 🎉
Bundle Size Analyzer Link Link

sb

Before After Difference
Dependency count 52 52 0
Self size 1 KB 1 KB 0 B
Dependency size 35.82 MB 35.77 MB 🎉 -46 KB 🎉
Bundle Size Analyzer Link Link

@storybook/cli

Before After Difference
Dependency count 393 393 0
Self size 493 KB 493 KB 0 B
Dependency size 80.50 MB 80.46 MB 🎉 -43 KB 🎉
Bundle Size Analyzer Link Link

@storybook/codemod

Before After Difference
Dependency count 273 273 0
Self size 612 KB 612 KB 0 B
Dependency size 70.50 MB 70.45 MB 🎉 -43 KB 🎉
Bundle Size Analyzer Link Link

create-storybook

Before After Difference
Dependency count 109 109 0
Self size 1.11 MB 1.11 MB 0 B
Dependency size 44.93 MB 44.89 MB 🎉 -46 KB 🎉
Bundle Size Analyzer Link Link

@mrginglymus
Copy link
Author

mrginglymus commented Dec 14, 2024

Thanks for your contribution @mrginglymus! I have started a canary release so you can test it out in a real scenario.

Thanks - my project now passes type checking and the storybook continues to build correctly using this canary release

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ci:merged Run the CI jobs that normally run when merged. dependencies react
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants