react/compiler/packages/babel-plugin-react-compiler
Joseph Savona 33a1095d72
[compiler] Infer render helpers for additional validation (#33647)
We currently assume that any functions passes as props may be event
handlers or effect functions, and thus don't check for side effects such
as mutating globals. However, if a prop is a function that returns JSX
that is a sure sign that it's actually a render helper and not an event
handler or effect function. So we now emit a `Render` effect for any
prop that is a JSX-returning function, triggering all of our render
validation.

This required a small fix to InferTypes: we weren't correctly populating
the `return` type of function types during unification. I also improved
the printing of types so we can see the inferred return types.

---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/facebook/react/pull/33647).
* #33643
* #33650
* #33642
* __->__ #33647
2025-08-27 08:44:09 -07:00
..
scripts [compiler][be] Move e2e tests to BabelPlugin transformer (#32706) 2025-03-21 20:05:22 -04:00
src [compiler] Infer render helpers for additional validation (#33647) 2025-08-27 08:44:09 -07:00
jest.config.js
package.json [compiler][be] Playground now uses tsup bundled plugin (#32759) 2025-03-26 14:31:20 -04:00
README.md
tsconfig.json [compiler][be] Test runner (snap) now uses tsup bundled plugin (#32758) 2025-03-26 14:27:42 -04:00
tsup.config.ts [compiler] Add missing copyrights (#33004) 2025-04-23 22:04:44 -04:00

babel-plugin-react-compiler

React Compiler is a compiler that optimizes React applications, ensuring that only the minimal parts of components and hooks will re-render when state changes. The compiler also validates that components and hooks follow the Rules of React.

This package contains the React Compiler Babel plugin use in projects that make use of Babel. You can find instructions for using this plugin here: https://react.dev/learn/react-compiler