react/compiler/packages/babel-plugin-react-compiler
Niklas Mollenhauer ac06829246
feat(compiler): Implement constant propagation for template literals (#33139)
New take on #29716

## Summary
Template literals consisting entirely of constant values will be inlined
to a string literal, effectively replacing the backticks with a double
quote.

This is done primarily to make the resulting instruction a string
literal, so it can be processed further in constant propatation. So this
is now correctly simplified to `true`:
```js
`` === "" // now true
`a${1}` === "a1" // now true
```

If a template string literal can only partially be comptime-evaluated,
it is not that useful for dead code elimination or further constant
folding steps and thus, is left as-is in that case. Same is true if the
literal contains an array, object, symbol or function.

## How did you test this change?

See added tests.
2025-05-08 09:24:22 -07:00
..
scripts [compiler][be] Move e2e tests to BabelPlugin transformer (#32706) 2025-03-21 20:05:22 -04:00
src feat(compiler): Implement constant propagation for template literals (#33139) 2025-05-08 09:24:22 -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