* Add local eslint rule to validate markdown codeblocks with React Compiler
In https://github.com/facebook/react/pull/34462 for example, we found an issue where the compiler was incorrectly validating an example straight from the docs.
In order to find more issues like this + also provide more feedback to doc authors on valid/invalid patterns, this PR adds a new local eslint rule which validates all markdown codeblocks containing components/hooks with React Compiler. An autofixer is also provided.
To express that a codeblock has an expected error, we can use the following metadata:
```ts
// pseudo type def
type MarkdownCodeBlockMetadata = {
expectedErrors?: {
'react-compiler'?: number[];
};
};
```
and can be used like so:
````
```js {expectedErrors: {'react-compiler': [4]}}
// ❌ setState directly in render
function Component({value}) {
const [count, setCount] = useState(0);
setCount(value); // error on L4
return <div>{count}</div>;
}
```
````
Because this is defined as a local rule, we don't have the same granular reporting that `eslint-plugin-react-hooks` yet. I can look into that later but for now this first PR just sets us up with something basic.
* fix compiler errors
I went through the list of existing errors and tried to separate the expected errors from those that seem to be flagging unexpected issues. In particular, our effects validations are flagging patterns that our own docs examples use. I added todos for these and will follow up later.
* Update nextjs link with the latest URL
The previous link redirected users to a 404 page.
* Update src/content/reference/react/useDeferredValue.md
---------
Co-authored-by: Ricky <rickhanlonii@gmail.com>
* API docs for useDeferredValue's initialValue
Updates the API docs for `useDeferredValue` to include the
`initialValue` option, added in
https://github.com/facebook/react/pull/27500.
This feature is slated for release in React 19.
* Add docs for onCaughtError and onUncaughtError (#6742)
* Add docs for onCaughtError and onUncaughtError
* Updates from feedback
* Add canary info, simplify a bit
---------
Co-authored-by: Ricky <rickhanlonii@fb.com>
* Update useDeferredValue.md
change text from "re-render in background" to "re-render in the background"
* Update useDeferredValue.md
Change instances of "in background" to "in the background".