Skip to content

Conversation

@frankieyan
Copy link
Member

@frankieyan frankieyan commented Dec 4, 2025

Short description

This integrates the React compiler to optimize components within the distributed packages, minimizing re-renders.

image

Caveats are that not all components/hooks can be optimized at this time, and those that are have not been deprecated will be addressed in future PRs:

  • Some menu components, like MenuList, ContextMenuTrigger
  • CheckboxField
  • Tabs
  • Tooltip
  • KeyboardShortcut
  • useForkRef
  • useId
  • Anything using polymorphicComponent, such as Box, Inline, Stack, etc.

The bundle size would also be increased by about 37%, due to the compiler's generated code (but not the runtime, which is externalized):

image

The left shows the bundle size using the current build step on main, using Rollup's TypeScript plugin. The right is with the compiler enabled with Babel, which had some of babel's runtime helpers inlined. Once externalized, the bundle size is decreased slightly:

image

Taking out the React compiler, while leaving the Babel build flow in place, results in a smaller bundle compared to when building with the TypeScript plugin (but very slightly larger gzipped), confirming that the size increase can be mostly attributed to the compiler's output.

image

References

https://react.dev/reference/react-compiler/compiling-libraries

PR Checklist

  • Added tests for bugs / new features
  • Updated docs (storybooks, readme)
  • Reviewed and approved Chromatic visual regression tests in CI

@frankieyan frankieyan requested review from doistbot and removed request for doistbot December 6, 2025 08:33
@frankieyan frankieyan requested a review from doistbot December 11, 2025 00:25
Copy link

@doist-bot doist-bot bot left a comment

Choose a reason for hiding this comment

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

This pull request successfully integrates the React Compiler into the build process, which is a significant step towards improving runtime performance. The changes to the build configuration and dependencies are logical. I've identified two minor issues in the custom logger implementation within babel.config.js: one regarding inconsistent log output that could hinder debugging, and another related to potential runtime errors due to unsafe property access. After addressing these points, the PR should be ready for merging.

@frankieyan frankieyan removed the request for review from doistbot December 11, 2025 00:45
@frankieyan frankieyan marked this pull request as ready for review January 9, 2026 07:03
@frankieyan frankieyan requested review from a team and rfgamaral and removed request for a team January 9, 2026 07:03
Copy link

@doist-bot doist-bot bot left a comment

Choose a reason for hiding this comment

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

This PR successfully integrates the React Compiler, a valuable performance optimization. The description provides a clear assessment of the impact, including the bundle size increase and the list of components not yet optimized. The build configuration changes are logical and well-implemented. A minor suggestion is provided to improve the compiler's logging behavior to differentiate between actual errors and expected compilation skips, which would make build outputs cleaner. With that adjustment, the PR is correct.

@frankieyan frankieyan merged commit 7895774 into main Jan 9, 2026
8 checks passed
@frankieyan frankieyan deleted the frankie/build-react-compiler branch January 9, 2026 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants