<results>
<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/usestate-derived-from-prop-no-show-in-data-flow-tree.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/usestate-derived-from-prop-no-show-in-data-flow-tree.expect.md

...@loggerTestOnly @outputMode:"lint"

function Component({prop}) {
  const [s, setS] = useState();
  const [second, setSecond] = useState(prop);

  /*
   * `second` is a source of state. It...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/globals-dont-resolve-local-useState.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/globals-dont-resolve-local-useState.expect.md


## Input

```javascript
import {useState as _useState, useCallback, useEffect} from 'react';
import {ValidateMemoization} from...
</result>

<result contentUrl="/repos/facebook/react/main/files/CHANGELOG.md?start=234">
CHANGELOG.md

...  
* Require initial argument to `useRef`: The initial argument is now required to match `useState`, `createContext` etc  
* Refs are mutable by default: Ref objects returned from `useRef()`...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/CLAUDE.md?start=168">
compiler/CLAUDE.md

...'@param0', into: '@returns'},
  ],
}
```

**Common patterns:**

1. **RenderHookAliasing** (useState, useContext, useMemo, useCallback):
   - Freezes arguments (`Freeze @rest`)
   - Marks...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/05-deadCodeElimination.md?start=61">
compiler/packages/babel-plugin-react-compiler/docs/passes/05-deadCodeElimination.md

...markers (StartMemoize, FinishMemoize)

- **SSR mode special case:**
  - In SSR mode, unused `useState`, `useReducer`, and `useRef` hooks can be removed

- **Object destructuring with rest:**
  -...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/06-inferTypes.md?start=12">
compiler/packages/babel-plugin-react-compiler/docs/passes/06-inferTypes.md

...are `TPrimitive`
- The function return type is `TPrimitive`

**Hook type inference example (useState):**
```javascript
const [x, setX] = useState(initialValue);
```

After InferTypes:
-...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/10-inferReactivePlaces.md?start=41">
compiler/packages/babel-plugin-react-compiler/docs/passes/10-inferReactivePlaces.md

...For each instruction:
   - Track stable identifier sources (for hooks like `useRef`, `useState` dispatch)
   - Check if any operand is reactive
   - Hook calls and `use` operator are...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/24-pruneNonReactiveDependencies.md?start=48">
compiler/packages/babel-plugin-react-compiler/docs/passes/24-pruneNonReactiveDependencies.md

...isStableType(id: Identifier): boolean {
  return (
    isSetStateType(id) ||       // useState setter
    isSetActionStateType(id) || // useActionState setter
    isDispatcherType(id) ||   ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/26-mergeReactiveScopesThatInvalidateTogether.md?start=159">
compiler/packages/babel-plugin-react-compiler/docs/passes/26-mergeReactiveScopesThatInvalidateTogether.md

...Fixture: `merge-consecutive-scopes-deps-subset-of-decls.js`

**Input:**
```javascript
import {useState} from 'react';

function Component() {
  const [count, setCount] = useState(0);
  return (
   ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/35-optimizeForSSR.md?start=10">
compiler/packages/babel-plugin-react-compiler/docs/passes/35-optimizeForSSR.md

...The function has been through type inference
- Hook types are properly identified (useState, useReducer, useEffect, etc.)
- Function types for callbacks are properly inferred

## Output...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/41-validateHooksUsage.md?start=16">
compiler/packages/babel-plugin-react-compiler/docs/passes/41-validateHooksUsage.md

...Global
Destructuring hook-like names from a global creates known hooks:
```javascript
const {useState} = React; // useState is KnownHook
```

### Hook-Like Names from Local Variables
Hook-like...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/44-validateNoSetStateInRender.md?start=28">
compiler/packages/babel-plugin-react-compiler/docs/passes/44-validateNoSetStateInRender.md

...store the previous value in state and update conditionally: https://react.dev/reference/react/useState#storing-information-from-previous-renders
* To derive data from other state/props, compute the...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/45-validateNoDerivedComputationsInEffects.md?start=99">
compiler/packages/babel-plugin-react-compiler/docs/passes/45-validateNoDerivedComputationsInEffects.md

...ect.js`

**Input:**
```javascript
// @validateNoDerivedComputationsInEffects
import {useEffect, useState} from 'react';

function BadExample() {
  const [firstName, setFirstName] = useState('Taylor');...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/docs/passes/46-validateNoSetStateInEffects.md?start=114">
compiler/packages/babel-plugin-react-compiler/docs/passes/46-validateNoSetStateInEffects.md

...@loggerTestOnly @validateNoSetStateInEffects @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component() {
  const [state, setState] = useState(0);
  const f = ()...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-mutation-in-effect-indirect-usecallback.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-mutation-in-effect-indirect-usecallback.expect.md

...@validatePreserveExistingMemoizationGuarantees
import {useCallback, useEffect, useState} from 'react';

let someGlobal = {};

function Component() {
  const [state, setState] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-mutation-in-effect-indirect.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-mutation-in-effect-indirect.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';

let someGlobal = {};

function Component() {
  const [state, setState] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-mutation-unused-usecallback.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-mutation-unused-usecallback.expect.md


## Input

```javascript
import {useCallback, useEffect, useState} from 'react';

function Component() {
  const callback = useCallback(() => {
    window.foo =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-reassignment-in-effect-indirect.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-reassignment-in-effect-indirect.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';

let someGlobal = false;

function Component() {
  const [state, setState] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-reassignment-in-effect.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-global-reassignment-in-effect.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';

let someGlobal = false;

function Component() {
  const [state, setState] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-mutate-global-in-effect-fixpoint.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-mutate-global-in-effect-fixpoint.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';

let someGlobal = {value: null};

function Component() {
  const [state,...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-ref-access-in-effect-indirect.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-ref-access-in-effect-indirect.expect.md

...RefAccessDuringRender @validateNoSetStateInRender:false
import {useCallback, useEffect, useRef, useState} from 'react';

function Component() {
  const ref = useRef(null);
  const [state, setState] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-ref-access-in-effect.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-ref-access-in-effect.expect.md


## Input

```javascript
// @validateRefAccessDuringRender
import {useEffect, useRef, useState} from 'react';

function Component() {
  const ref = useRef(null);
  const [state, setState] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-ref-access-in-unused-callback-nested.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-ref-access-in-unused-callback-nested.expect.md


## Input

```javascript
// @validateRefAccessDuringRender
import {useEffect, useRef, useState} from 'react';

function Component() {
  const ref = useRef(null);
  const [state, setState] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/arrow-expr-directive.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/arrow-expr-directive.expect.md


## Input

```javascript
function Component() {
  'use strict';
  let [count, setCount] = React.useState(0);
  const update = () => {
    'worklet';
    setCount(count => count + 1);
  };
  return...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/babel-existing-react-import.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/babel-existing-react-import.expect.md


## Input

```javascript
import {useState, useMemo} from 'react';

function Component(props) {
  const [x] = useState(0);
  const...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/babel-existing-react-kitchensink-import.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/babel-existing-react-kitchensink-import.expect.md


## Input

```javascript
import * as React from 'react';
import {useState, useMemo} from 'react';

function Component(props) {
  const [x] = useState(0);
  const...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/babel-existing-react-namespace-import.expect.md?start=6">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/babel-existing-react-namespace-import.expect.md

...lculateExpensiveNumber} from 'shared-runtime';

function Component(props) {
  const [x] = React.useState(0);
  const expensiveNumber = React.useMemo(() => calculateExpensiveNumber(x), [x]);

  return...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/babel-existing-react-runtime-import.expect.md?start=7">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/babel-existing-react-runtime-import.expect.md

...lculateExpensiveNumber} from 'shared-runtime';

function Component(props) {
  const [x] = React.useState(0);
  const expensiveNumber = React.useMemo(() => calculateExpensiveNumber(x), [x]);

  return...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/concise-arrow-expr.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/concise-arrow-expr.expect.md


## Input

```javascript
function component() {
  let [x, setX] = useState(0);
  const handler = v => setX(v);
  return <Foo handler={handler}></Foo>;
}

```

##...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/conditional-set-state-in-render.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/conditional-set-state-in-render.expect.md


## Input

```javascript
function Component(props) {
  const [x, setX] = useState(0);

  const foo = () => {
    setX(1);
  };

  if (props.cond) {
    setX(2);
    foo();
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/controlled-input.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/controlled-input.expect.md


## Input

```javascript
import {useState} from 'react';
function component() {
  let [x, setX] = useState(0);
  const handler = event...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-conditionally-in-effect.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-conditionally-in-effect.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component({value, enabled}) {
  const [localValue, setLocalValue] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-default-props.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-default-props.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

export default function Component({input = 'empty'}) {
  const [currInput,...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-local-state-in-effect.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-local-state-in-effect.expect.md

...lidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"

import {useEffect, useState} from 'react';

function Component({shouldChange}) {
  const [count, setCount] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-local-state-and-component-scope.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-local-state-and-component-scope.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component({firstName}) {
  const [lastName, setLastName] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-setter-call-outside-effect-no-error.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-setter-call-outside-effect-no-error.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component({initialName}) {
  const [name, setName] = useState('');

 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-setter-ternary.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-setter-ternary.expect.md

...@outputMode:"lint"

function Component({value}) {
  const [checked, setChecked] = useState('');

  useEffect(() => {
    setChecked(value === '' ? [] : value.split(','));
  },...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-setter-used-outside-effect-no-error.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-setter-used-outside-effect-no-error.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

function MockComponent({onSet}) {
  return <div onClick={() => onSet('clicked')...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-with-side-effect.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-prop-with-side-effect.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component({value}) {
  const [localValue, setLocalValue] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-ref-and-state-no-error.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/derived-state-from-ref-and-state-no-error.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState, useRef} from 'react';

export default function Component({test}) {
  const [local, setLocal]...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-contains-local-function-call.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-contains-local-function-call.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component({propValue}) {
  const [value, setValue] = useState(null);

...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-contains-prop-function-call-no-error.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-contains-prop-function-call-no-error.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component({propValue, onChange}) {
  const [value, setValue] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-used-in-dep-array-still-errors.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-used-in-dep-array-still-errors.expect.md

...@loggerTestOnly @outputMode:"lint"

function Component({prop}) {
  const [s, setS] = useState(0);
  useEffect(() => {
    setS(prop);
  }, [prop, setS]);

  return <div>{prop}</div>;
}

```...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-with-cleanup-function-depending-on-derived-computation-value.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-with-cleanup-function-depending-on-derived-computation-value.expect.md

...lidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"

import {useEffect, useState} from 'react';

function Component(file: File) {
  const [imageUrl, setImageUrl] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-with-global-function-call-no-error.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/effect-with-global-function-call-no-error.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component({propValue}) {
  const [value, setValue] = useState(null);
...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/function-expression-mutation-edge-case.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/function-expression-mutation-edge-case.expect.md

...@loggerTestOnly @outputMode:"lint"

function Component() {
  const [foo, setFoo] = useState({});
  const [bar, setBar] = useState(new Set());

  /*
   * isChanged is considered context...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/invalid-derived-computation-in-effect.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/invalid-derived-computation-in-effect.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component() {
  const [firstName, setFirstName] = useState('Taylor');
...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/invalid-derived-state-from-computed-props.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/invalid-derived-state-from-computed-props.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

export default function Component(props) {
  const [displayValue,...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/invalid-derived-state-from-destructured-props.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/invalid-derived-state-from-destructured-props.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState} from 'react';

export default function Component({props}) {
  const [fullName, setFullName] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/ref-conditional-in-effect-no-error.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/effect-derived-computations/ref-conditional-in-effect-no-error.expect.md

...alidateNoDerivedComputationsInEffects_exp @loggerTestOnly @outputMode:"lint"
import {useEffect, useState, useRef} from 'react';

export default function Component({test}) {
  const [local, setLocal]...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-component-tag-function.expect.md?start=22">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-component-tag-function.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-children.expect.md?start=25">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-children.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.bug-invariant-local-or-context-references.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.bug-invariant-local-or-context-references.expect.md


## Input

```javascript
import {useState} from 'react';
import {bar} from './bar';

export const useFoot = () => {
  const [, setState]...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-access-ref-in-state-initializer.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-access-ref-in-state-initializer.expect.md


## Input

```javascript
import {useRef, useState} from 'react';

function Component(props) {
  const ref = useRef(props.value);
  const [state]...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-assign-hook-to-local.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-assign-hook-to-local.expect.md


## Input

```javascript
function Component(props) {
  const x = useState;
  const state = x(null);
  return state[0];
}

```


## Error

```
Found 1 error:

Error:...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-conditional-call-aliased-react-hook.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-conditional-call-aliased-react-hook.expect.md


## Input

```javascript
import {useState as state} from 'react';

function Component(props) {
  let s;
  if (props.cond) {
    [s] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-conditional-setState-in-useMemo.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-conditional-setState-in-useMemo.expect.md


## Input

```javascript
function Component({item, cond}) {
  const [prevItem, setPrevItem] = useState(item);
  const [state, setState] = useState(0);

  useMemo(() => {
    if (cond) {
     ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-derived-computation-in-effect.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-derived-computation-in-effect.expect.md


## Input

```javascript
// @validateNoDerivedComputationsInEffects
import {useEffect, useState} from 'react';

function BadExample() {
  const [firstName, setFirstName] = useState('Taylor');...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-destructure-assignment-to-global.expect.md?start=20">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-destructure-assignment-to-global.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-destructure-to-local-global-variables.expect.md?start=22">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-destructure-to-local-global-variables.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-function-expression-mutates-immutable-value.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-function-expression-mutates-immutable-value.expect.md


## Input

```javascript
function Component(props) {
  const [x, setX] = useState({value: ''});
  const onChange = e => {
    // INVALID! should use copy-on-write and pass the...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-global-reassignment-indirect.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-global-reassignment-indirect.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';

let someGlobal = false;

function Component() {
  const [state, setState] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-hoisting-setstate.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-hoisting-setstate.expect.md


## Input

```javascript
// @enableNewMutationAliasingModel
import {useEffect, useState} from 'react';
import {Stringify} from 'shared-runtime';

function Foo() {
  /**
   *...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-setState-in-render-unbound-state.expect.md?start=7">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-setState-in-render-unbound-state.expect.md

... // infer the type of destructured properties after a hole in the array
  let [, setState] = useState();
  setState(1);
  return props.foo;
}

export const FIXTURE_ENTRYPOINT = {
  fn: Component,
...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-setState-in-useMemo-indirect-useCallback.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-setState-in-useMemo-indirect-useCallback.expect.md

...from 'react';

function useKeyedState({key, init}) {
  const [prevKey, setPrevKey] = useState(key);
  const [state, setState] = useState(init);

  const fn = useCallback(() => {
   ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-setState-in-useMemo.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-setState-in-useMemo.expect.md


## Input

```javascript
function useKeyedState({key, init}) {
  const [prevKey, setPrevKey] = useState(key);
  const [state, setState] = useState(init);

  useMemo(() => {
    setPrevKey(key);
   ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-setstate-unconditional-with-keyed-state.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-setstate-unconditional-with-keyed-state.expect.md


## Input

```javascript
// @validateNoSetStateInRender @enableUseKeyedState
import {useState} from 'react';

function Component() {
  const [total, setTotal] = useState(0);
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-unconditional-set-state-hook-return-in-render.expect.md?start=10">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-unconditional-set-state-hook-return-in-render.expect.md

... setState(1);
  aliased(2);

  return state;
}

function useCustomState(init) {
  return useState(init);
}

```


## Error

```
Found 2 errors:

Error: Cannot call setState during...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-unconditional-set-state-in-render.expect.md?start=4">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-unconditional-set-state-in-render.expect.md

...t

```javascript
// @validateNoSetStateInRender
function Component(props) {
  const [x, setX] = useState(0);
  const aliased = setX;

  setX(1);
  aliased(2);

  return x;
}

```


## Error

```
Found...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-unconditional-set-state-prop-in-render.expect.md?start=26">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-unconditional-set-state-prop-in-render.expect.md

...store the previous value in state and update conditionally: https://react.dev/reference/react/useState#storing-information-from-previous-renders
* To derive data from other state/props, compute the...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.modify-state-2.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.modify-state-2.expect.md


## Input

```javascript
import {useState} from 'react';

function Foo() {
  const [state, setState] = useState({foo: {bar: 3}});
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.modify-state.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.modify-state.expect.md


## Input

```javascript
import {useState} from 'react';

function Foo() {
  let [state, setState] = useState({});
  state.foo = 1;
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.reassign-global-fn-arg.expect.md?start=31">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.reassign-global-fn-arg.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.reassignment-to-global-indirect.expect.md?start=24">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.reassignment-to-global-indirect.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.reassignment-to-global.expect.md?start=21">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.reassignment-to-global.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-inferred-mutation-in-logger.expect.md?start=8">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-inferred-mutation-in-logger.expect.md

...'react';

component Component(id) {
  const items = useFragment();

  const [index, setIndex] = useState(0);

  const logData = useMemo(() => {
    const item = items[index];
    return {
      key:...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-in-render-after-loop-break.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-in-render-after-loop-break.expect.md

...@validateNoSetStateInRender
function Component(props) {
  const [state, setState] = useState(false);
  for (const _ of props) {
    if (props.cond) {
      break;
    } else {
     ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-in-render-after-loop.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-in-render-after-loop.expect.md

...@validateNoSetStateInRender
function Component(props) {
  const [state, setState] = useState(false);
  for (const _ of props) {
  }
  setState(true);
  return state;
}

```


##...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-in-render-with-loop-throw.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-in-render-with-loop-throw.expect.md

...@validateNoSetStateInRender
function Component(props) {
  const [state, setState] = useState(false);
  for (const _ of props) {
    if (props.cond) {
      break;
    } else {
      throw...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-lambda.expect.md?start=4">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-lambda.expect.md

...t

```javascript
// @validateNoSetStateInRender
function Component(props) {
  const [x, setX] = useState(0);

  const foo = () => {
    setX(1);
  };
  foo();

  return [x];
}

```


##...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-nested-function-expressions.expect.md?start=4">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.unconditional-set-state-nested-function-expressions.expect.md

...t

```javascript
// @validateNoSetStateInRender
function Component(props) {
  const [x, setX] = useState(0);

  const foo = () => {
    setX(1);
  };

  const bar = () => {
    foo();
  };

  const...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.update-global-should-bailout.expect.md?start=26">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.update-global-should-bailout.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/exhaustive-deps/error.invalid-exhaustive-deps-disallow-unused-stable-types.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/exhaustive-deps/error.invalid-exhaustive-deps-disallow-unused-stable-types.expect.md


## Input

```javascript
// @validateExhaustiveMemoizationDependencies

import {useState} from 'react';
import {Stringify} from 'shared-runtime';

function Component() {
  const...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/exhaustive-deps/exhaustive-deps-allow-nonreactive-stable-types-as-extra-deps.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/exhaustive-deps/exhaustive-deps-allow-nonreactive-stable-types-as-extra-deps.expect.md

...@validateExhaustiveEffectDependencies:"all"
import {
  useCallback,
  useTransition,
  useState,
  useOptimistic,
  useActionState,
  useRef,
  useReducer,
  useEffect,
} from...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/exhaustive-deps/exhaustive-deps.expect.md?start=45">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/exhaustive-deps/exhaustive-deps.expect.md

...   f.push(x);
    return f;
  }, [x]);
}

function useHook7(x) {
  const [state, setState] = useState(true);
  const f = () => {
    setState(x => !x);
  };
  return useCallback(() => {
    f();
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/existing-variables-with-c-name.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/existing-variables-with-c-name.expect.md

...ngMemoizationGuarantees:false @validateExhaustiveMemoizationDependencies:false
import {useMemo, useState} from 'react';
import {ValidateMemoization} from 'shared-runtime';

function Component(props)...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fast-refresh-dont-refresh-const-changes-prod.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fast-refresh-dont-refresh-const-changes-prod.expect.md


## Input

```javascript
// @compilationMode:"infer"
import {useEffect, useMemo, useState} from 'react';
import {ValidateMemoization} from 'shared-runtime';

let pretendConst =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fast-refresh-refresh-on-const-changes-dev.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fast-refresh-refresh-on-const-changes-dev.expect.md

...nSourceFileChanges @validateExhaustiveMemoizationDependencies:false
import {useEffect, useMemo, useState} from 'react';
import {ValidateMemoization} from 'shared-runtime';

let pretendConst =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fast-refresh-reloading.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fast-refresh-reloading.expect.md


## Input

```javascript
// @enableResetCacheOnSourceFileChanges
import {useMemo, useState} from 'react';
import {ValidateMemoization} from 'shared-runtime';

function Component(props)...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fbt/repro-separately-memoized-fbt-param.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fbt/repro-separately-memoized-fbt-param.expect.md


## Input

```javascript
import {fbt} from 'fbt';
import {useState} from 'react';

const MIN = 10;

function Component() {
  const [count, setCount] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/flag-enable-emit-hook-guards.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/flag-enable-emit-hook-guards.expect.md


## Input

```javascript
// @enableEmitHookGuards
import {createContext, useContext, useEffect, useState} from 'react';
import {
  CONST_STRING0,
  ObjectWithHooks,
  getNumber,
  identity,
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/function-expr-directive.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/function-expr-directive.expect.md


## Input

```javascript
function Component() {
  'use strict';
  let [count, setCount] = React.useState(0);
  function update() {
    'worklet';
    setCount(count => count + 1);
  }
  return...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/hoisting-setstate-captured-indirectly-jsx.expect.md?start=7">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/hoisting-setstate-captured-indirectly-jsx.expect.md

... const onClick = response => {
    setState(DISABLED_FORM);
  };

  const [state, setState] = useState();
  const handleLogout = useCallback(() => {
    setState(DISABLED_FORM);
  }, [setState]);
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/hooks-with-React-namespace.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/hooks-with-React-namespace.expect.md


## Input

```javascript
function Component() {
  const [x, setX] = React.useState(1);
  return x;
}

export const FIXTURE_ENTRYPOINT = {
  fn: Component,
  params:...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/inadvertent-mutability-readonly-lambda.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/inadvertent-mutability-readonly-lambda.expect.md


## Input

```javascript
function Component(props) {
  const [value, setValue] = useState(null);
  // NOTE: this lambda does not capture any mutable values (only the state setter)
  //...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-functions-component-with-hook-call.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-functions-component-with-hook-call.expect.md

...put

```javascript
// @compilationMode:"infer"
function Component(props) {
  const [state, _] = useState(null);
  return [state];
}

```

## Code

```javascript
import { c as _c } from...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-functions-hook-with-hook-call.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-functions-hook-with-hook-call.expect.md


## Input

```javascript
// @compilationMode:"infer"
function useStateValue(props) {
  const [state, _] = useState(null);
  return [state];
}

```

##...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/inner-function/nullable-objects/assume-invoked/conditional-call.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/inner-function/nullable-objects/assume-invoked/conditional-call.expect.md


## Input

```javascript
import {useState} from 'react';
import {useIdentity} from 'shared-runtime';

/**
 * Assume that conditionally...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/inner-function/nullable-objects/assume-invoked/direct-call.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/inner-function/nullable-objects/assume-invoked/direct-call.expect.md


## Input

```javascript
import {useState} from 'react';
import {useIdentity} from 'shared-runtime';

function useMakeCallback({obj}:...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/inner-function/nullable-objects/assume-invoked/use-memo-returned.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/inner-function/nullable-objects/assume-invoked/use-memo-returned.expect.md


## Input

```javascript
// @validateExhaustiveMemoizationDependencies:false
import {useState, useMemo} from 'react';
import {useIdentity} from 'shared-runtime';

/**
 * Assume that...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-set-state-in-effect-verbose-derived-event.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-set-state-in-effect-verbose-derived-event.expect.md

...Input

```javascript
// @validateNoSetStateInEffects @enableVerboseNoSetStateInEffect
import {useState, useEffect} from 'react';

function VideoPlayer({isPlaying}) {
  const [wasPlaying,...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-set-state-in-effect-verbose-force-update.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-set-state-in-effect-verbose-force-update.expect.md

...Input

```javascript
// @validateNoSetStateInEffects @enableVerboseNoSetStateInEffect
import {useState, useEffect} from 'react';

const externalStore = {
  value: 0,
  subscribe(callback) {
   ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-set-state-in-effect-verbose-non-local-derived.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-set-state-in-effect-verbose-non-local-derived.expect.md

...Input

```javascript
// @validateNoSetStateInEffects @enableVerboseNoSetStateInEffect
import {useState, useEffect} from 'react';

function Child({firstName, lastName}) {
  const [fullName,...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect-namespace.expect.md?start=6">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect-namespace.expect.md

...* as React from 'react';

function Component() {
  const [state, setState] = React.useState(0);
  React.useEffect(() => {
    setState(s => s + 1);
  });
  return state;
}

```

##...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect-new-expression-default-param.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect-new-expression-default-param.expect.md

...@loggerTestOnly @validateNoSetStateInEffects @outputMode:"lint"
import {useEffect, useState} from 'react';

// Bug: NewExpression default param value should not prevent set-state-in-effec...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect-transitive.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect-transitive.expect.md

...@loggerTestOnly @validateNoSetStateInEffects @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component() {
  const [state, setState] = useState(0);
  const f = ()...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect-via-useEffectEvent.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect-via-useEffectEvent.expect.md

...@validateNoSetStateInEffects @outputMode:"lint"
import {useEffect, useEffectEvent, useState} from 'react';

function Component() {
  const [state, setState] = useState(0);
  const...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/invalid-setState-in-useEffect.expect.md

...@loggerTestOnly @validateNoSetStateInEffects @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component() {
  const [state, setState] = useState(0);
  useEffect(()...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/log-pruned-memoization.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/log-pruned-memoization.expect.md


## Input

```javascript
// @loggerTestOnly
import {createContext, use, useState} from 'react';
import {
  Stringify,
  identity,
  makeObject_Primitives,
  useHook,
} from...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/merge-consecutive-scopes-deps-subset-of-decls.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/merge-consecutive-scopes-deps-subset-of-decls.expect.md


## Input

```javascript
import {useState} from 'react';

function Component() {
  const [count, setCount] = useState(0);
  return (
   ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/merge-consecutive-scopes-objects.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/merge-consecutive-scopes-objects.expect.md


## Input

```javascript
import {useState} from 'react';
import {Stringify} from 'shared-runtime';

// This is a translation of the...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/merge-consecutive-scopes.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/merge-consecutive-scopes.expect.md


## Input

```javascript
import {useState} from 'react';
import {Stringify} from 'shared-runtime';

function Component() {
  let [state,...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/module-scoped-bindings.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/module-scoped-bindings.expect.md


## Input

```javascript
import React from 'react';
import {useState} from 'react';

const CONST = true;

let NON_REASSIGNED_LET = true;

let REASSIGNED_LET =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/multiple-calls-to-hoisted-callback-from-other-callback.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/multiple-calls-to-hoisted-callback-from-other-callback.expect.md


## Input

```javascript
import {useState} from 'react';

function Component(props) {
  const [_state, setState] = useState();
  const a...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nested-function-shadowed-identifiers.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nested-function-shadowed-identifiers.expect.md


## Input

```javascript
function Component(props) {
  const [x, setX] = useState(null);

  const onChange = e => {
    let x = null; // intentionally shadow the original x
   ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.reassignment-to-global-indirect.expect.md?start=25">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.reassignment-to-global-indirect.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.reassignment-to-global.expect.md?start=22">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.reassignment-to-global.expect.md

...on when the component happens to re-render. If this variable is used in rendering, use useState instead. Otherwise, consider updating it in an effect. (https://react.dev/reference/rules/compo...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/nullable-objects-assume-invoked-direct-call.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/nullable-objects-assume-invoked-direct-call.expect.md


## Input

```javascript
// @enableNewMutationAliasingModel
import {useState} from 'react';
import {useIdentity} from 'shared-runtime';

function useMakeCallback({obj}:...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/repro-mutate-new-set-of-frozen-items-in-callback.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/repro-mutate-new-set-of-frozen-items-in-callback.expect.md

...ableNewMutationAliasingModel:true

export const App = () => {
  const [selected, setSelected] = useState(new Set<string>());
  const onSelectedChange = (value: string) => {
    const newSelected =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/object-method-shorthand-hook-dep.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/object-method-shorthand-hook-dep.expect.md


## Input

```javascript
import {createHookWrapper} from 'shared-runtime';
import {useState} from 'react';
function useFoo() {
  const [state, _setState] = useState(false);
  return {
  ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/object-shorthand-method-nested.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/object-shorthand-method-nested.expect.md


## Input

```javascript
import {useState} from 'react';
import {createHookWrapper} from 'shared-runtime';

function useHook({value}) {
...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/preserve-use-callback-stable-built-ins.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/preserve-use-callback-stable-built-ins.expect.md

...@validatePreserveExistingMemoizationGuarantees
import {
  useCallback,
  useTransition,
  useState,
  useOptimistic,
  useActionState,
  useRef,
  useReducer,
} from 'react';

function useFoo()...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useCallback-in-other-reactive-block.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useCallback-in-other-reactive-block.expect.md


## Input

```javascript
// @validatePreserveExistingMemoizationGuarantees
import {useCallback, useState} from 'react';
import {arrayPush} from 'shared-runtime';

// useCallback-produced values can...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useMemo-in-other-reactive-block.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useMemo-in-other-reactive-block.expect.md


## Input

```javascript
// @validatePreserveExistingMemoizationGuarantees
import {useMemo, useState} from 'react';
import {arrayPush} from 'shared-runtime';

// useMemo-produced values can exist...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-use-memo-unused-state.expect.md?start=8">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-use-memo-unused-state.expect.md

...useFoo() {
  const [, /* state value intentionally not captured */ setState] = useState();

  return useCallback(() => {
    setState(x => x + 1);
  }, []);
}

export const...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/react-namespace.expect.md?start=8">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/react-namespace.expect.md

...foo = React.useContext(FooContext);
  const ref = React.useRef();
  const [x, setX] = React.useState(false);
  const onClick = () => {
    setX(true);
    ref.current = true;
  };
  return <div...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-control-dependency-phi-setState-type.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-control-dependency-phi-setState-type.expect.md


## Input

```javascript
import invariant from 'invariant';
import {useState} from 'react';

function Component(props) {
  const [x, setX] = useState(false);
  const [y,...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-context-var-reassign-no-scope.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-context-var-reassign-no-scope.expect.md


## Input

```javascript
import {useState, useEffect} from 'react';
import {invoke, Stringify} from 'shared-runtime';

function...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-dispatch-spread-event-marks-event-frozen.expect.md?start=6">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-dispatch-spread-event-marks-event-frozen.expect.md

...Component() {
  const dispatch = useDispatch();
  // const [state, setState] = useState(0);

  return (
    <div>
      <input
        type="file"
        onChange={event => {
      ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-dont-memoize-array-with-capturing-map-after-hook.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-dont-memoize-array-with-capturing-map-after-hook.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';
import {mutate} from 'shared-runtime';

function Component(props) {
  const x =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-dont-memoize-array-with-mutable-map-after-hook.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-dont-memoize-array-with-mutable-map-after-hook.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';
import {mutate} from 'shared-runtime';

function Component(props) {
  const x =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-duplicate-import-specifier.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-duplicate-import-specifier.expect.md


## Input

```javascript
import type {SetStateAction, Dispatch} from 'react';
import {useState} from 'react';

function Component(_props: {}) {
  const [x, _setX]: [number, Dispatch<SetState...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-memoize-array-with-immutable-map-after-hook.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-memoize-array-with-immutable-map-after-hook.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';

function Component(props) {
  const x = [props.value];
  useEffect(() => {},...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-mutable-range-extending-into-ternary.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-mutable-range-extending-into-ternary.expect.md


## Input

```javascript
import {useState} from 'react';

function Component(props) {
  const items = props.items ? props.items.slice()...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-stale-closure-forward-reference.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-stale-closure-forward-reference.expect.md


## Input

```javascript
import {useState} from 'react';

/**
 * Repro for https://github.com/facebook/react/issues/35122
 *
 *...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-unreachable-code-early-return-in-useMemo.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-unreachable-code-early-return-in-useMemo.expect.md

...ableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions
import {useMemo, useState} from 'react';
import {ValidateMemoization, identity} from 'shared-runtime';

function...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/resolve-react-hooks-based-on-import-name.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/resolve-react-hooks-based-on-import-name.expect.md


## Input

```javascript
import {useState as useReactState} from 'react';

function Component() {
  const [state, setState] =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid-rules-of-hooks-9718e30b856c.expect.md?start=10">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid-rules-of-hooks-9718e30b856c.expect.md

...  if (a) return;
  if (b) {
    console.log('true');
  } else {
    console.log('false');
  }
  useState();
}

```


## Error

```
Found 1 error:

Error: Hooks must always be called in a consistent...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid-rules-of-hooks-c906cace44e9.expect.md?start=7">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid-rules-of-hooks-c906cace44e9.expect.md

...might not warn otherwise.
// This *must* be invalid.
function useHook() {
  if (a) return;
  useState();
}

```


## Error

```
Found 1 error:

Error: Hooks must always be called in a consistent...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid-rules-of-hooks-f3d6c5e9c83d.expect.md?start=10">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid-rules-of-hooks-f3d6c5e9c83d.expect.md

...  if (b) {
    console.log('true');
  } else {
    console.log('false');
  }
  if (a) return;
  useState();
}

```


## Error

```
Found 1 error:

Error: Hooks must always be called in a consistent...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid-rules-of-hooks-f69800950ff0.expect.md?start=7">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid-rules-of-hooks-f69800950ff0.expect.md

...not warn otherwise.
// This *must* be invalid.
function useHook({bar}) {
  let foo1 = bar && useState();
  let foo2 = bar || useState();
  let foo3 = bar ?? useState();
}

```


## Error

```
Found...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid.invalid-rules-of-hooks-449a37146a83.expect.md?start=8">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid.invalid-rules-of-hooks-449a37146a83.expect.md

...{
  return function ComponentWithHookInsideCallback() {
    function handleClick() {
      useState();
    }
  };
}

```


## Error

```
Found 1 error:

Error: Hooks must be called at the top...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid.invalid-rules-of-hooks-76a74b4666e9.expect.md?start=6">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid.invalid-rules-of-hooks-76a74b4666e9.expect.md

...be confusing.
function ComponentWithHookInsideCallback() {
  function handleClick() {
    useState();
  }
}

```


## Error

```
Found 1 error:

Error: Hooks must be called at the top level in...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0e2214abc294.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0e2214abc294.expect.md

...endering
function RegressionTest() {
  if (page == null) {
    throw new Error('oh no!');
  }
  useState();
}

```

## Code

```javascript
// Valid because exceptions abort rendering
function...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2e405c78cb80.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2e405c78cb80.expect.md


## Input

```javascript
// Valid because hooks can call hooks.
function useHook() {
  useState() && a;
}

```

## Code

```javascript
// Valid because hooks can call hooks.
function...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-69521d94fa03.expect.md?start=9">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-69521d94fa03.expect.md

...{
    if (propName === true) {
    } else {
    }
  }
  const [myState, setMyState] = useState(null);
}

```

## Code

```javascript
// Valid because the neither the condition nor the loop...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-c5d1f3143c4c.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-c5d1f3143c4c.expect.md

...for incorrectly flagged valid code.
function RegressionTest() {
  const foo = cond ? a : b;
  useState();
}

```

## Code

```javascript
// Regression test for incorrectly flagged valid...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.expect.md

...@expectNothingCompiled
// Valid because they're not matching use[A-Z].
fooState();
_use();
_useState();
use_hook();
// also valid because it's not matching the PascalCase namespace
jest.useFakeTim...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.bail.rules-of-hooks-e0a5db3ae21e.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.bail.rules-of-hooks-e0a5db3ae21e.expect.md

...@skip
// Unsupported input

// Valid because hooks can call hooks.
function useHook() {
  useState();
}
const whatever = function useHook() {
  useState();
};
const useHook1 = () => {
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.bail.rules-of-hooks-fadd52c1e460.expect.md?start=11">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.bail.rules-of-hooks-fadd52c1e460.expect.md

... doing it,
// consider specific cases documented above that contain reasoning.
function a() {
  useState();
}
const whatever = function b() {
  useState();
};
const c = () => {
  useState();
};
let d...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.error.rules-of-hooks-e29c874aa913.expect.md?start=8">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.error.rules-of-hooks-e29c874aa913.expect.md

... might not warn otherwise.
// This *must* be invalid.
function useHook() {
  try {
    f();
    useState();
  } catch {}
}

```


## Error

```
Found 1 error:

Error: Hooks must always be called in a...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.expect.md?start=12">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.expect.md

... they are confusing anyway due to the use*() convention
// already being associated with Hooks.
useState();
if (foo) {
  const foo = React.useCallback(() => {});
}
useCustomHook();

```

##...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.expect.md

...@expectNothingCompiled @skip
// Passed but should have failed

(class {
  useHook() {
    useState();
  }
});

```

## Code

```javascript
// @expectNothingCompiled @skip
// Passed but should...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.expect.md?start=6">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.expect.md

...have failed

class ClassComponentWithHook extends React.Component {
  render() {
    React.useState();
  }
}

```

## Code

```javascript
// @expectNothingCompiled @skip
// Passed but should...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.expect.md

...@expectNothingCompiled @skip
// Passed but should have failed

(class {
  h = () => {
    useState();
  };
});

```

## Code

```javascript
// @expectNothingCompiled @skip
// Passed but should...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.expect.md

...@expectNothingCompiled @skip
// Passed but should have failed

(class {
  i() {
    useState();
  }
});

```

## Code

```javascript
// @expectNothingCompiled @skip
// Passed but should...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e675f0a672d8.expect.md?start=8">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e675f0a672d8.expect.md

...dangerous and might not warn otherwise.
// This *must* be invalid.
function renderItem() {
  useState();
}

function List(props) {
  return props.items.map(renderItem);
}

```

## Code

```javascri...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.expect.md

...@expectNothingCompiled @skip
// Passed but should have failed

(class {
  useHook = () => {
    useState();
  };
});

```

## Code

```javascript
// @expectNothingCompiled @skip
// Passed but should...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/ssr/optimize-ssr.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/ssr/optimize-ssr.expect.md

...nput

```javascript
// @enableOptimizeForSSR
function Component() {
  const [state, setState] = useState(0);
  const ref = useRef(null);
  const onChange = e => {
    setState(e.target.value);
  };
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/ssr/ssr-infer-event-handlers-from-setState.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/ssr/ssr-infer-event-handlers-from-setState.expect.md

...nput

```javascript
// @enableOptimizeForSSR
function Component() {
  const [state, setState] = useState(0);
  const ref = useRef(null);
  const onChange = e => {
    // The known setState call...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/ssr/ssr-infer-event-handlers-from-startTransition.expect.md?start=6">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/ssr/ssr-infer-event-handlers-from-startTransition.expect.md

...Component() {
  const [, startTransition] = useTransition();
  const [state, setState] = useState(0);
  const ref = useRef(null);
  const onChange = e => {
    // The known startTransition...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-callback-simple.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-callback-simple.expect.md

...idateExhaustiveMemoizationDependencies:false
function component() {
  const [count, setCount] = useState(0);
  const increment = useCallback(() => setCount(count + 1));

  return <Foo onClick={increme...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-effect-cleanup-reassigns.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-effect-cleanup-reassigns.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';

/**
 * Example of a function expression whose return value shouldn't have
 * a...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/useEffect-snap-test.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/useEffect-snap-test.expect.md


## Input

```javascript
import {useEffect, useState} from 'react';

function Component() {
  const [state, setState] = useState('hello');
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-set-state-in-useEffect-from-ref.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-set-state-in-useEffect-from-ref.expect.md


## Input

```javascript
// @validateNoSetStateInEffects @outputMode:"lint"
import {useState, useRef, useEffect} from 'react';

function Tooltip() {
  const ref = useRef(null);
  const...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-effect-from-ref-arithmetic.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-effect-from-ref-arithmetic.expect.md

...@validateNoSetStateInEffects @enableAllowSetStateFromRefsInEffects @outputMode:"lint"
import {useState, useRef, useLayoutEffect} from 'react';

function Component() {
  const ref = useRef({size:...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-effect-from-ref-array-index.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-effect-from-ref-array-index.expect.md

...@validateNoSetStateInEffects @enableAllowSetStateFromRefsInEffects @outputMode:"lint"
import {useState, useRef, useEffect} from 'react';

function Component() {
  const ref = useRef([1, 2, 3, 4,...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-effect-from-ref-function-call.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-effect-from-ref-function-call.expect.md

...@validateNoSetStateInEffects @enableAllowSetStateFromRefsInEffects @outputMode:"lint"
import {useState, useRef, useEffect} from 'react';

function Component() {
  const ref = useRef(null);
  const...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-controlled-by-ref-value.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-controlled-by-ref-value.expect.md

...owSetStateFromRefsInEffects @loggerTestOnly @compilationMode:"infer" @outputMode:"lint"
import {useState, useRef, useEffect} from 'react';

function Component({x, y}) {
  const previousXRef =...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-listener-transitive.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-listener-transitive.expect.md


## Input

```javascript
// @validateNoSetStateInEffects @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component() {
  const [state, setState] = useState(0);
  useEffect(()...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-listener.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-listener.expect.md


## Input

```javascript
// @validateNoSetStateInEffects @outputMode:"lint"
import {useEffect, useState} from 'react';

function Component() {
  const [state, setState] = useState(0);
  useEffect(()...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-via-useEffectEvent-listener.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-via-useEffectEvent-listener.expect.md

...NoSetStateInEffects @loggerTestOnly @compilationMode:"infer"
import {useEffect, useEffectEvent, useState} from 'react';

const shouldSetState = false;

function Component() {
  const [state,...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-via-useEffectEvent-with-ref.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useEffect-via-useEffectEvent-with-ref.expect.md

...@enableAllowSetStateFromRefsInEffects @loggerTestOnly @compilationMode:"infer"
import {useState, useRef, useEffect, useEffectEvent} from 'react';

function Component({x, y}) {
  const...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useLayoutEffect-from-ref.expect.md?start=5">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/valid-setState-in-useLayoutEffect-from-ref.expect.md

...@validateNoSetStateInEffects @enableAllowSetStateFromRefsInEffects @outputMode:"lint"
import {useState, useRef, useLayoutEffect} from 'react';

function Tooltip() {
  const ref = useRef(null);
 ...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/validate-no-set-state-in-render-uncalled-function-with-mutable-range-is-valid.expect.md?start=7">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/validate-no-set-state-in-render-uncalled-function-with-mutable-range-is-valid.expect.md

...{
  const logEvent = useLogging(props.appId);
  const [currentStep, setCurrentStep] = useState(0);

  // onSubmit gets the same mutable range as `logEvent`, since that is called
  // later....
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/validate-no-set-state-in-render-unconditional-lambda-which-conditionally-sets-state-ok.expect.md?start=2">
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/validate-no-set-state-in-render-unconditional-lambda-which-conditionally-sets-state-ok.expect.md


## Input

```javascript
// @validateNoSetStateInRender
import {useState} from 'react';

function Component(props) {
  const [x, setX] = useState(0);

  const foo = ()...
</result>

<result contentUrl="/repos/facebook/react/main/files/compiler/packages/snap/src/sprout/README.md?start=62">
compiler/packages/snap/src/sprout/README.md

...enforce that only `isComponent: true` fixtures can use React hooks.
    ```ts
    import {useState} from 'react';
    ```

- If your fixture wants to export multiple functions to Sprout to run,...
</result>

<result contentUrl="/repos/facebook/react/main/files/packages/react-devtools/CHANGELOG.md?start=477">
packages/react-devtools/CHANGELOG.md

...://github.com/bvaughn) in [#21520](https://github.com/facebook/react/pull/21520))
* Bugfix for `useState()` object with `hasOwnProperty` key ([bvaughn](https://github.com/bvaughn) in [#21524](https://...
</result>

<result contentUrl="/repos/facebook/react/main/files/packages/react/README.md?start=7">
packages/react/README.md

...mance.html#use-the-production-build) when deploying your application.

## Usage

```js
import { useState } from 'react';
import { createRoot } from 'react-dom/client';

function Counter() {
  const...
</result>
</results>

Note: By default, only markdown files (.md, .mdx) are searched. To search other file types, use a glob parameter like ?glob=**/* or ?glob=**/*.ts