react/compiler
mofeiZ a78bbf9dbc
[compiler] Context variables as dependencies (#31582)
We previously didn't track context variables in the hoistable values
sidemap of `propagateScopeDependencies`. This was overly conservative as
we *do* track the mutable range of context variables, and it is safe to
hoist accesses to context variables after their last direct / aliased
maybe-assignment.

```js
function Component({value}) {
  // start of mutable range for `x`
  let x = DEFAULT;
  const setX = () => x = value;
  const aliasedSet = maybeAlias(setX);
  maybeCall(aliasedSet);
  // end of mutable range for `x`

  // here, we should be able to take x (and property reads
  // off of x) as dependencies
  return <Jsx value={x} />
}
```
---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/facebook/react/pull/31582).
* #31583
* __->__ #31582
2024-12-16 16:45:05 -05:00
..
apps/playground [compiler][be] Playground now compiles entire program (#31774) 2024-12-16 14:43:21 -05:00
crates Fix rust lints 2024-08-06 14:48:32 -04:00
docs Punctuation & correcting spelling mistakes (#30592) 2024-08-09 14:53:53 -07:00
fixtures [cleanup] Remove compiler runtime-compat fixture library (#31430) 2024-11-05 14:14:39 -05:00
packages [compiler] Context variables as dependencies (#31582) 2024-12-16 16:45:05 -05:00
scripts [ci:compiler] Only add latest tag to non-experimental (#31288) 2024-10-18 13:24:30 -04:00
.eslintrc.js [compiler:codegen] Wrap non-ascii characters in JsxExpressionContainer 2024-06-21 10:08:15 -04:00
.gitignore
Cargo.lock
Cargo.toml
package.json [compiler] Update hermes deps (#31586) 2024-11-19 10:52:48 -05:00
README.md
rust-toolchain.toml
rustfmt.toml
yarn.lock Revert "Replace deprecated dependency in eslint-plugin-react-compiler" (#31665) 2024-12-03 11:46:08 -05:00

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.

More information about the design and architecture of the compiler are covered in the Design Goals.

More information about developing the compiler itself is covered in the Development Guide.